【问题标题】:Dependent comboboxes in subform子表单中的相关组合框
【发布时间】:2017-08-04 07:28:59
【问题描述】:

我有一个主窗体,它有一个带有两个组合框的子窗体。我想根据第一个组合框的选择来限制第二个组合框。我在第一个组合框的行源中添加了这段代码:

SELECT DISTINCT tblAll.Country FROM tblAll ORDER BY tblAll.Country; 

然后在我添加的第一个组合框的更新事件之后

Private Sub cboCountry_AfterUpdate()

    On Error Resume Next

    cboCity.RowSource = "Select tblAll.City " & _
            "FROM tblAll " & _
            "WHERE tblAll.Country = '" & cboCountry.Value & "' " & _
            "ORDER BY tblAll.City;"

End Sub

我的问题是当我为第二个组合框选择一个值时,我可以将第一个组合框更改为我在组合框一中拥有的所有选项。

例如,首先我在第一个组合框中选择法国,然后第二个组合显示法国的城市,然后我选择一个。现在我可以将组合框一更改为 US。

这意味着我在第二个组合框中有一个来自法国的城市,现在我将第一个组合框的值更改为美国,如果我保存这条记录并想在子表单中保存另一条记录,这是可能的。

我应该怎么做才能限制它?我的意思是当我从第二个组合框中选择城市时,我不希望有可能更改第一个组合框的值,因为在这种情况下我的数据库是错误的 - 我可以保存不属于特定国家的城市。

【问题讨论】:

    标签: ms-access vba ms-access-2010 ms-access-2007 ms-access-2013


    【解决方案1】:

    如果他们选择了错误的国家,用户是否应该能够更改国家/地区?

    在第一个组合框的更新后事件中有代码从第二个组合框删除数据(将组合框值设置为 Null),因此用户现在必须选择适当的城市。

    如果您不想让用户在选择城市后更改国家/地区,则必须禁用或锁定国家/地区组合框。然后在移动到新记录时重新激活它。重新打开现有记录时可能还想禁用/锁定。因此,在设计中将国家组合框设置为禁用/锁定,然后以编程方式将其激活以仅用于新记录。

    推荐您的代码将组合框 2 RowSource 设置在组合框 2 GotFocus 事件中。

    【讨论】:

    • 对不起,我是新手。我在第一个组合框的更新后添加了 Me.cityName = Null ,但没有任何改变。当我为第二个组合框选择值时,我仍然可以将第一个组合框的值更改为我拥有的所有选项。
    • 实际上我必须设计一个允许用户编辑数据的数据输入表单,用户希望在他输入错误的国家和城市时有这种可能性,所以如果他输入错误的国家和城市,他可以改变它。但问题是如果他选择国家,然后根据它选择城市,现在他也有可能将国家更改为他想要的任何内容,这意味着他可以保存错误的信息。
    • 这正是我推荐在选择国家/地区时将城市组合框值设置为 Null 的代码的原因。
    猜你喜欢
    • 1970-01-01
    • 2019-07-26
    • 2015-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多