Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VBA checkbox.visible=true不起作用_Vba_Checkbox_Ms Access 2010 - Fatal编程技术网

VBA checkbox.visible=true不起作用

VBA checkbox.visible=true不起作用,vba,checkbox,ms-access-2010,Vba,Checkbox,Ms Access 2010,我有一个子表单,它绑定到一个名为AdditionalTopics的表。子窗体有4个复选框,每个复选框都绑定到AdditionalTopics表中的相应字段。子窗体通过“程序ID”字段连接到主窗体。现在,如果AdditionalSubTopics表中不存在程序ID,则子窗体将变为空白。我编写了一些vba代码,当记录集为空时,可以使子窗体上的复选框可见。记录集GET执行以下查询: select Program_ID from AdditionalSubTopics where Program_ID

我有一个子表单,它绑定到一个名为AdditionalTopics的表。子窗体有4个复选框,每个复选框都绑定到AdditionalTopics表中的相应字段。子窗体通过“程序ID”字段连接到主窗体。现在,如果AdditionalSubTopics表中不存在程序ID,则子窗体将变为空白。我编写了一些vba代码,当记录集为空时,可以使子窗体上的复选框可见。记录集GET执行以下查询:

select Program_ID from AdditionalSubTopics where Program_ID =  '" & progID & "';
progID包含主窗体programID字段的值。 我的代码如下所示:

If rsAddTopic.EOF = True Then
 Me![Additional_Topic subform].Form!chkEducation.Visible = True
 Me![Additional_Topic subform].Form!chkHealth.Visible = True
 Me![Additional_Topic subform].Form!chkEnvSust.Visible = True
 Me![Additional_Topic subform].Form!chkCommEconDev.Visible = True
End If
此处,如果记录集为空,则复选框应可见,但不起作用

有人能帮忙吗 多谢各位


@戈德霍姆普森。你是对的。复选框绑定到AdditionalTopics表,主窗体连接到Program表。并非所有程序的主题都列在AdditionalTopics表中。因此,当我在主窗体上选择AdditionalTopics表中没有记录的记录时,子窗体变为空白。我想这就是它的工作原理。但我不希望它变为空白,相反,子窗体应该显示复选框,其中未选中任何复选框,允许用户选择将在AdditionalTopics表中插入新记录的框。要实现这一点,我需要创建未连接到主窗体且复选框未绑定到任何表的子窗体,并编写一些vba代码来更新表,或者是否有更好的方法来实现这一点。请帮助。

您是否有任何错误?这应该行得通,所以我想知道表单上是否没有更新可见性

请尝试以下方法,如果有帮助,请告诉我:

If rsAddTopic.EOF = True Then
 Me![Additional_Topic subform].Form!chkEducation.Visible = True
 Me![Additional_Topic subform].Form!chkHealth.Visible = True
 Me![Additional_Topic subform].Form!chkEnvSust.Visible = True
 Me![Additional_Topic subform].Form!chkCommEconDev.Visible = True
 DoEvents
End If

表单上的记录集更改后,会发生一个表单\u当前事件。这可能是避免DoEvents(性能密集型或他们所说的那样)的一种方法。

如果下面的答案不起作用,请告诉我们这些代码在哪里,格式为打开()、加载()、当前()、关闭(),。。。您如何确定rsAddTopic.EOF是真的?如果不在要检查的条件中添加MsgBox。可能我误解了这个问题,但是如果复选框绑定到子窗体的记录源中的字段,并且子窗体中没有要显示的记录,那么它看起来只是合乎逻辑的(至少对我来说)复选框将不可见,因为没有它们的基础记录。换句话说,设置
.Visible=False
可以隐藏确实存在的东西,但设置
.Visible=True
不能强制显示不存在的东西。@Gord Thompson,您刚才看到了。对于更新的问题,因为它们是“绑定”复选框,我们是在说他们根本看不见还是只是变灰了?如果为灰色,您是否查看过CheckBox.TripleEstate属性?如果将其设置为false,则它们将显示为未选中,并且仍然允许您更新其值。但是,由于这是一个子表单,如果新创建的行为空,则可能需要将subform.form.recordsource设置为新创建的行。复选框完全不可见。当recordsource行为空时,我可以使用triple state属性使复选框可见吗?我还没有在这种情况下测试过它-你运气好吗?在这种情况下,在打开子窗体之前,可能更容易在主表中添加键控的“空白”行。在这种情况下,三重状态不起作用。我正在研究你使用空行的想法。