空の.mdbファイルを作成して、そのファイルでADOコマンドを実行できるようにする必要があります(ADO.NETではありません)。ADOを使用して空のmdbを作成する方法はありますか?
Smashery
質問する
3151 次
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 に答える