|
▼小僧様
Option Compare Database
Option Explicit
Sub Test()
Dim txtData As String, FNo As Long, arrData, i As Integer
Dim Con As New ADODB.Connection, Rec As New ADODB.Recordset
Dim strFilePath As String, returnValue
Call EventQuery
'[ファイルを開く]ダイアログボックスを表示
WizHook.Key = 51488399
returnValue = WizHook.GetFileName( _
0, "", "", "", strFilePath, "", _
"CSVファイル (*.csv)|*.csv", _
0, 0, 0, True _
)
WizHook.Key = 0
'[キャンセル]がクリックされた場合は即終了
If returnValue <> 0 Then
Exit Sub
End If
Set Con = CurrentProject.Connection
Rec.Open "INPUTDATA", Con, adOpenDynamic, adLockOptimistic
FNo = FreeFile
Open strFilePath For Input As #FNo
'ファイルの1行目の項目名部分を読み込む(何も処理しない)
Line Input #FNo, txtData
On Error GoTo ErrHndl
'エラーが発生した場合にデータのインポートをなかったこと(ロールバック)
'にするためにトランザクション処理として実行
Con.BeginTrans
'実際のデータ部分(2行目)からの処理
Do While Not EOF(FNo)
Line Input #FNo, txtData
arrData = Split(txtData, ",")
Rec.AddNew
'引用符を削除してからフィールドに値を代入する
Rec("Date Time") = arrData(2)
Rec("ComputerName") = arrData(4)
Rec("Description") = arrData(7)
Rec.Update
Loop
Con.CommitTrans
Close #FNo
Exit Sub
ErrHndl:
Close #FNo
Con.RollbackTrans
MsgBox "以下のエラーが発生したためロールバックしました。" & vbCrLf & _
Err.Description, vbCritical
End Sub
Function EventQuery()
Dim objWSH As Object
Set objWSH = CreateObject("WScript.Shell")
objWSH.Run """C:\Documents and Settings\UserName\デスクトップ\EventLogAccess\eventlog\event.bat"""
Set objWSH = Nothing
End Function
上記プログラムで質問なのですが、
【質問内容1.】
EventQuery(バッチ処理)はアプリケーションログを取得し、csvファイル形式で保存する処理なのですが、ファイルが保存されるまでEventQuery以下のプログラムを待機させておくことはできないでしょうか?
EventQuery処理が終了すると、走るようにしたいのです。
【質問内容2.】
フィールド『Description』は説明を取得するフィールドなのですが、
内容が、0____userName(_は半角スペース)です。
これをテーブルにインポートする際に数字とuserNameを分けてインポートできないものでしょうか?
例:Description1 Description2
0 userName
宜しくお願い致します。
|
|