2014-06-13 2 views
0

레코드 집합 루프 코드를 작동 시키려고하면 입력을 0으로 유지하는 코드가 있습니다. 두 번째 코드는 동일한 코드이지만 메시지 상자에 수량을 표시합니다. 표시되는 번호는 내 필드에 입력하려는 번호입니다. 나는 그 전화 번호를 현장에 넣으려고하는 것 같아요! 수량? 나는 결국 그것을했다액세스에서 레코드 집합을 반복 루팅

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

나는 당신이 with rs 문을 가지고 있고 그 후에도 여전히 rs를 사용하여 테이블을 참조합니다. 문제는 아니지만 오류가 발생하면 위치를 찾을 수 없으므로 항상 진술을 사용하지 마십시오. - 그런 다음 편집을 한 줄 아래로 이동하거나 편집하기 전에 val = 문을 이동하십시오. – Johanness

+0

@Johanness에 동의하고'Val ='코드 아래에서'rs.Edit'을 이동하십시오. 시도해 봐. –

답변

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 

이 내 작업 코드입니다!

'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 절과 recordset-variable (rs)를 사용하지 않도록하십시오. rs와 함께 있다면 rs.edit는 필요 없지만 .edit 만 있으면 충분합니다. 그런 것들에 대해 명확히하면 나중에 좌절감을 디버깅하는 시간을 막을 수 있습니다. – Johanness

관련 문제