2014-06-13 130 views
0

我试图让记录集循环代码工作,我有我的波纹管代码,它保持输入一个零。我的第二段代码是相同的代码,但在消息框中显示数量。它显示的数字是我想要输入到我的字段中的数字。我似乎不能把它放在现场!数量?循环访问记录集

Dim Val As Integer 
Dim rs As DAO.Recordset 
Set rs = Forms!frmReceive!sfrmReceiveDetailEntry.Form.RecordsetClone 
With rs 
Do While Not rs.EOF 

rs.Edit 
Val = Nz(DLookup("[RemainingQty]", "tblQtySoFarTEMP", "[OrderDetailPK]= " & rs! [OrderDetailFK])) 
rs!Qty = Val 
rs.Update 

rs.MoveNext 
Loop 
End With 
Set rs = Nothing 

值显示在消息框中

Dim val As Integer 

Dim rs As DAO.Recordset 
Set rs = Forms!frmReceive!sfrmReceiveDetailEntry.Form.RecordsetClone 
With rs 
Do While Not rs.EOF 
val = Nz(DLookup("[RemainingQty]", "tblQtySoFarTEMP", "[OrderDetailPK]= " & rs! [OrderDetailFK])) 

MsgBox val 

rs.MoveNext 
Loop 
End With 
Set rs = Nothing 
+0

我只看到你有一个rs语句,然后仍然使用rs引用表。不应该是一个问题,但是当你找不到错误时,总是尽量避免使用陈述。 - 然后尝试在编辑之前移动编辑一行/移动val =语句... – Johanness

+0

我同意@Johanness,将'rs.Edit'移动到您的'Val ='代码下面。试试看。 –

回答

0

我算出来到底,这是我工作的代码!

'If YES then run the following code 
AreYouSure = MsgBox("You are about to Receive All of Order" & txtOrderNumber.Value & " , Are you Sure?, The whole order and it's Quantities will be updated?", vbYesNo, "Receive All?") 
If (AreYouSure = vbYes) Then 
'disable warnings 
DoCmd.SetWarnings False 
'Create recordsetclone of subform 
'loop recordset and lookup remaining qty to receive all 
Set rs = Forms!frmReceive!sfrmReceiveDetailEntry.Form.RecordsetClone 
    With rs 
     Do While Not rs.EOF 

     rs.Edit 
     rs("Qty") = Nz(DLookup("[RemainingQty]", "tblQtySoFarTEMP", "[OrderDetailPK]= " & rs![OrderDetailFK])) 
     rs.Update 
     rs.MoveNext 
     Loop 
    End With 
Set rs = Nothing 
+0

仍然。假设你没有在同一个地方使用With子句和记录集变量(rs)。如果你使用rs你不需要rs.edit但是.edit就足够了。清楚这样的事情会阻止你在稍后调试失败的时间。 – Johanness