2014-06-13 174 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