VBA: OpenRecordset .AddNew 方法运行缓慢

VBA: OpenRecordset .AddNew method runs slow

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

我有以下代码:

    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 秒)。

table 目前大约有 50 万条记录。

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

使用您当前的代码,您将无缘无故地打开整个 table。 有几个选项。
一种是添加一个 where 子句,将 return 没有记录。像
Select dtDateTime, txtComment FROM AuditTrail WHERE <yourIdField> = -1

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

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