将Complete RecordSet插入其他数据库MS Access中的另一个表

时间:2015-07-06 15:00:41

标签: database vba ms-access recordset

我在两个不同的文件中有两个具有相同列的表。一个文件" Base PT.accdb"我想在其他文件中插入所有Recordset" 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" to" Base PT.accdb"快?

2 个答案:

答案 0 :(得分:2)

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

"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"

答案 1 :(得分:1)

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

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

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

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

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

3)运行它

如果您已经拥有目标表,这可能会快得多。如果您不介意重新开始,可以删除目标表,只需从目标数据库进行导入。