Ms access 子窗体中的从属组合框

Ms access 子窗体中的从属组合框,ms-access,vba,ms-access-2010,ms-access-2007,ms-access-2013,Ms Access,Vba,Ms Access 2010,Ms Access 2007,Ms Access 2013,我有一个主窗体,它有一个子窗体和两个组合框。我想根据第一个组合框的选择限制第二个组合框。我在第一个组合框的rowsource中添加了以下代码: SELECT DISTINCT tblAll.Country FROM tblAll ORDER BY tblAll.Country; 然后在我添加的第一个组合框的更新后事件中 Private Sub cboCountry_AfterUpdate() On Error Resume Next cboCity.RowSource =

我有一个主窗体,它有一个子窗体和两个组合框。我想根据第一个组合框的选择限制第二个组合框。我在第一个组合框的rowsource中添加了以下代码:

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
我的问题是,当我为第二个combobox选择一个值时,我可以将第一个combobox更改为combobox one中的所有选项

例如,首先我在第一个组合框中选择法国,然后第二个组合框显示法国的城市,然后我选择一个。现在我可以把组合框一换成我们

这意味着我在第二个combobox中有一个来自法国的城市,现在我将第一个combobox的值更改为US,并且如果我保存此记录并希望在子窗体中保存另一条记录,这是可能的


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

如果用户选择了错误的国家,难道用户不能改变国家吗

在第一个combobox的AfterUpdate事件中有代码,该代码从第二个combobox中删除数据(将combobox值设置为Null),因此用户现在必须选择适当的城市

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


建议您的代码将combobox 2 RowSource设置在combobox 2 GotFocus事件中。

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

在第一个combobox的AfterUpdate事件中有代码,该代码从第二个combobox中删除数据(将combobox值设置为Null),因此用户现在必须选择适当的城市

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


建议您的代码将combobox 2 RowSource设置在combobox 2 GotFocus事件中。

很抱歉,我是新访问的。我在第一个combobox的更新后添加了Me.cityName=Null,但没有任何更改。当我为第二个组合框选择值时,我仍然可以将第一个组合框的值更改为我拥有的所有选项。实际上,我必须设计数据输入表单,允许用户编辑数据,用户希望在第一次输入错误的国家时有可能更改国家,因此如果他输入错误的国家和城市,他可以更改它。但问题是,如果他选择了乡村,并根据乡村选择了城市,那么现在他也有可能把乡村变成他想要的,这意味着他可能会保存错误的信息。这正是为什么我建议使用代码在选择国家/地区时将城市组合框值设置为Null。很抱歉,我是新访问的。我在第一个组合框更新后添加了我。cityName=Null,但没有任何更改。当我为第二个组合框选择值时,我仍然可以将第一个组合框的值更改为我拥有的所有选项。实际上,我必须设计数据输入表单,允许用户编辑数据,用户希望在第一次输入错误的国家时有可能更改国家,因此如果他输入错误的国家和城市,他可以更改它。但问题是,如果他选择了国家,并根据它选择了城市,现在他也有可能将国家更改为任何他想要的,这意味着他可以保存错误的信息。这正是为什么我建议代码设置城市组合框值为空时,国家被选中。