【问题标题】:Copy an Access Table with Indexes and Keys复制带有索引和键的访问表
【发布时间】:2012-07-01 06:02:34
【问题描述】:

我有一个 Access 2007 数据库,当我打开它时,我可以在 Access 应用程序中复制和粘贴一个表。我可以选择仅复制结构或结构和数据。就我而言,我只需要结构。副本保留原件的索引和键。我需要用 VB.NET 来做这件事。到目前为止,我已经看过很多文章,并且能够通过发出 SQL 语句来复制表结构

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

这复制了没有记录的结构,这是我想要的,但索引和键丢失了。我似乎无法找到完成此任务的良好指导。

【问题讨论】:

    标签: vb.net ms-access indexing copy


    【解决方案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

    【讨论】:

    • 我没有想到这种方式。但它需要安装 Access 还是只需要 PIA 程序集?
    • 我不确定,但 PIA 似乎包含访问对象库 (msdn.microsoft.com/en-us/library/15s06t57(v=vs.80).aspx),这是我测试所需的唯一库。
    • 我的希望已经降为零。看这里stackoverflow.com/questions/370407/…
    • 使用模式从连接对象中获取有关 Access 表的信息并不难。您只需复制即可轻松创建表,那么您只需要索引,是吗? c# 中的注释对你有用吗?
    • 是的,谢谢@Remou,我知道如何处理模式,我喜欢你的想法,因为与模式处理相比,这需要很少的代码。再次感谢
    【解决方案2】:

    在 Access VBA 中,您可以使用 DoCmd.TransferDatabase acExport 执行此操作,使用源数据库作为目标,提供(当然)不同的目标表名称。
    我不知道是否有与来自 vb.net 的 DoCmd 等效的方法,但这可能是最简单的路径。

    【讨论】:

      【解决方案3】:
      DoCmd.TransferDatabase acExport, "Microsoft Access", CurrentDb().Name, acTable, "Table1", "TableToCreate", True
      

      【讨论】:

      • 欢迎来到 Stack Overflow - 很高兴有你。请阅读How to answer
      猜你喜欢
      • 2020-02-09
      • 2011-01-11
      • 2017-09-04
      • 2010-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-25
      • 1970-01-01
      相关资源
      最近更新 更多