大型记录集(VBA)的MS Access插入速度慢

calh27

我有一段代码创建一个新表,然后尝试将记录集值复制到表中。唯一的问题是它运行速度很慢,并且在执行下面的插入部分时访问会显示加载符号。当前,此问题正在插入500条记录,但是当我获得最终数据集时,我将需要插入大约10,000到20,000。

I = 1
DoCmd.SetWarnings False
RecordSet1.MoveFirst
Do While Not RecordSet1.EOF = True
    SQL = "INSERT INTO " & FullName & " ("
    For Each field In RecordSet1.fields()
        SQL = SQL & " " & Replace(field.Name, ".", "_") & ","
    Next field
    SQL = SQL & "ValidationCheck)"
    SQL = SQL & " VALUES("
    For Each field2 In RecordSet1.fields()
        SQL = SQL & "'" & field2.Value & "',"
    Next field2
    SQL = SQL & Matches(I) & ")"
    DoCmd.RunSQL (SQL)
    RecordSet1.MoveNext
    I = I + 1
Loop

我想知道的是,有什么办法可以加快速度吗?还是有更好的方法?(我想做的是在运行时从RecordSet中创建具有唯一字段集的表,并为每个Record添加一个具有布尔值的额外列,该布尔值存储在Match数组中)。创建工作正常,但是上面的插入代码非常慢。

古斯塔夫

是的,请使用DAO。这么快。此示例复制到同一张表,但是您可以轻松地对其进行修改,因此可以在两个表之间复制:

Public Sub CopyRecords()

  Dim rstSource   As DAO.Recordset
  Dim rstInsert   As DAO.Recordset
  Dim fld         As DAO.Field
  Dim strSQL      As String
  Dim lngLoop     As Long
  Dim lngCount    As Long

  strSQL = "SELECT * FROM tblStatus WHERE Location = '" & _
                "DEFx" & "' Order by Total"

  Set rstInsert = CurrentDb.OpenRecordset(strSQL)
  Set rstSource = rstInsert.Clone
  With rstSource
    lngCount = .RecordCount
    For lngLoop = 1 To lngCount
      With rstInsert
        .AddNew
          For Each fld In rstSource.Fields
            With fld
              If .Attributes And dbAutoIncrField Then
                ' Skip Autonumber or GUID field.
              ElseIf .Name = "Total" Then
                ' Insert default value.
                rstInsert.Fields(.Name).Value = 0
              ElseIf .Name = "PROCESSED_IND" Then
                rstInsert.Fields(.Name).Value = vbNullString
              Else
                ' Copy field content.
                rstInsert.Fields(.Name).Value = .Value
              End If
            End With
          Next
        .Update
      End With
      .MoveNext
    Next
    rstInsert.Close
    .Close
  End With

  Set rstInsert = Nothing
  Set rstSource = Nothing

End Sub

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

MS Access 使用 vba 复制记录集

来自分类Dev

MS-Access:对链接的CSV文件的查询速度慢

来自分类Dev

MS-Access:对链接的CSV文件的查询速度慢

来自分类Dev

MS ACCESS VBA记录集搜索条件类型不匹配

来自分类Dev

Access 2013-VBA-记录集插入获取ID

来自分类Dev

到MS Access数据库的初始连接速度慢

来自分类Dev

修改查询记录集以完成信息(MS Access)

来自分类Dev

MS Access Visual Basic组记录集并修改值

来自分类Dev

Ms Access、ADODB、记录集、设置主键

来自分类Dev

在大型文件流上处理速度慢吗?

来自分类Dev

整理大型空内容文件时,处理速度慢

来自分类Dev

Chrome在大型选择上加载速度慢

来自分类Dev

从VBA,DoEvents中的Access处理“大”记录集

来自分类Dev

ExtJS Grid速度慢,记录超过3000条

来自分类Dev

根据另一个记录集中的记录过滤 MS-Access 记录集

来自分类Dev

结果集向Java模型的转换速度慢,一百万条记录

来自分类Dev

为什么ServiceStack返回POCO对象的速度比.NET Remoting返回数据集的速度慢?

来自分类Dev

SELECT查询中的MS Access“此记录集不可更新”

来自分类Dev

使用类模块将可编辑的ADO记录集返回到MS Access Form

来自分类Dev

如何通过MS Access前端从MATLAB中的SQL Server打开记录集

来自分类Dev

带有 ADODB 记录集的 MS Access ListBox 列属性创建错误 424 Object Required

来自分类Dev

无法检索从 MS Access ADO 中的存储过程返回的记录集

来自分类Dev

加快对大型阵列和数据集的操作(熊猫速度慢,Numpy更好,进一步改进吗?)

来自分类Dev

将 Access VBA 记录集导出到 Excel 中的单行

来自分类Dev

网络速度慢

来自分类Dev

Firefox速度慢

来自分类Dev

使用MS Access中的VBA将附件从一个记录集中的记录复制到另一个记录中的记录

来自分类Dev

为什么和何时在Access VBA中声明新记录集时使用New关键字?

来自分类Dev

尝试读取记录集字段时,为什么未定义Access VBA抛出子或函数?

Related 相关文章

  1. 1

    MS Access 使用 vba 复制记录集

  2. 2

    MS-Access:对链接的CSV文件的查询速度慢

  3. 3

    MS-Access:对链接的CSV文件的查询速度慢

  4. 4

    MS ACCESS VBA记录集搜索条件类型不匹配

  5. 5

    Access 2013-VBA-记录集插入获取ID

  6. 6

    到MS Access数据库的初始连接速度慢

  7. 7

    修改查询记录集以完成信息(MS Access)

  8. 8

    MS Access Visual Basic组记录集并修改值

  9. 9

    Ms Access、ADODB、记录集、设置主键

  10. 10

    在大型文件流上处理速度慢吗?

  11. 11

    整理大型空内容文件时,处理速度慢

  12. 12

    Chrome在大型选择上加载速度慢

  13. 13

    从VBA,DoEvents中的Access处理“大”记录集

  14. 14

    ExtJS Grid速度慢,记录超过3000条

  15. 15

    根据另一个记录集中的记录过滤 MS-Access 记录集

  16. 16

    结果集向Java模型的转换速度慢,一百万条记录

  17. 17

    为什么ServiceStack返回POCO对象的速度比.NET Remoting返回数据集的速度慢?

  18. 18

    SELECT查询中的MS Access“此记录集不可更新”

  19. 19

    使用类模块将可编辑的ADO记录集返回到MS Access Form

  20. 20

    如何通过MS Access前端从MATLAB中的SQL Server打开记录集

  21. 21

    带有 ADODB 记录集的 MS Access ListBox 列属性创建错误 424 Object Required

  22. 22

    无法检索从 MS Access ADO 中的存储过程返回的记录集

  23. 23

    加快对大型阵列和数据集的操作(熊猫速度慢,Numpy更好,进一步改进吗?)

  24. 24

    将 Access VBA 记录集导出到 Excel 中的单行

  25. 25

    网络速度慢

  26. 26

    Firefox速度慢

  27. 27

    使用MS Access中的VBA将附件从一个记录集中的记录复制到另一个记录中的记录

  28. 28

    为什么和何时在Access VBA中声明新记录集时使用New关键字?

  29. 29

    尝试读取记录集字段时,为什么未定义Access VBA抛出子或函数?

热门标签

归档