CSVファイルのコンバートについて

解決


リタ  2006-11-01 01:23:38  No: 133933

Cnn.Open "Driver={Microsoft Text Driver (*.txt; *.csv)};DBQ=" & AppPath & ";ReadOnly=1"
Set rs = Cnn.Execute("SELECT * FROM test#csv ")

上記の方法でCSVファイルをレコードセットで開いています。
test.csvファイルと同じ階層にschema.iniも置いています。
そこで質問ですが、どうしてもメモ欄の文字を全てレコードセットに
取得することが出来ません。
256文字までは取得できます。
どうすれば、全ての文字を取得することが出来るのでしょうか?
アドバイスお願い致します。

schema.iniファイル
[test.csv]
ColNameHeader=True
Format=CSVDelimited
Col1= code Char  
Col2= name Char  
Col3= memo LongChar


魔界の仮面弁士  2006-11-01 03:46:34  No: 133934

できません。Text I-ISAMドライバの仕様です。


魔界の仮面弁士  2006-11-01 04:01:14  No: 133935

書いている途中で送信してしまいました…。前言は忘れてください。(T-T)
------
LongChar が指定されているのだとしたら、256文字を超えたデータも
取り扱えるはずです。その場合、
  Debug.Print rs.Fields(2).Type   '… adVarChar を表す 201
  Debug.Print rs.Fields(2).DefinedSize   '… おそらく、64000
を返すかと思いますが、実際の値はどうですか?

もし、adVarChar(200) と 255 という形で返されるようであれば、
それは Text I-ISAM ドライバの文字列型の規定値なので、
schema.ini が正しく認識されていない可能性があります。


リタ  2006-11-01 04:17:42  No: 133936

魔界の仮面弁士 さん返信有難う御座います。

schema.iniファイル
[test.csv]
ColNameHeader=True
Format=CSVDelimited
Col1= code Char  
Col2= name Char  
Col3= memo LongChar

と書きましたが、
Col3はLongCharでは、rs.Fields(2).valueの値はnullでした。
申し訳ありません。
Col3がCharで256文字までした。

>Debug.Print rs.Fields(2).Type   '… adVarChar を表す 201
>Debug.Print rs.Fields(2).DefinedSize   '… おそらく、64000
>を返すかと思いますが、実際の値はどうですか?

rs.Fields(2).Typeは201、 
rs.Fields(2).DefinedSizeは64000が返ってきました。
 
と言うことは、
schema.iniが正しく認識されているということでしょうか?


魔界の仮面弁士  2006-11-01 07:08:49  No: 133937

> schema.iniが正しく認識されているということでしょうか?
認識されていると思います。

なお LongChar 列は、一度値を読み取ってしまうと、以降の読み取りが
Null 値になってしまうようなので、その点には注意してください。

また、LongChar 列の読み取りには、Value プロパティではなく
GetChunk メソッドでの読み取りが推奨されています。


リタ  2006-11-02 06:00:39  No: 133938

魔界の仮面弁士さん返信有難う御座います。

>なお LongChar 列は、一度値を読み取ってしまうと、以降の読み取りが
>Null 値になってしまうようなので、その点には注意してください。

なるほど。作業する際は、変数にいれて行いたいと思います。
有難う御座いました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加