我有一个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万条记录。
有什么方法可以降低这个时间吗?
答案 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`