*** 着地点: OLEDB+mdbのデータソースを元にVB.NETからfyiReporting RDLレポートを印刷する ***
のっけから、つまずいた。
空のmdbファイルをつくろうと考えて、.NET Frameworkのドキュメントを必死に小一時間も検索したが、
探し方が悪いのか全く見つからない。
空のmdbファイルを作るのはあきらめようかと挫折しそうになった。
空のmdbファイルをつくろうと考えて、.NET Frameworkのドキュメントを必死に小一時間も検索したが、
探し方が悪いのか全く見つからない。
空のmdbファイルを作るのはあきらめようかと挫折しそうになった。
タバコを吸いながら(私は喫煙家なのだ)、
一昔前(20世紀の頃)にエクセルのVBAでDAOを使ってmdbのデータを拾っていたな~、
ということを思い出し、.NETオンリーじゃないけど、DAO参照でやってみようかと考えが浮かんだ。
一昔前(20世紀の頃)にエクセルのVBAでDAOを使ってmdbのデータを拾っていたな~、
ということを思い出し、.NETオンリーじゃないけど、DAO参照でやってみようかと考えが浮かんだ。
早速、やってみる。
SharpDevelopのReference(参照)で、COMの中を検索すると… あった、あった。
Microsoft DAO 3.6 Object Library
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)
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
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
db.CreateDatabase(MyMdb, DAO.LanguageConstants.dbLangGeneral)
db = Nothing
' ガベージコレクターを使って開放
System.GC.Collect()
System.GC.WaitForPendingFinalizers()
System.GC.Collect()
System.GC.WaitForPendingFinalizers()
これだとちゃんと開放されるみたいだ。
要確認:
Microsoft DAO 3.6 Object Libraryを使って作ったプログラムは配布可能なのだろうか?
(Interop.DAO.dll)
Microsoft DAO 3.6 Object Libraryを使って作ったプログラムは配布可能なのだろうか?
(Interop.DAO.dll)
次回に続く…