Combobox 将选定值传递给第二个组合框以筛选可用值

Combobox 将选定值传递给第二个组合框以筛选可用值,combobox,ms-access-2013,Combobox,Ms Access 2013,我正在Access 2013中创建一个表单,允许用户选择以前输入的记录,并为其输入其他相关数据。基础表有数千条记录,所以我想使用两个组合框来简化选择。根据我在别处找到的多篇文章,我应该能够将cboGetSite组合框的行源设置为列出所有可用站点的表。然后,我设置AfterUpdate()事件以使用所选站点过滤第二个组合框,使其包含对该站点的可用访问的列表,如下所示: Private Sub cboGetSite_AfterUpdate() Me.cboGetDate.RowSource

我正在Access 2013中创建一个表单,允许用户选择以前输入的记录,并为其输入其他相关数据。基础表有数千条记录,所以我想使用两个组合框来简化选择。根据我在别处找到的多篇文章,我应该能够将cboGetSite组合框的行源设置为列出所有可用站点的表。然后,我设置AfterUpdate()事件以使用所选站点过滤第二个组合框,使其包含对该站点的可用访问的列表,如下所示:

Private Sub cboGetSite_AfterUpdate()
    Me.cboGetDate.RowSource = “SELECT VisDate FROM” & _
                    “qrySiteVisits WHERE location =” & _
                    Me.cboGetSite & _
                    “ORDER BY VisDate”
End Sub
然后,当我在cboGetSite组合框中选择一个值时,我得到一个错误,该错误表示

作为事件属性设置输入的更新后表达式产生以下错误:外部过程无效。*该表达式可能不会导致宏名称、用户定义函数名称或[事件过程]。*计算函数、事件或宏时可能出错

有人能告诉我哪里出了问题吗?我不使用VBA,所以这对我来说是一个挑战。我在网上的几个帖子中找到了以下指南。请不要回答“这个错误显然告诉你……”如果这是明显的,我就不会问了

有人能陪我走过台阶吗?如果查询中列出了可用的网站和访问日期,我需要:

  • 从组合框中选择一个站点,从而设置cboGetSite值
  • 将cboGetSite传递到cboGetDate组合框,从而过滤到一组访问日期
  • 选择一个日期,该日期设置一个tempVar(使用SetTempVar()),然后在后续表单中将其设置为值,以将相关数据添加到多个表中的一个表中,并通过cboGetDate变量将其链接回正确的就诊记录
    如果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