【问题标题】:Combo Box depends on another combo box组合框依赖于另一个组合框
【发布时间】:2020-07-13 13:59:59
【问题描述】:

我有一个包含两个组合框的表格,一个是病房号,另一个是房间号。病房是医疗单位,而房间是房间号(如 GMU-01)。

我正在尝试根据病房值来限制房间名称,即列出特定单元的所有床号。

SELECT DISTINCT [TblWards].[Wards] FROM TblWards ORDER BY [TblWards].[Wards]; 

Wards 组合框(第一个框)中的行源

Private Sub Wards_AfterUpdate()
Dim txt As String
txt = "SELECT TblWards.Room FROM TblWards WHERE (TblWards.Wards)= '" & 
Me.Wards.Column(0) & "' ORDER BY TblWards.Room;"
Me.RoomN.RowSource = txt
End Sub

SELECT [TblWards].[Room] FROM TblWards WHERE ((([TblWards].[Wards])=AMU)); 

来自第二个组合框 RoomN 的行源

当我尝试从 Wards 组合框中选择一个值时出现错误。如果我列出更新后的代码,我可以选择一个值。错误是意外错误,需要关闭访问。

然后,如果我尝试从第二个组合框中选择一个值,则会收到错误消息。询问 AMU 参数。

我继承了这段代码,并试图确定如何处理、重写或尝试挽救它。

【问题讨论】:

  • 它给出了什么错误?要修复选择,请在 AMU 周围加上引号,如下所示:'AMU'

标签: vba ms-access


【解决方案1】:

根据我从您的消息中了解到,您可以试试这个:

私有子 cboWard_AfterUpdate() 将 strSQL 调暗为字符串

strSQL = "SELECT * FROM tblRooms WHERE rWardID = " & Me.cboWard

Me.cboRoom.RowSource = strSQL

结束子

【讨论】:

  • 对不起这个问题......我不确定为什么代码使用txt?从我读到的内容来看,afterupdate 应该是一个重新查询。
  • 更新后应该只为 cboRoom 设置行源。 txt 只是一个用于放置 SQL 字符串的变量
【解决方案2】:

尝试关注-

  1. 手动清除组合框“RoomN”的 ControlSource 和 RowSorce 属性。
  2. 在“Wards”组合框的 AfterEvent 中尝试以下代码

    Private Sub Wards_AfterUpdate()
    Dim txt As String
    txt = "SELECT Room FROM TblWards WHERE [Wards] = '" & Me.Wards.Value & "' ORDER BY Room;"
    Me.RoomN.RowSource = txt
    End Sub
    

【讨论】:

    猜你喜欢
    • 2017-02-19
    • 1970-01-01
    • 1970-01-01
    • 2014-08-17
    • 2018-05-29
    • 1970-01-01
    • 1970-01-01
    • 2012-10-10
    相关资源
    最近更新 更多