よろずやネット

最近はLibreofficeにハマっています。

空の新規mdbファイル作成に苦労

*** 着地点: OLEDB+mdbのデータソースを元にVB.NETからfyiReporting RDLレポートを印刷する ***

のっけから、つまずいた。
空のmdbファイルをつくろうと考えて、.NET Frameworkのドキュメントを必死に小一時間も検索したが、
探し方が悪いのか全く見つからない。
空のmdbファイルを作るのはあきらめようかと挫折しそうになった。

タバコを吸いながら(私は喫煙家なのだ)、
一昔前(20世紀の頃)にエクセルのVBAでDAOを使ってmdbのデータを拾っていたな~、
ということを思い出し、.NETオンリーじゃないけど、DAO参照でやってみようかと考えが浮かんだ。

早速、やってみる。
SharpDevelopのReference(参照)で、COMの中を検索すると… あった、あった。
Microsoft DAO 3.6 Object Library

以下はコード例。
Imports System
Imports System.IO
Imports DAO


Dim MyMdb as String = "C:\My.mdb"
Dim CheckMdbFile As String=Microsoft.VisualBasic.Dir(MyMdb)

If CheckMdbFile="" Then
 Try
  Dim db As New DAO.DBEngine
  db.CreateDatabase(MyMdb, DAO.LanguageConstants.dbLangGeneral)
  db = Nothing
  Microsoft.VisualBasic.MsgBox(MyMdb.ToString & " is created." )
 Catch ex As System.Exception
  Microsoft.VisualBasic.MsgBox(ex.Message)
 End Try
End If


でも、これだけだと、新規mdbファイルが開放されていないようなので、
改良してみた。


  Dim db As New DAO.DBEngine
  db.CreateDatabase(MyMdb, DAO.LanguageConstants.dbLangGeneral)
  db = Nothing

  ' ガベージコレクターを使って開放
  System.GC.Collect()
  System.GC.WaitForPendingFinalizers()

これだとちゃんと開放されるみたいだ。

要確認:
Microsoft DAO 3.6 Object Libraryを使って作ったプログラムは配布可能なのだろうか?
(Interop.DAO.dll)

ちなみに、dao360.dllは、以下のページでダウンロード可能だ。
http://jp.dll-download-system.com/dlls/dao360.dll.html



次回に続く…