循环访问表单并打印msgbox中的每个值

时间:2014-12-18 23:18:16

标签: vba ms-access access-vba ms-access-2007

我有一个基于myquery的表单,如下所示:

名称颜色

tom    red
mike   blue
joe    red  

假设我想点击一个按钮并显示带有文本" tom"的msgbox,然后在关闭该文本框后立即出现另一个" mike"并再次关闭将显示最后一个msgbox" joe",有没有办法用循环执行此操作?我在stackoverflow上发现了一个类似的问题,但该代码只产生了第一条记录," tom"三次。谢谢!

3 个答案:

答案 0 :(得分:1)

假设您已经打开了记录集,以下内容将起作用:

Do While Not MyRS.EOF
    Msgbox MyRS!MyName    'Note I changed your field name because you are asking for major trouble by using reserved words for field names!
    MyRS.MoveNext
Loop

答案 1 :(得分:1)

我在表单上设置了一个按钮。

在按钮的“属性”窗口的“事件”选项卡上的On Click事件中,我使用了以下代码:

Private Sub Command6_Click()

Dim rs As DAO.Recordset

Set rs = Me.RecordsetClone

Do While Not rs.EOF Or rs.BOF
    MsgBox rs!name
    rs.MoveNext
Loop

Set rs = Nothing

End Sub

这会在表单后面复制Recordset,并遍历每条记录,显示您要求的内容。

对Wayne来说,我有点惊讶我们没有必要将rs!name更改为rs![name],因为它是一个保留字。他是对的 - 你应该远离将它们用作字段(列)名称。

答案 2 :(得分:0)

这是我最终工作的代码,我只需要添加一行来修复它。

dim rs as dao.recordsetclone  
rs.movefirst  
do while not rs.eof  
if rs!color='red' then  
msgbox rs!stuff  
end if  
rs.movenext  
loop  
set rs=nothing  
end sub