|
▼mon さん:
こんばんは。
>以下のようなプログラムをつくり、テキストファイルのデータを1行づつSQLServer上のテーブルにINSERTしようとしています。
>仮に、テキストファイルのデータが40行だとすると、40件のデータをINSERTした後 41件目に空データをINSERT使用としてエラーになります。
>エラーメッセージは
>「文字列''が終了していません。」
>となっています。
>エラーになった際に発行したSQL文をクエリアナライザで実行するとテーブルにINSERTすることができます。
>
>一体どこがエラーになっているのか自分では分からなくてて・・・
>
>
>ロジック等 どこがおかしいかお分かりでしたら教えてください。
>お願いします。m(_ . _)m
>
>
>------------------------------------------------------------------
>
>'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が元々入っていないファイルなのですか?
>
>Do While Not EOF(pFileNo)
>
> Get #pFileNo, , mKuni_kani
' ↑この変数と
'下のSQL文字列の相関はどうなっていますか?
>
> 'SQL文生成
> Dim sql as string
> sql = "INSERT INTO (テーブル名) VALUES ((テキストファイルからとったデータ),(テキストファイルからとったデータ),(テキストファイルからとったデータ))"
実際のSQLは↑ではないですよね?
これで40行目までは正しくデータが入っているのですか?
>
> 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
|
|