投稿時間:2007/01/10(Wed) 11:08 投稿者名:てるてれ
Eメール:
URL :
タイトル:"" (空の文字列)を NULL ではなく空の文字列として扱う方法
まず、サンプルを・・・
『MDBとテーブルを作成し、テーブルにデータを入れ、 そのデータをCSVファイルに吐き出し、 吐き出したデータを再度MDBに入れる』というものです。
' DAOのみ参照設定。 Sub Main() Dim de As DAO.DBEngine Dim ws As DAO.Workspace Dim db As DAO.Database Dim mdbpath As String Dim csvdir As String Dim csvname As String mdbpath = App.Path & "\data.mdb" csvdir = App.Path csvname = "TABLE1.csv" ' MDBファイルを新規に作成し、そのMDBに接続 Set de = New DAO.DBEngine Set ws = de.CreateWorkspace("", "Admin", "") Set db = ws.CreateDatabase(mdbpath, dbLangJapanese) ' FIELD1 (値要求・空文字列許可の文字列型)というフィールドを持つ ' TABLE1 というテーブルを作成 Call db.Execute("create table TABLE1 ( FIELD1 text(10) not null)") db.TableDefs.Refresh db.TableDefs("TABLE1").Fields("FIELD1").AllowZeroLength = True ' データを挿入 Call db.Execute("insert into TABLE1 values ('a')") Call db.Execute("insert into TABLE1 values ('b')") Call db.Execute("insert into TABLE1 values ('')") ' <-----------------※ ' CSVファイルへエクスポート( TABLE1.csv と同時に schema.ini も作成される) Call db.Execute("select * into [Text;database=" & csvdir & "].[" & csvname & "] from [TABLE1]", dbFailOnError + dbConsistent) ' MDB内のデータを削除 Call db.Execute("delete from [TABLE1]", dbFailOnError + dbConsistent) ' CSVファイルからインポート Call db.Execute("insert into [TABLE1] select * from [Text;database=" & csvdir & "].[" & csvname & "]", dbFailOnError + dbConsistent) ' オブジェクト解放 db.Close: Set db = Nothing ws.Close: Set ws = Nothing Set de = Nothing Stop ' 一時的に使用したファイルを削除 If Dir(mdbpath) <> "" Then Kill mdbpath If Dir(csvdir & "\" & csvname) <> "" Then Kill csvdir & "\" & csvname If Dir(csvdir & "\schema.ini") <> "" Then Kill csvdir & "\schema.ini" End Sub
これを実行するとインポートする際、Null不可のフィールドに Nullを入れようとしてエラーが発生します。 本当は Nullじゃなくて空の文字列のハズなのですが・・・
ちなみに※の一行がなければ、正常に処理が行われます。
CSVの "" を空の文字列として扱う方法はありますでしょうか?
よろしくお願いいたします。
環境: Windows 2000 + Visual Basic 6.0 + DAO 3.6
|