2014-03-06 89 views
0

我需要檢查表中的每個記錄,並且如果p <> 0彈出警告與不好的記錄數,即時通訊使用此代碼但即時獲取錯誤循環沒有不要使用vba在Access中循環訪問所有記錄的代碼

Private Sub Command142_Click() 
Dim rs As Recordset 
Set rs = CurrentDb.OpenRecordset("ppp-pd") 
Do While rs.EOF = True 
rs.MoveFirst 
p1 = (Round(rs!brutoprihod - (rs!brutoprihod * rs!ProcPrizTros) - rs!osnovicazaporez)) 
If p1 = 0 Then 
rs.MoveNext 
Loop 
Else 
MsgBox ("not good") 
End If 
MsgBox ("all records are good") 
End Sub 

回答

2

你不能在循環外部If語句交叉。另外,我認爲如果記錄集是空的,你的代碼只會進入循環。試試這個:

Private Sub Command142_Click() 

    Dim rs As Recordset 

    Set rs = CurrentDb.OpenRecordset("ppp-pd") 

    Do While Not rs.EOF 
     p1 = (Round(rs!brutoprihod - (rs!brutoprihod * rs!ProcPrizTros) - rs!osnovicazaporez)) 
     If p1 <> 0 Then 
      MsgBox ("not good") 
     End If 
     rs.MoveNext 
    Loop 
End Sub 
+0

我有注意,我讓類似的,但不知道怎麼點在哪一行是P1 <>在一些msgnox –

+0

0,如果你有一個ID字段,你可以做這樣的事情RS IDField! 。或者'rs.AbsolutePosition + 1'會給你行號(需要加1,因爲它是一個從零開始的索引)。 – Mike