|
▼ichinose さん:
曖昧な箇所も多いのに 質問に答えてくださってありがとうございます。
>▼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は、見えませんから・・・
>'ここを再度確認してみて下さい。
>'環境がないのでこちらでは確認ができません
>'気になったのはそんなところですが・・・。
データが40件しか入れていないのに41件目のデータを読もうとしているので、
ユーザ定義型の中は 空文字ばかりになっています。
SQL文はこんな感じ
↓
INSERT INTO (テーブル名) VALUES ('','','')
テーブルそのものがNULL可になっているので クエリアナライザを使用するとこの空ばかりのINSERT文でもINSERTできます。
クエリアナライザだとINSERT出来るのに何故落ちてしまうのか、何故41行目のデータを読んでいるのかが(実際には空ですが) 不思議です。
|
|