|
▼mon さん:
>>
>>>------------------------------------------------------------------
>>>
>>>'SQLServerとの接続は既に確立された状態
>>>con.BeginTrans
>>>
>>>Dim strDataFile as string
>>>strDataFile = "D:\LOG.txt"
>>>Dim pFileNo As Integer
>>>pFileNo = FreeFile
>>>'ファイルのオープン
>>>Open strDataFile For Random As #pFileNo Len = 40
>>'何故、テキストファイル(テキストファイルですよね?)を
>>'ランダムモードでオープンしているのですか?
>>'通常、テキストファイルには Cr+lfと言うコードが一行の最後に
>>'入っています。これをも読み込むという計算の上でのことですか?
>>'あるいは、Cr+lfが元々入っていないファイルなのですか?
>CrLfは入っています。
>読み込むテキストファイルは固定長で、一行が2000字以上になることもあります。
>何故ランダムモードにしたのかはちょっと・・ 忘れました。(--;;)
>(テキストファイルは読み込みだけで、書き込み処理はありません。)
>
>
>>>Do While Not EOF(pFileNo)
>>>
>>> Get #pFileNo, , mKuni_kani
>>' ↑この変数と
>>'下のSQL文字列の相関はどうなっていますか?
>
>ちょっと 省略してしまったのですが、読み込むテキストファイルが固定長なので
>ユーザ定義関数を定義しました。
>定義の中を表示させてみて、各値は正確にテキストファイルから読み込むことが出来ています。
>ユーザ定義関数を使って読み込むデータを定義しています。
>
>
>>> 'SQL文生成
>>> Dim sql as string
>>> sql = "INSERT INTO (テーブル名) VALUES ((テキストファイルからとったデータ),(テキストファイルからとったデータ),(テキストファイルからとったデータ))"
>>実際のSQLは↑ではないですよね?
>>これで40行目までは正しくデータが入っているのですか?
>入れることができます。
>トランザクションを一件づづコミットさせると、40件のデータが正しく、テーブルに格納されます。
'となると、41行目のデータが本当に正しくユーザー定義型に
'取り込まれているかというこですが・・・。
'特にCrlfは、見えませんから・・・
'ここを再度確認してみて下さい。
'環境がないのでこちらでは確認ができません
'気になったのはそんなところですが・・・。
>
>
>>> On Error Resume Next
>>> con.Execute sql
>>> If (Err) Then
>>> con.RollbackTrans
>>>
>>> MsgBox Err.Description & vbCrLf & sql
>>> Err.Clear
>>> Exit Do
>>> End If
>>>
>>>Loop
>>>Close #pFileNo
>>>
>>>If (Err.Number = 0) then
>>> con.CommitTrans
>>>End If
>>>On Error GoTo 0
>
|
|