【问题标题】:Can't get the cascading combo boxes to work无法让级联组合框工作
【发布时间】:2015-10-23 16:01:11
【问题描述】:

我正在尝试制作级联组合框,但我似乎无法让它工作。例如,如果我在第一个组合框中选择了一台特定的计算机,那么第二个组合框应该只显示与该计算机兼容的 HDD。我还提供了一个指向我创建的数据库的链接。谁能帮我解决这个问题?

我有 2 个包含字段的表:

  • tblComputer(计算机)
  • tblHDD(硬盘,计算机)

cboxComputer 行来源: SELECT tblComputer.Computer FROM tblComputer;

cboxHDD 行源: SELECT tblHDD.HDD, tblHDD.Computer FROM tblHDD;

Private Sub cboxComputer_AfterUpdate()
    Me.cboxHDD.RowSource = "SELECT HDD " & _
                           "FROM tblHDD " & _
                           "WHERE Computer = " & Nz(Me.cboxComputer) & _
                           "ORDER BY HDD"
End Sub

https://drive.google.com/file/d/0Bye-M8FI1tRURmQ0MEFzRjBCdWM/view?usp=sharing

【问题讨论】:

  • 什么不起作用? cboxHDD 没有加载吗?有错误信息吗?
  • 很抱歉没有包括错误的内容。第二个组合框不起作用。当我选择第二个组合框时,它显示“查询表达式'Computer = SonyORDER BY HDD'中的语法错误(缺少运算符)。”

标签: vba ms-access combobox filtering cascadingdropdown


【解决方案1】:

数据库中的计算机字段是字符串数据类型。尝试像这样在名称周围加上撇号:

Private Sub cboxComputer_AfterUpdate()
    Me.cboxHDD.RowSource = "SELECT HDD " & _
                       "FROM tblHDD " & _
                       "WHERE Computer = '" & Nz(Me.cboxComputer) & "' " & _
                       "ORDER BY HDD"
End Sub

【讨论】:

  • 我输入它并显示“编译错误:语法错误”
  • 您还需要在结束撇号之后或单词 ORDER 之前留一个空格。我更新了我的答案以解决这个问题。
  • 即使我在单词 ORDER 之前添加了一个空格,我仍然收到相同的错误消息。我还在结束撇号后添加了一个空格。
  • 好的,我省略了最后一个&符号。答案已更新。
  • 太棒了,这行得通!所以如果 cboxComputer 是数字数据,那我就不用撇号和引号了,对吗?
猜你喜欢
  • 1970-01-01
  • 2012-05-16
  • 1970-01-01
  • 1970-01-01
  • 2023-04-04
  • 2017-08-31
  • 2021-12-05
相关资源
最近更新 更多