Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 将完整记录集插入其他数据库MS Access中的另一个表_Database_Vba_Ms Access_Recordset - Fatal编程技术网

Database 将完整记录集插入其他数据库MS Access中的另一个表

Database 将完整记录集插入其他数据库MS Access中的另一个表,database,vba,ms-access,recordset,Database,Vba,Ms Access,Recordset,我有两张桌子,两个不同的文件中有相同的列。一个文件Base PT.accdb,我想在其中插入另一个文件Sanchez_Mar.mdb中的所有记录集。两个表都有7个同名列 我在使用System.Data.OleDb.OleDbConnection时遇到很多问题,所以我决定使用记录集。 目前,我正在使用循环来插入所有数据,但由于数据太多,所以需要花费相当长的时间。 是否可以将所有记录集插入另一个数据库 这是我需要帮助的代码部分: Sub Copiar_BasePT2(RutaPT As String

我有两张桌子,两个不同的文件中有相同的列。一个文件Base PT.accdb,我想在其中插入另一个文件Sanchez_Mar.mdb中的所有记录集。两个表都有7个同名列

我在使用System.Data.OleDb.OleDbConnection时遇到很多问题,所以我决定使用记录集。 目前,我正在使用循环来插入所有数据,但由于数据太多,所以需要花费相当长的时间。 是否可以将所有记录集插入另一个数据库

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

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?

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

1创建与目标表的链接表

在“外部数据”选项卡上的“导入”组中,单击“访问”。 选择链接而不是导入 浏览到目标数据库并选择该文件 从列表中选择目标表 2创建一个追加查询,从源表中选择并追加到链接表

通过独立选择每个字段来创建选择查询 通过单击“设计”选项卡中的“附加”,将查询更改为附加查询 选择链接的目标表 3运行它


如果您已经有了目标表,这可能是最快的速度。如果您不介意从头开始,可以删除目标表,然后从目标数据库执行导入操作。

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

1创建与目标表的链接表

在“外部数据”选项卡上的“导入”组中,单击“访问”。 选择链接而不是导入 浏览到目标数据库并选择该文件 从列表中选择目标表 2创建一个追加查询,从源表中选择并追加到链接表

通过独立选择每个字段来创建选择查询 通过单击“设计”选项卡中的“附加”,将查询更改为附加查询 选择链接的目标表 3运行它


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

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

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

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

"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您将看到,与您创建的循环相比,这里的语句将运行得非常快。哇,谢谢!成功了:!!!我从[MS Access;DATABASE=&path&]中使用了dbBase\u PT.Execute INSERT到Tab\u PT&\u SELECT*&\u。FINAL\u Alarma\u SYM,它成功了!是的,这就是解决办法。向上投票@ToatzinPadilla您将看到,与您创建的循环相比,这里的语句将运行得非常快。哇,谢谢!成功了:!!!我从[MS Access;DATABASE=&path&]中使用了dbBase\u PT.Execute INSERT到Tab\u PT&\u SELECT*&\u。FINAL\u Alarma\u SYM,它成功了!谢谢Don Jewett,但我需要在许多不同的文件中执行此过程,插入查询用户Zaider给了我工作D我使用dbBase\u PT.Execute INSERT-INTO-Tab\u PT&\uu SELECT*&\uu从[MS Access;DATABASE=&path&]开始。FINAL\u Alarma\u SYM成功了!伟大的这是一个优雅的解决方案。谢谢Don Jewett,但我需要在许多不同的文件中执行此过程,插入查询用户Zaider给了我工作!:D我使用dbBase\u PT.Execute INSERT-INTO-Tab\u PT&\uu SELECT*&\uu从[MS Access;DATABASE=&path&]开始。FINAL\u Alarma\u SYM成功了!伟大的这是一个优雅的解决方案。