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`
我有一个 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`