【问题标题】:Insert Complete RecordSet to another table in other database MS Access将 Complete RecordSet 插入到其他数据库 MS Access 中的另一个表中
【发布时间】:2015-07-06 15:00:41
【问题描述】:

我在两个不同的文件中有 2 个具有相同列的表。一个文件“Base PT.accdb”,我想从另一个文件“Sanchez_Mar.mdb”插入所有记录集。两个表都有 7 列同名。

我在使用“System.Data.OleDb.OleDbConnection”时遇到了很多问题,所以我决定使用 RecordSets。 目前我正在使用循环插入所有数据,但是数据很多,所以需要很长时间。 是否可以将所有记录集插入到另一个数据库中?

这是我需要帮助的代码部分:

Sub Copiar_BasePT2(RutaPT As String)
  Dim Cant as Long
  Dim db As Database
  Dim dbBase_PT As Database
  Set dbBase_PT = OpenDatabase(RutaPT & "\Base PT.accdb")
  Set db = CurrentDb
  Dim rsSYM As Recordset
  Set rsSYM = db.OpenRecordset("SELECT * from FINAL_Alarma_SYM")
  rsSYM.MoveLast
  Cant = rsSYM.RecordCount
  rsSYM.MoveFirst

  For i = 1 To Cant 
          dbBase_PT.Execute ("Insert into Tab_PT values('" & rsSYM.Fields(0) & "','" & rsSYM.Fields(1) & "','" & rsSYM.Fields(2) & "','" & rsSYM.Fields(3) & "','" & rsSYM.Fields(4) & "','" & rsSYM.Fields(5) & "','" & rsSYM.Fields(6) & "');")
          rsSYM.MoveNext

          DoEvents

  Next i
End Sub

是否可以插入所有记录集? 或者我怎样才能更快地将表格从“Sanchez_Mar.mdb”带到“Base PT.accdb”?

【问题讨论】:

    标签: database vba ms-access recordset


    【解决方案1】:

    您可以使用其他数据库作为数据源来运行插入查询。

    "INSERT INTO Tab_PT (Field1, Field2, Field3, Field4, Field5, Field6, Field7) " & _
    " SELECT Field1, Field2, Field3, Field4, Field5, Field6, Field7 " & _
    " FROM [MS Access;DATABASE=PathToSanchez_MarDB].FINAL_Alarma_SYM"
    

    【讨论】:

    • 是的,这就是解决方案。点赞。 @ToatzinPadilla 你会看到,与你创建的循环相比,这里的这个语句运行得非常快。
    • 哇,谢谢!有效 :)!!!我用了dbBase_PT.Execute ("INSERT INTO Tab_PT " & _ " SELECT * " & _ " FROM [MS Access;DATABASE=" & path & "].FINAL_Alarma_SYM"),它成功了!
    【解决方案2】:

    从源数据库执行以下操作:

    1) 创建到目标表的链接表。

    • 在“外部数据”选项卡的“导入”组中,单击“访问”。
    • 选择链接而不是导入
    • 浏览到目标数据库并选择文件
    • 从列表中选择目标表

    2) 创建一个追加查询,从源表中选择并追加到链接表。

    • 通过单独选择每个字段来创建选择查询
    • 通过单击“设计”选项卡中的“追加”将查询更改为追加查询
    • 选择(链接的)目标表

    3) 运行它

    如果您已经有了目标表,这可能是最快的。如果您不介意重新开始,您可以删除目标表并从目标数据库中导入。

    【讨论】:

    • 感谢 Don Jewett,但我需要在许多不同的文件中执行此过程,插入查询用户 Zaider 给我的工作! :D 我使用dbBase_PT.Execute ("INSERT INTO Tab_PT " & _ " SELECT * " & _ " FROM [MS Access;DATABASE=" & path & "].FINAL_Alarma_SYM") 它成功了!
    • 太棒了!这是一个优雅的解决方案。
    猜你喜欢
    • 2016-09-14
    • 2017-03-30
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 2013-07-20
    • 2021-01-02
    相关资源
    最近更新 更多