[英]Access - VBA/SQL Recordset loop through not updating
我有一个循环遍历记录集的代码,我正在尝试从一个变量 (JS) 更新开始日期,但它没有更新...显示一条错误消息,提示“没有 addNew 或编辑的更新或更新取消”
我在 ourRecordset![Start Date] = JS 之后放置了 a.edit,这是它失败的地方
Dim ourDatabase As Database
Dim ourRecordset As Recordset
Dim strSQL As String
Dim ActvJbNum As Long
Dim RecCnt As Long
Dim LpRecCnt As Long
Dim JS As Date
JS = Now()
ActvJbNum = Me.EntJobNum
strSQL = "SELECT tblRouting.[Job Number], tblRouting.[Start Date], tblRouting.OpDescription, tblRouting.[Op Seq], tblRouting.OpleadTm " & vbCrLf & _
"FROM tblRouting " & vbCrLf & _
"WHERE (tblRouting.[Job Number])= " & EntJobNum & vbCrLf & _
"ORDER BY tblRouting.[Op Seq] ASC;"
Set ourDatabase = CurrentDb
Set ourRecordset = ourDatabase.OpenRecordset(strSQL)
With ourRecordset
Do Until ourRecordset.EOF
RecCnt = ourRecordset.RecordCount
LpRecCnt = LpRecCnt + 1
ourRecordset![Start Date] = JS
ourRecordset.Edit
MsgBox ourRecordset![Start Date] & vbNewLine & ourRecordset![Op Seq] & vbNewLine & LpRecCnt
ourRecordset.MoveNext
Loop
End With
知道为什么它不更新开始日期吗?
在更改字段值之前调用Edit
。 之后,调用Update
以提交更改。
ourRecordset.Edit
ourRecordset![Start Date] = JS
ourRecordset.Update
但是,请考虑使用单个 SQL UPDATE
来执行此操作,正如评论者所建议的那样,而不是使用记录集。 这是一个参数化的UPDATE
...
Dim qdf As DAO.QueryDef
Dim strUpdate As String
strUpdate = "UPDATE tblRouting SET [Start Date] = Now() WHERE [Job Number]=[Which Job]"
Set qdf = CurrentDb.CreateQueryDef(vbNullString, strUpdate)
qdf.Parameters("Which Job") = EntJobNum
qdf.Execute dbFailOnError
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.