在连续表单中,我能否让组合框根据其自身记录中的字段或文本框值使用不同的查询?
In a continuous form, can I have a combo box use a different query depending on a field or text box value within its own record?
编辑:对于那些想知道的人,显然不可能以连续形式为两个不同的记录设置相同的组合框,引用两个不同的查询来填充其列表。
我有一个可能有 5 条记录的连续表格。有一个组合框 Laborer1,它希望每个表单的下拉列表都不同,具体取决于其他一些因素。我设法将我想要的每个记录的组合框的确切查询作为该记录中的文本字段。你下一步怎么做?此时我所能管理的就是将一条记录的查询应用于所有组合框,但我希望每个组合框都使用其 "own" 查询。
谢谢!
是的,您可以这样做,但需要权衡:非活动记录的值可能不适合组合框的当前行源。发生这种情况时,您将得到一个空白的组合框,而不是让它显示当前值。如果激活记录,该值会再次出现,但用户体验不是很好。
也就是说,一种选择是在 Form_Current
事件中处理它。由于您已经将行源存储在数据库字段中,因此代码非常短:
Private Sub Form_Current
Laborer1.RowSource = ReferenceField.Value
Laborer1.Requery 'I don't believe you need this, but you might.
End Sub
我想我对连续表格有一个答案。当您单击组合框时,其他组合变为空白,但当您 select 时,一切看起来都很正常。
我用我的表工作,很抱歉有一个不同的例子..无论如何我认为这是一个答案..
我有 2 个组合框,当您使用 select 国家/地区时,城市组合仅显示 selected 国家/地区的城市。
此代码用于国家/地区组合
Private Sub Country_Change()
Dim dbs As DAO.Database
Dim rsTable As DAO.Recordset
Dim rsQuery As DAO.Recordset
Set dbs = CurrentDb
'Open a table-type Recordset
Set rsTable = dbs.OpenRecordset("Cities", dbOpenTable)
'Open a dynaset-type Recordset using a saved query
Set rsQuery = dbs.OpenRecordset("Select * FROM Cities WHERE Country='" + Country + "'", dbOpenDynaset)
'We created a recordset filtered and set it to city.recordset
Set city.Recordset = rsQuery
city.Requery
End Sub
而这 2 个子用于城市组合..
Private Sub City_Change()
Dim dbs As DAO.Database
Dim rsTable As DAO.Recordset
Dim rsQuery As DAO.Recordset
Set dbs = CurrentDb
'Open a table-type Recordset
Set rsTable = dbs.OpenRecordset("Cities", dbOpenTable)
'Open a dynaset-type Recordset using a saved query
Set rsQuery = dbs.OpenRecordset("Select * FROM Cities", dbOpenDynaset)
Set city.Recordset = rsQuery
'We created a recordset NOT filtered and set it to city.recordset and after that we focus on a different control to be sure that our city combobox work correctly
city.Requery
Kimlik.SetFocus
End Sub
Private Sub City_Click()
Dim dbs As DAO.Database
Dim rsTable As DAO.Recordset
Dim rsQuery As DAO.Recordset
Set dbs = CurrentDb
'Open a table-type Recordset
Set rsTable = dbs.OpenRecordset("Cities", dbOpenTable)
'Open a dynaset-type Recordset using a saved query
Set rsQuery = dbs.OpenRecordset("Select * FROM Cities WHERE Country='" + Country + "'", dbOpenDynaset)
'We created a recordset filtered and set it to city.recordset
Set city.Recordset = rsQuery
city.Requery
End Sub
编辑:对于那些想知道的人,显然不可能以连续形式为两个不同的记录设置相同的组合框,引用两个不同的查询来填充其列表。
我有一个可能有 5 条记录的连续表格。有一个组合框 Laborer1,它希望每个表单的下拉列表都不同,具体取决于其他一些因素。我设法将我想要的每个记录的组合框的确切查询作为该记录中的文本字段。你下一步怎么做?此时我所能管理的就是将一条记录的查询应用于所有组合框,但我希望每个组合框都使用其 "own" 查询。
谢谢!
是的,您可以这样做,但需要权衡:非活动记录的值可能不适合组合框的当前行源。发生这种情况时,您将得到一个空白的组合框,而不是让它显示当前值。如果激活记录,该值会再次出现,但用户体验不是很好。
也就是说,一种选择是在 Form_Current
事件中处理它。由于您已经将行源存储在数据库字段中,因此代码非常短:
Private Sub Form_Current
Laborer1.RowSource = ReferenceField.Value
Laborer1.Requery 'I don't believe you need this, but you might.
End Sub
我想我对连续表格有一个答案。当您单击组合框时,其他组合变为空白,但当您 select 时,一切看起来都很正常。
我用我的表工作,很抱歉有一个不同的例子..无论如何我认为这是一个答案..
我有 2 个组合框,当您使用 select 国家/地区时,城市组合仅显示 selected 国家/地区的城市。
此代码用于国家/地区组合
Private Sub Country_Change()
Dim dbs As DAO.Database
Dim rsTable As DAO.Recordset
Dim rsQuery As DAO.Recordset
Set dbs = CurrentDb
'Open a table-type Recordset
Set rsTable = dbs.OpenRecordset("Cities", dbOpenTable)
'Open a dynaset-type Recordset using a saved query
Set rsQuery = dbs.OpenRecordset("Select * FROM Cities WHERE Country='" + Country + "'", dbOpenDynaset)
'We created a recordset filtered and set it to city.recordset
Set city.Recordset = rsQuery
city.Requery
End Sub
而这 2 个子用于城市组合..
Private Sub City_Change()
Dim dbs As DAO.Database
Dim rsTable As DAO.Recordset
Dim rsQuery As DAO.Recordset
Set dbs = CurrentDb
'Open a table-type Recordset
Set rsTable = dbs.OpenRecordset("Cities", dbOpenTable)
'Open a dynaset-type Recordset using a saved query
Set rsQuery = dbs.OpenRecordset("Select * FROM Cities", dbOpenDynaset)
Set city.Recordset = rsQuery
'We created a recordset NOT filtered and set it to city.recordset and after that we focus on a different control to be sure that our city combobox work correctly
city.Requery
Kimlik.SetFocus
End Sub
Private Sub City_Click()
Dim dbs As DAO.Database
Dim rsTable As DAO.Recordset
Dim rsQuery As DAO.Recordset
Set dbs = CurrentDb
'Open a table-type Recordset
Set rsTable = dbs.OpenRecordset("Cities", dbOpenTable)
'Open a dynaset-type Recordset using a saved query
Set rsQuery = dbs.OpenRecordset("Select * FROM Cities WHERE Country='" + Country + "'", dbOpenDynaset)
'We created a recordset filtered and set it to city.recordset
Set city.Recordset = rsQuery
city.Requery
End Sub