VBA:OpenRecordset .AddNew方法运行缓慢

时间:2015-02-19 12:53:14

标签: vba ms-access

我有一个Access应用程序,其中有一个表(AuditTrail)链接到SQL Server 2008.我正在尝试以编程方式将记录添加到审计跟踪表中。

我有以下代码:

    Dim db As DAO.Database
    Dim rs As DAO.Recordset

    Set db = CurrentDb
    Set rs = db.OpenRecordset("AuditTrail", dbOpenDynaset, dbSeeChanges)

    With rs
        .AddNew
        rs("dtDateTime") = Now()
        rs("txtComment") = Nz(Mycomment, "")
        .Update
        .Close
    End With

Set db = Nothing
Set rs = Nothing

我最近注意到的问题是运行.AddNew语句需要几秒钟(最多13秒)。

该表目前有大约50万条记录。

有什么方法可以降低这个时间吗?

1 个答案:

答案 0 :(得分:3)

使用您当前的代码,您无缘无故地打开整个表格。 有几种选择。
一种是添加一个不返回记录的where子句。像什么一样的东西 Select dtDateTime, txtComment FROM AuditTrail WHERE <yourIdField> = -1

第二个(我的偏好)是根本不使用记录集。使用insert语句。

Dim strSql as String strSql = "INSERT INTO AuditTrail (dtDateTime, txtComment) Values(#" & Noe() & "#,'" & nz(MyComment,'') & "')" 
Db.Execute strSql, dbFailOnerror + DbSeeChanges`