将选定值传递给第二个组合框以过滤可用值
Pass a selected value to a second combo-box to filter available values
我正在 Access 2013 中创建一个表单,该表单允许用户 select 之前输入的记录,他们希望为其输入额外的相关数据。底层 table 有数千条记录,所以我想使用两个组合框使 selection 更容易。根据我在别处找到的多个帖子,我应该能够将 cboGetSite 组合框的行源设置为 table,列出所有可用站点。然后,我将 AfterUpdate() 事件设置为使用 selected 站点将第二个组合框过滤到一个列表,其中包括对该站点的可用访问,例如:
Private Sub cboGetSite_AfterUpdate()
Me.cboGetDate.RowSource = “SELECT VisDate FROM” & _
“qrySiteVisits WHERE location =” & _
Me.cboGetSite & _
“ORDER BY VisDate”
End Sub
当我 select cboGetSite 组合框中的一个值时,我收到一条错误消息,指出
“作为事件 属性 设置输入的更新后表达式产生了以下错误:外部过程无效。 *表达式不能产生宏名称、用户定义函数名称或[事件过程]。 *评估函数、事件或宏时可能出错。”
任何人都可以指出我可能哪里出错了吗?我不使用 VBA,所以这对我来说有点困难。我正在遵循在几个在线线程中找到的指南。请不要回应,“好吧,错误显然告诉你……”如果这是显而易见的,我就不会问了。
有人可以指导我完成这些步骤吗?给定一个列出可用站点和访问日期的查询,我需要:
- Select 来自组合框的站点从而设置 cboGetSite 值
- 将 cboGetSite 传递给 cboGetDate 组合框,从而筛选出一组访问日期。
- Select 设置 tempVar(使用 SetTempVar())的日期,然后将其设置为后续表单中的值,以将相关数据添加到多个 table 之一,并将其链接回来通过 cboGetDate 变量访问正确的访问记录。
如果您的 vba-代码被涂成红色,则它是无效的!
在vbaide中使用Debug->Compile ...
编写代码后,会显示语法错误!
您从哪里复制了该代码?它使用了错误的双引号(ASCII 字符 147、148 而不是 34 (Shift+'))
之后您将收到另一个错误,因为您在 sql-string "SELECT VisDate FROM" & "qrySiteVisits WHERE location ="
gets "SELECT VisDate FROMqrySiteVisits WHERE location ="
中缺少空格。 FROM 后面少了一个空格。
如果cboGetSite
和location
是数字,此代码将起作用。
Private Sub cboGetSite_AfterUpdate()
Dim SQL as String
SQL = "SELECT VisDatem, id FROM " & _
"qrySiteVisits WHERE location = " & _
Me.cboGetSite & _
" ORDER BY VisDate"
'If location and cboGetSite are strings use this: SQL = "SELECT VisDate, id FROM " & _
"qrySiteVisits WHERE location = '" & _
Me.cboGetSite & _
"' ORDER BY VisDate"
Debug.Print SQL ' shows the string in immidiate window in vba ide
Me.cboGetDate.RowSourceType = "Table/Query"
Me.cboGetDate.RowSource = SQL
End Sub
如果先选择cboGetDate
(cboGetSite
为空)会怎样?什么都不显示、全部显示或移动到 cboGetSite
?
我正在 Access 2013 中创建一个表单,该表单允许用户 select 之前输入的记录,他们希望为其输入额外的相关数据。底层 table 有数千条记录,所以我想使用两个组合框使 selection 更容易。根据我在别处找到的多个帖子,我应该能够将 cboGetSite 组合框的行源设置为 table,列出所有可用站点。然后,我将 AfterUpdate() 事件设置为使用 selected 站点将第二个组合框过滤到一个列表,其中包括对该站点的可用访问,例如:
Private Sub cboGetSite_AfterUpdate()
Me.cboGetDate.RowSource = “SELECT VisDate FROM” & _
“qrySiteVisits WHERE location =” & _
Me.cboGetSite & _
“ORDER BY VisDate”
End Sub
当我 select cboGetSite 组合框中的一个值时,我收到一条错误消息,指出
“作为事件 属性 设置输入的更新后表达式产生了以下错误:外部过程无效。 *表达式不能产生宏名称、用户定义函数名称或[事件过程]。 *评估函数、事件或宏时可能出错。”
任何人都可以指出我可能哪里出错了吗?我不使用 VBA,所以这对我来说有点困难。我正在遵循在几个在线线程中找到的指南。请不要回应,“好吧,错误显然告诉你……”如果这是显而易见的,我就不会问了。
有人可以指导我完成这些步骤吗?给定一个列出可用站点和访问日期的查询,我需要:
- Select 来自组合框的站点从而设置 cboGetSite 值
- 将 cboGetSite 传递给 cboGetDate 组合框,从而筛选出一组访问日期。
- Select 设置 tempVar(使用 SetTempVar())的日期,然后将其设置为后续表单中的值,以将相关数据添加到多个 table 之一,并将其链接回来通过 cboGetDate 变量访问正确的访问记录。
如果您的 vba-代码被涂成红色,则它是无效的!
在vbaide中使用Debug->Compile ...
编写代码后,会显示语法错误!
您从哪里复制了该代码?它使用了错误的双引号(ASCII 字符 147、148 而不是 34 (Shift+'))
之后您将收到另一个错误,因为您在 sql-string "SELECT VisDate FROM" & "qrySiteVisits WHERE location ="
gets "SELECT VisDate FROMqrySiteVisits WHERE location ="
中缺少空格。 FROM 后面少了一个空格。
如果cboGetSite
和location
是数字,此代码将起作用。
Private Sub cboGetSite_AfterUpdate()
Dim SQL as String
SQL = "SELECT VisDatem, id FROM " & _
"qrySiteVisits WHERE location = " & _
Me.cboGetSite & _
" ORDER BY VisDate"
'If location and cboGetSite are strings use this: SQL = "SELECT VisDate, id FROM " & _
"qrySiteVisits WHERE location = '" & _
Me.cboGetSite & _
"' ORDER BY VisDate"
Debug.Print SQL ' shows the string in immidiate window in vba ide
Me.cboGetDate.RowSourceType = "Table/Query"
Me.cboGetDate.RowSource = SQL
End Sub
如果先选择cboGetDate
(cboGetSite
为空)会怎样?什么都不显示、全部显示或移动到 cboGetSite
?