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
できません。Text I-ISAMドライバの仕様です。
書いている途中で送信してしまいました…。前言は忘れてください。(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 が正しく認識されていない可能性があります。
魔界の仮面弁士 さん返信有難う御座います。
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が正しく認識されているということでしょうか?
> schema.iniが正しく認識されているということでしょうか?
認識されていると思います。
なお LongChar 列は、一度値を読み取ってしまうと、以降の読み取りが
Null 値になってしまうようなので、その点には注意してください。
また、LongChar 列の読み取りには、Value プロパティではなく
GetChunk メソッドでの読み取りが推奨されています。
魔界の仮面弁士さん返信有難う御座います。
>なお LongChar 列は、一度値を読み取ってしまうと、以降の読み取りが
>Null 値になってしまうようなので、その点には注意してください。
なるほど。作業する際は、変数にいれて行いたいと思います。
有難う御座いました。
ツイート | ![]() |