|
▼小僧様 皆様
すいません。
小僧様より戴いたサンプルを実行しました。
Sub test2()
Const strFilePath = "C:\Documents and Settings\UserName\デスクトップ\EventLogAccess\eventlog\20091208.csv"
Dim FNo As Long
Dim txtData As String
Dim arrData As Variant
Dim i As Long
FNo = FreeFile
Open strFilePath For Input As #FNo
Line Input #FNo, txtData
i = 2
Do While Not EOF(FNo)
Line Input #FNo, txtData
arrData = Split(txtData, ",")
If InStr(1, arrData(7), " ") = 0 Then
MsgBox i & "行目にスペース4つがありません" _
& vbCrLf & vbCrLf & "DATA:" & arrData(7)
GoTo ExitEXE
End If
i = i + 1
Loop
ExitEXE:
Close #FNo
End Sub
上記プログラムを実行した結果、271行目(最終行)が半角4つ分の空白ではない行ですというエラーになりました。
>それとも271行目でデータは終わっているのに
>Loop を抜けないでエラーが出てしまうのでしょうか。
↑これです。270行目までしかデータはないのです。
が、271行目もみにいってしまっています。
※ちなみに、271行目を削除して実行してみるとエラーはおきませんでした。
>現在どの様なコードで実験を行っているのかが解りませんが、
>少なくともご提示されたコードの中では
>エラールーチンで Rollback している訳ですから
>データが入る事はありえないですよね。
Sub Test()
Dim txtData As String, FNo As Long, arrData, i As Integer
Dim Con As New ADODB.Connection, Rec As New ADODB.Recordset
Set Con = CurrentProject.Connection
Rec.Open "INPUTDATA", Con, adOpenDynamic, adLockOptimistic
FNo = FreeFile
Open "C:\Documents and Settings\UserName\デスクトップ\EventLogAccess\eventlog\20091208.csv" For Input As #FNo
'ファイルの1行目の項目名部分を読み込む(何も処理しない)
Line Input #FNo, txtData
'実際のデータ部分(2行目)からの処理
Do While Not EOF(FNo)
Line Input #FNo, txtData
arrData = Split(txtData, ",")
Rec.AddNew
'引用符を削除してからフィールドに値を代入する
Rec("Date") = Split(arrData(2), " ")(0)
Rec("Time") = Split(arrData(2), " ")(1)
Rec("ComputerName") = arrData(4)
Rec("Description1") = Split(arrData(7), " ")(0)
Rec("Description2") = Split(arrData(7), " ")(1)
Rec.Update
Loop
Close #FNo
End Sub
上記プログラムで実験しておりました。
なので、ロールバックはせず、エラー以外のデータが入るようになっておりました。すいません。
【質問内容1.】に関しては解決したのでしょうか?
まだ解決しておりません。質問内容2がきになり、手がつけれていない状態です。
|
|