如果选中了复选框,则在访问时创建带有表单值的msgbox

时间:2014-12-19 18:23:20

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

所以我有一个基于表格的访问表单。表单旁边有一个颜色列表和一个是/否复选框。如果用户标记了复选框,然后单击一个按钮,我希望msgbox显示为显示标记复选框旁边的所有颜色。这是我目前拥有的代码,如果我第二次单击该按钮,它就不会运行。它有时也只显示第一种颜色并且通常是错误的。

表格看起来像这样

红色x

绿色x
黄x

代码看起来像这样

private sub command5_click()
dim rs as dao.recordset  
set rs=me.recordsetclone  

rs.movefirst  
do while not rs.eof  

if rs!checkboxes = true then  
  msgbox rs!color  
end if  
rs.movenext  
loop  
set rs=nothing  

end sub

1 个答案:

答案 0 :(得分:0)

您需要在command5_Click的顶部添加Me.Dirty = False。重新记录记录集是过度的 - 你会丢失你的滚动位置和你当前的记录。

当您有连续表单时,当焦点从当前记录移动到另一个记录时,数据将写入数据库。将焦点移动到页眉或页脚中的控件时, 不会发生 。这是设计,因为它是一个有用的功能。原因如下:

假设您的数据库中有第3个字段,这是一个名为“essay”的文本字段,您可以在其中撰写关于颜色的10行文章。该字段太大,无法在表单的连续部分显示,因此您将绑定的文本框添加到表单页脚。当您在颜色记录中上下移动时,当前颜色的文章将显示在表单的底部。 并且可以编辑 。当您单击“论文”文本框时,当前记录仍在编辑中。当前记录可以在页眉,细节和页脚中具有绑定控件,并且任何这些位置的编辑都将同时写入DB。

当您将焦点移动到 未绑定 控件(例如command5)时,它没有什么不同。目前的记录仍然是当前的记录,尽管它的绑定控件当前都没有关注。

每当您希望当前记录保持当前记录,但强制将其编辑内容写入数据库时​​,您使用Me.Dirty = False

至于为什么command5只在你第一次点击它时才有效?我不知道!