2014-03-06 88 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