プロが教えるわが家の防犯対策術!

ACCESS97で、文字列を文字数ではなくバイト数で扱うことは可能でしょうか。

1レコードが20,000ByteあるテキストファイルをACCESS97のテーブルに
インポートしようとしています。

インポート先のテーブルのフィールドをすべて「メモ型」にしたのですが、
インポート定義を利用してインポートを行おうとすると、
「レコードが大きすぎます。」というエラーが発生します。

そこで、プログラムでファイルを1レコードずつ読み込みながらテーブルに
インサートしていく方法を取ろうかと思います。

テキストファイルは半角と全角が混在しているのですが、困ったことに
全角のデータが入るべきところに半角が混ざっている可能性があります。
たとえば、全角10文字入るべき場所に半角の空白が20文字入っていると
いうような状態です。

この状態で StrConv関数でUnicodeに変換してからMidB$関数で文字を抜き
出すと、フィールドがずれてきます。
1文字目から10文字分、ではなく1Byte目から10Byte、などというように文
字列を扱うことができれば、全角と半角がどのような位置で混在していても
関係なくプログラム上で扱うことができると思うのですが,方法がわかりません。

また、これ以外で長いレコードのファイルをインポートできる方法があれば
教えていただきたいと思います。

長くなってしまいましたが、ご回答をいただけますようよろしくお願いいたします。

A 回答 (1件)

元々は固定長のレコードでしょうかね?


バイト数で抜き出すならStrConvでユニコードに変換するのではなく規定コードページに直してからMidBで取り出し、ユニコードに変換してやる必要があります。

StrConv(MidB$(StrConv(strDATA,vbFromUnicode)1,10),vbUnicode)
    • good
    • 0
この回答へのお礼

おっしゃるとおり、やり方を間違えていました。
ご回答ありがとうございました。

お礼日時:2002/06/18 14:46

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!