2

空の.mdbファイルを作成して、そのファイルでADOコマンドを実行できるようにする必要があります(ADO.NETではありません)。ADOを使用して空のmdbを作成する方法はありますか?

4

3 に答える 3

4

動作するコードスニペットは次のとおりです。

        string sADOProvider = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=";

        ADOX.CatalogClass cat = new ADOX.CatalogClass();

        string sCreate = MainForm.sADOProvider + sFullPath;

        cat.Create(sCreate);

        // The point of this code is to unlock the access file after we
        // create it.   You can tell it is unlocked if the .ldb file disappears.
        System.Runtime.InteropServices.Marshal.ReleaseComObject(cat);
        cat = null;
        GC.Collect();
于 2008-11-17T05:39:39.370 に答える
0

ADO 経由で直接作成するかどうかはわかりませんが、マシンに Access がインストールされている場合は、Access を使用して COM 経由でファイルを作成できます。

以下は、早期バインドと遅延バインドの例です。どちらの方法にも長所と短所があります。

Option Explicit

Sub CreateMDBEarlyBound()
  '' Remember to set your reference to "Microsoft Access XX.0 Object Library"
  Dim acApp As Access.Application

  Set acApp = New Access.Application
  acApp.NewCurrentDatabase ("c:\temp\MyDB-early.mdb")

  Set acApp = Nothing

End Sub


Sub CreateMDBLateBound()

  Dim acApp As Object

  On Error Resume Next
    Set acApp = GetObject(, "Access.Application")
  On Error GoTo 0 '' turn off the resume next

  If acApp Is Nothing Then
    Set acApp = CreateObject("Access.Application")
  End If

  acApp.NewCurrentDatabase "c:\temp\MyDB-late.mdb"
  Set acApp = Nothing


End Sub
于 2008-11-17T05:57:40.693 に答える
0

「ADO.NET ではない」が「.NET ではない」ことを意味する場合、VBA として書き直した Corey Trager のコードを次に示します。

  Const sADOProvider As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="

  Const sFullPath As String = "C:\DeleteMe.mdb"

  Dim cat As ADOX.Catalog
  Set cat = New ADOX.Catalog

  Dim sCreate As String
  sCreate = sADOProvider & sFullPath

  cat.Create sCreate

  ' The point of this code is to unlock the access file after we
  ' create it.   You can tell it is unlocked if the .ldb file disappears.
  Set cat.ActiveConnection = Nothing
于 2009-01-08T12:32:58.623 に答える