我有一个主窗体,它有一个带有两个组合框的子窗体。我想根据第一个组合框的选择限制第二个组合框。我在第一个组合框的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
我的问题是当我为第二个组合框选择一个值时,我可以将第一个组合框更改为我在组合框中的所有选项。
例如,首先我在第一个组合框中选择法国,然后第二个组合显示法国的城市,我选择一个。现在我可以将组合框改为美国。
这意味着我在第二个组合框中有一个来自法国的城市,现在我将第一个组合框的值更改为US,如果我保存此记录并希望在子表单中保存另一个记录,则有可能。
我应该怎么做才能限制它?我的意思是当我从第二个组合框中选择城市时,我不希望有这种可能性来改变第一个组合框的价值,因为在这种情况下我的数据库是错误的 - 我可以保存不属于特定国家的城市。
答案 0 :(得分:0)
用户是否应该能够更改国家/地区,以防他们选择了错误的国家/地区?
在第一个组合框的AfterUpdate事件中有代码从第二个组合框中删除数据(将组合框值设置为Null),因此用户现在必须选择一个合适的城市。
如果您不想在选择城市后允许用户更改国家/地区,则必须禁用或锁定国家/地区组合框。然后在移动到新记录时重新激活它。在重新打开现有记录时,可能还需要禁用/锁定。因此,将国家组合框设置为禁用/锁定设计,然后以编程方式激活它仅用于新记录。
推荐你的代码将combobox 2 RowSource设置为combobox 2 GotFocus事件。