繁体   English   中英

Access - VBA/SQL Recordset 循环不更新

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM