【问题标题】:Copy from one Access database to another (VBA)从一个 Access 数据库复制到另一个 (VBA)
【发布时间】:2021-11-27 21:25:17
【问题描述】:

我需要帮助才能使用 VBA 将数据从一个 Access 数据库复制到另一个数据库。这些表具有相同的布局,并且都有一个自动编号的主键字段。

我尝试了以下方法:

strSQL = "INSERT INTO [tbl_items] SELECT * FROM  [tbl_items] IN 'C:\temp\itemsdb.mdb';"
CurrentDb.Execute (strSQL)

问题是,如果第一个数据库中的一个主键的值与第二个数据库中的一个相同,则不会复制该记录。 有什么想法吗?

【问题讨论】:

  • 你想让数据库做什么?更新记录?为主键分配新值?还有什么?显然,不可能有两条主键相同的记录,这正是主键的用途。
  • 我希望源数据库的主键值被忽略。由于目标中的 PK 是自动编号,因此应在此处(在目标中)设置键的值。因此,要回答您的问题,应为导入的记录分配一个新值。
  • 那么,干脆不导入主键。列出您要在查询中导入的所有列,而不是使用包含主键的SELECT *
  • 我想知道是否有更好的方法,而不是编写 60 个字段的选择来排除一个。

标签: vba ms-access-2010


【解决方案1】:

您甚至不需要 VBA。试试这个方法。

  1. 在“外部数据”选项卡的“导出”组中,单击“访问”。

    提示:您也可以通过右键单击导航窗格中的对象,然后单击导出 > 访问来启动导出过程。

  2. Access 打开“导出 - Access 数据库”对话框。

  3. 在“导出 - 访问数据库”对话框的“文件名”框中,指定目标数据库的名称,然后单击“确定”。

  4. 如果您不想覆盖目标数据库中同名的现有对象,请在“导出”对话框中更改新对象的名称。

  5. 如果所选对象是表格,请指定是要导出表格的定义和数据,还是只导出定义。

  6. 点击确定完成操作。

如果您确实需要 VBA 解决方案,请回帖,我会提供解决方案。在这种情况下,VBA 似乎有点过头了。

【讨论】:

    【解决方案2】:

    这是一个我想自动化的过程,因为它经常重复;所以我需要一个 VBA 解决方案。 我找到了我在下面分享的解决方案,以供将来参考。

     Public Sub AppendItems()
        Dim strSQL As String
        Dim fDialog As Object
        Dim pickedFile As Boolean
        
        Set fDialog = Application.FileDialog(3)
        
        With fDialog
         
            .AllowMultiSelect = False
            .Title = "Please select a file to import:"
            .Filters.Clear
            .Filters.Add "Access Databases", "*.MDB"
            
        End With
        
        pickedFile = fDialog.Show
        
        If pickedFile Then
            fPath = fDialog.SelectedItems.Item(1)
        End If
        
        strSQL = "INSERT INTO [tbl_DestinationTable] SELECT [field1], [field2], [etc] FROM [tbl_SourceTable] IN'" & fPath & "';"
        
        DoCmd.RunSQL (strSQL)
        
    End Sub
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-07
      • 2012-04-16
      相关资源
      最近更新 更多