Ms access 在Access中打开表单时启用控件
我有一个窗体,我想根据ComboBox控件中的值启用/禁用它的控件。与表单中的所有其他控件一样,此组合框控件链接到表。在组合框的更改事件中,我放置了启用/禁用其他控件的代码 我遇到的问题是,当我打开表单时,控件未启用/禁用。我必须重新选择ComboBox值以启用或禁用所有其他控件 我注意到的一点是,ComboBox中的RecordSet控件通常不会更改为ComboBox的value属性中显示的值 我试过使用Ms access 在Access中打开表单时启用控件,ms-access,forms,combobox,recordset,access-control,Ms Access,Forms,Combobox,Recordset,Access Control,我有一个窗体,我想根据ComboBox控件中的值启用/禁用它的控件。与表单中的所有其他控件一样,此组合框控件链接到表。在组合框的更改事件中,我放置了启用/禁用其他控件的代码 我遇到的问题是,当我打开表单时,控件未启用/禁用。我必须重新选择ComboBox值以启用或禁用所有其他控件 我注意到的一点是,ComboBox中的RecordSet控件通常不会更改为ComboBox的value属性中显示的值 我试过使用 combobox.recordset.filter=“Key=“&combobox.va
combobox.recordset.filter=“Key=“&combobox.value
但是我得到了错误
此类型的对象不支持操作。
更新 我认为我的问题在于如何访问combobox.recordset中的值。我的印象是combobox.recordset保存了从表中接收到的值。但是,它似乎保存了recordsource中的第一条记录
我猜我需要使用另一个记录集对象来搜索我需要的值。一种方法是将combobox.change()放在form.current()方法中 然后,当表单启动并运行时,这就好像组合框已经被更改一样
我以前也做过类似的事情,但是我现在还没有代码。一旦我看到它,我会在这里发布更详细的信息,但我相信这就是我的做法。一种方法是将combobox.change()放在form.current()方法中 然后,当表单启动并运行时,这就好像组合框已经被更改一样
我以前也做过类似的事情,但是我现在还没有代码。一旦我看到它,我会在这里发布更详细的信息,但我相信这就是我做的方式。大多数访问控制事件不是由对控件的编程更改触发的。您可能希望调用代码以从窗体的加载事件启用控件 您没有提到正在使用的Access版本,但我不相信任何版本都有ComboBox的Recordset属性
是否要将组合框设置为特定值?大多数访问控制事件不是由对控件的编程更改触发的。您可能希望调用代码以从窗体的加载事件启用控件 您没有提到正在使用的Access版本,但我不相信任何版本都有ComboBox的Recordset属性
您想将组合框设置为特定值吗?请您解释一下您的组合框是什么类型的,您想做什么?例如,您是否有一个用于查找表单记录的未绑定组合框,或者有一个用于更新表中字段的绑定组合框?这由RowSource和ControlSource属性控制,组合框没有记录集属性。打开表单时,未绑定的组合框不会有值,从一个记录移动到另一个记录时,值也不会改变,但使用当前事件分配值非常容易 编辑
我还不清楚你想做什么。根据您的评论,在选择选项时修改控件是否有问题,或者在窗体打开时设置组合的值是否有问题?您是否希望更改组合框的行源,可能是您的原始帖子所暗示的吗?您能解释一下您有什么类型的组合框以及您想做什么吗?例如,您是否有一个用于查找表单记录的未绑定组合框,或者有一个用于更新表中字段的绑定组合框?这由RowSource和ControlSource属性控制,组合框没有记录集属性。打开表单时,未绑定的组合框不会有值,从一个记录移动到另一个记录时,值也不会改变,但使用当前事件分配值非常容易 编辑
我还不清楚你想做什么。根据您的评论,在选择选项时修改控件是否有问题,或者在窗体打开时设置组合的值是否有问题?是否要更改组合的行源(可能是原始帖子所暗示的) 'Debug here for combobox.value(Ctrl+G用于调试窗口) Debug.print combobox.value me.filter=“Key=”&combobox.value
'根据ms access版本的不同,可能会重新加载或刷新me.refresh'检查表单属性上的密钥预览 'Debug here for combobox.value(Ctrl+G用于调试窗口) Debug.print combobox.value me.filter=“Key=”&combobox.value
“根据ms access版本,可能会重新加载或刷新me.reload或me.refresh”在评论中,lamcro观察到梳子盒是否有记录集的问题: 当我闯入窗体VB代码时 和“添加监视”CB控件 记录集属性在其中。我可以 甚至可以进去看看它自己的 财产 我在设置监视列表时看到了它,但组合框的记录集无法通过代码访问或更改。为了过滤组合框,您需要使用它的行源 这可以通过以下两种方式之一实现:
Private Sub cmbComboBox1_AfterUpdate()
Dim strRowsource As String
strRowsource = "SELECT * FROM MyTable"
If Not IsNull(Me!cmbComboBox1) Then
strRowsource = strRowsource & " WHERE MyField = " & Me!cmbComboBox1
End If
Me!cmbComboBox2.Rowsource = strRowsource
End Sub
SELECT * FROM MyTable
WHERE (MyField=[Forms]![MyForm]![cmbComboBox1]
AND IsNull([Forms]![MyForm]![cmbComboBox1])=False)
OR IsNull([Forms]![MyForm]![cmbComboBox1])=True
Private Sub cmbComboBox1_AfterUpdate()
Me!cmbComboBox2.Requery
End Sub
PARAMETERS [Forms]![MyForm]![cmbComboBox1] Long;
SELECT * FROM MyTable
WHERE (MyField=[Forms]![MyForm]![cmbComboBox1]
AND IsNull([Forms]![MyForm]![cmbComboBox1])=False)
OR IsNull([Forms]![MyForm]![cmbComboBox1])=True