こんにちは。
VB6(SP5)でプログラミングしています。
OSはWin2000です。
CSVファイルからMDBへデータをインポートしているのですが、
どうしても上手くいきません。
具体的には、
A,0445,あいうえお
B,5555,かきくけこ
といったCSVに対し、ADO(Microsoft Text Driver)にてデータをSELECTし、
MDBへINSERT文を発行するというものです。
(SELECT一回とデータ行分のINSERT文を発行)
この作業を行う時、上記のCSVの真ん中のフィールドを取込む際の
SELECTした結果が、「445」のように前のゼロが消えてしまいます。
これを「0445」として取得することはできませんでしょうか。
また、フィールドは 0〜4桁の文字列(数字orSPACEのみ)が入ります。
MDB側の項目はテキスト型になっております。
#CSV側のフィールドをダブルコーテーションで括ると
とりあえずは上手くいきました。
できれば、プログラム上でなんとかしたいのですが。
もし何か御存知の方がいらっしゃいましたら、よろしくお願いします。
SCHEMA.iniファイルを使用すれば出来るそうです。
こちらのスレが参考になると思います↓
http://www.bcap.co.jp/hanafusa/vbbbs/wforum.cgi?mode=allread&no=6997
nanashiさんありがとうございます。
schema.iniの方で上手くいきました!
ただ、ファイル名毎に形式を登録するということは、
ファイル名=決め打ち ないとダメなようで、
結局使うかどうかは、悩んでいます。
やるなら、プログラム上でその場限りの登録をする、
といったところでしょうか。
もし他にもありましたら、お願いします。
そういうことなら普通にOpenで開いて処理した方が良いのでは?
編集 削除こんにちは。
nanashiさんありがとうございます。
>普通にOpenで開いて処理
確かにそうですね。
ロジックを作るのが楽になるのも含めてSQLを利用していたので、
最初の段階で候補から外して、そのまま忘れておりました。
CSVのフィールドの項目を項目番号で取得する関数が
昔作ったものであるので、それを利用して実現しようと思います。
ありがとうございました。
もう1つ方法を思いついたので、参考までに載せておきます。
VS-FlexGridなどのコントロールを使う方法です。
あまり良い方法ではないのかもしれませんが、
VS-FlexGridであれば、LoadGridメソッドでCSVをグリッドに読み込めるので、
読込み、グリッド値を使っていくという手もあるかな、と。
#ただし改行コードの具合によって空白の行ができたりするようですが。