CSV → MDB時の現象について

解決


RA  2004-03-17 00:34:00  No: 112374

こんにちは。
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側のフィールドをダブルコーテーションで括ると
 とりあえずは上手くいきました。
 できれば、プログラム上でなんとかしたいのですが。

もし何か御存知の方がいらっしゃいましたら、よろしくお願いします。


nanashi  2004-03-17 00:55:22  No: 112375

SCHEMA.iniファイルを使用すれば出来るそうです。
こちらのスレが参考になると思います↓

http://www.bcap.co.jp/hanafusa/vbbbs/wforum.cgi?mode=allread&no=6997


RA  2004-03-17 01:31:00  No: 112376

nanashiさんありがとうございます。

schema.iniの方で上手くいきました!

ただ、ファイル名毎に形式を登録するということは、
ファイル名=決め打ち ないとダメなようで、
結局使うかどうかは、悩んでいます。
やるなら、プログラム上でその場限りの登録をする、
といったところでしょうか。

もし他にもありましたら、お願いします。


nanashi  2004-03-17 22:47:35  No: 112377

そういうことなら普通にOpenで開いて処理した方が良いのでは?


RA  2004-03-17 23:31:33  No: 112378

こんにちは。
nanashiさんありがとうございます。

>普通にOpenで開いて処理

確かにそうですね。
ロジックを作るのが楽になるのも含めてSQLを利用していたので、
最初の段階で候補から外して、そのまま忘れておりました。

CSVのフィールドの項目を項目番号で取得する関数が
昔作ったものであるので、それを利用して実現しようと思います。

ありがとうございました。


RA(追加参考)  2004-03-18 17:50:14  No: 112379

もう1つ方法を思いついたので、参考までに載せておきます。
VS-FlexGridなどのコントロールを使う方法です。
あまり良い方法ではないのかもしれませんが、
VS-FlexGridであれば、LoadGridメソッドでCSVをグリッドに読み込めるので、
読込み、グリッド値を使っていくという手もあるかな、と。

#ただし改行コードの具合によって空白の行ができたりするようですが。


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




  


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