2012-07-01 26 views
1

我有一個Access 2007數據庫,當我打開它時,我可以在Access應用程序中複製並粘貼一個表。我可以選擇只複製結構或結構和數據。就我而言,我只需要這個結構。該副本保留了原始的索引和鍵。我需要用VB.NET來做到這一點。到目前爲止,我已經看了許多文章和我能夠通過發出SQL的表結構複製statment複製具有索引和鍵的訪問表

Dim dbCmdInsert As New OleDbCommand 
With dbCmdInsert 
    .CommandText = "SELECT * INTO tmpTable FROM Trips WHERE 0=1;" 
    .CommandType = CommandType.Text 
    .Connection = connNavDb 
    Dim n As Integer = .ExecuteNonQuery 
End With 

這種複製的結構沒有記錄這是我想要什麼,但索引和鑰匙丟失。我似乎無法找到很好的指導來完成這一點。

回答

1

大致來說確實是:

Dim oAccess As New Access.Application 

    ''Open a database 
    oAccess.OpenCurrentDatabase("z:\docs\test.accdb") 
    ''"Import" table 
    oAccess.DoCmd.TransferDatabase(
     Access.AcDataTransferType.acExport, "Microsoft Access", "z:\docs\test.accdb", _ 
     Access.AcObjectType.acTable, "table1", "newtable1", True, False) 

參見C#:Copy Access table structure and constraints using C# or SQL

+0

我都沒有想到這種方式。但是它需要安裝Access還是隻需要PIA程序集? – Steve

+0

我不確定,但PIA似乎包含訪問對象庫(http://msdn.microsoft.com/zh-cn/library/15s06t57(v=vs.80).aspx),它是唯一的庫我需要進行測試。 – Fionnuala

+0

我的希望已經降到零。看這裏http://stackoverflow.com/questions/370407/is-office-2007-pia-deployment-possible-without-office-2007 – Steve

0

在Access VBA中,您可以使用DoCmd.TransferDatabase acExport,使用源數據庫作爲目標,提供(當然)不同的目標表名稱。
我不知道是否存在與vb.net中的DoCmd等效,但這可能是最簡單的方法。

0
DoCmd.TransferDatabase acExport, "Microsoft Access", CurrentDb().Name, acTable, "Table1", "TableToCreate", True 
+2

歡迎來到堆棧溢出 - 很高興有你。請閱讀[如何回答](https://stackoverflow.com/help/how-to-answer)。 – Axel