Combobox 将选定值传递给第二个组合框以筛选可用值
我正在Access 2013中创建一个表单,允许用户选择以前输入的记录,并为其输入其他相关数据。基础表有数千条记录,所以我想使用两个组合框来简化选择。根据我在别处找到的多篇文章,我应该能够将cboGetSite组合框的行源设置为列出所有可用站点的表。然后,我设置AfterUpdate()事件以使用所选站点过滤第二个组合框,使其包含对该站点的可用访问的列表,如下所示:Combobox 将选定值传递给第二个组合框以筛选可用值,combobox,ms-access-2013,Combobox,Ms Access 2013,我正在Access 2013中创建一个表单,允许用户选择以前输入的记录,并为其输入其他相关数据。基础表有数千条记录,所以我想使用两个组合框来简化选择。根据我在别处找到的多篇文章,我应该能够将cboGetSite组合框的行源设置为列出所有可用站点的表。然后,我设置AfterUpdate()事件以使用所选站点过滤第二个组合框,使其包含对该站点的可用访问的列表,如下所示: Private Sub cboGetSite_AfterUpdate() Me.cboGetDate.RowSource
Private Sub cboGetSite_AfterUpdate()
Me.cboGetDate.RowSource = “SELECT VisDate FROM” & _
“qrySiteVisits WHERE location =” & _
Me.cboGetSite & _
“ORDER BY VisDate”
End Sub
然后,当我在cboGetSite组合框中选择一个值时,我得到一个错误,该错误表示
作为事件属性设置输入的更新后表达式产生以下错误:外部过程无效。*该表达式可能不会导致宏名称、用户定义函数名称或[事件过程]。*计算函数、事件或宏时可能出错
有人能告诉我哪里出了问题吗?我不使用VBA,所以这对我来说是一个挑战。我在网上的几个帖子中找到了以下指南。请不要回答“这个错误显然告诉你……”如果这是明显的,我就不会问了
有人能陪我走过台阶吗?如果查询中列出了可用的网站和访问日期,我需要:
如果vba代码被涂成红色,则该代码无效 在vba ide中使用
Debug->Compile…
编写代码后,这将显示语法错误
你从哪里复制的代码?它使用了错误的双引号(ASCII字符147148而不是34(Shift+'))
在此之后,您将收到另一个错误,因为您的sql字符串“SELECT VisDate FROM”和“qrystitevists WHERE location=“
获取”中缺少空格,请从qrystitevists WHERE location=“
”中选择VisDate。从中删除一个空格
如果cboGetSite
和location
是数字,则此代码将起作用。
Private Sub-cboGetSite_AfterUpdate()
将SQL设置为字符串
SQL=“选择VisDatem,id FROM”&_
“qRysiteVisitions WHERE location=“&”_
Me.cboGetSite&_
“按日期订购”
'如果location和cboGetSite是字符串,请使用以下命令:SQL=“SELECT VisDate,id FROM”&_
“qrysite访问位置=”&_
Me.cboGetSite&_
“‘按日期订购’”
“Debug.Print SQL”在vba ide的IMMIDATE窗口中显示字符串
Me.cboGetDate.RowSourceType=“表/查询”
Me.cboGetDate.RowSource=SQL
端接头
如果首先选择了
cboGetDate
(cboGetSite
为空),会发生什么情况?不显示任何内容、全部显示或移动到cboGetSite
?我现在获得了要选择的位置列表,并且在选择位置时没有错误,但cboGetDate列表为空。我注意到cboGetSite是从站点引用表中提取的,使用数字ID和字符串位置字段,因此应该传递num(ID)作为过滤器。我尝试删除ID并只传递字符串字段,但这似乎也不起作用。对于您的另一个问题,我实际上更希望cboGetDate不可用时先选择。有太多的日期可供选择,所以他们必须先选择一个站点。所以location
是一个数字,cboGetSite是一个字符串?然后在
cboGetSite控件属性的设计模式下更改绑定列。如果控件已绑定,则也必须更改该字段。不要传递字符串,因为数字更好。如果仍然失败,则显示
Debug.Print输出和
cboGetSite`的recordsource。只需将所需字段添加到SELECT
(在组合绑定到第一列的日期之后)。您可以使用cboGetDate.Column(1)
(1作为索引是从零开始的:第一项是0,第二项是1,等等。)@A.Birdman:如果通过调整列宽使第二列可见,则cboGetDate
中是否显示ID
?