VB6.0用掲示板の過去のログ(No.2)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [管理用]

投稿日: 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


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- VBレスキュー(花ちゃん) - - Web Forum -