我想根据表单上的两个参数(组合框和文本框)过滤子表单。
我有一个带有combobox cboTimePeriod的表单,它显示来自表TimePeriod的数据(例如TimePeriod =“10.01.2018-10.02.2018”; ID = 12)。
Combobox数据:
Data Row source = SELECT [tblTimePeriod]。[TimePeriod],[tblTimePeriod]。[ID] FROM tblTimePeriod ORDER BY [TimePeriod];
数据绑定列= 2(绑定到ID)
格式列计数= 1(显示TimePeriod的文本值) 格式列表宽度= 2,54cm
我也有一些关于城市的cbobuttons,所以当我按下一个名为" Boston"的按钮时,TextBox txtCity显示为“波士顿”。
我想要的是当我选择时间段(cboTimePeriod)时,必须根据这两个参数(在文本框中选择TimePeriod AND City)过滤子表单。
正如您可能猜到的那样,它不起作用。
我尝试了几个代码,这是我使用过的代码:
' How do I filter an Access subform with multiple combo boxes in the form?
这是我的实现,但不起作用:
Dim strWhere As String
If Nz(Me.cboTimePeriod, "") <> "" Then
strWhere = strWhere & "[TimePeriodID] = '" & Trim(Me. cboTimePeriod) & " ' AND "
End If
If Nz(Me.txtSelectedCity, "") <> "" Then
strWhere = strWhere & "[CityName] = '" & Trim(Me. txtSelectedCity) & " ' AND "
End If
If strWhere <> "" Then
strWhere = Left(strWhere, Len(strWhere) - 5)
Me.qry_SomeData_subform.Form.Filter = strWhere 'after this line, function exits the code
Me.qry_ SomeData_subform.Form.FilterOn = True
Else
Me.qry_ SomeData_subform.Form.Filter = ""
Me.qry_ SomeData_subform.Form.FilterOn = False
End If
strWhere给出了这个:
strWhere = "[TimePreriodID] = '12 ' AND [CityName] = 'Boston '"
在使用过滤器后,在子表单上&#34; Unfiltered&#34;更改为&#34;已过滤&#34;,但数据没有变化。
感谢任何帮助。
答案 0 :(得分:0)
我猜TimePeriod是数字,因此(并修正空格):
strWhere = strWhere & "[TimePeriodID] = " & Me!cboTimePeriod.Value & " AND "
和
strWhere = strWhere & "[CityName] = '" & Trim(Me!txtSelectedCity.Value) & "' AND "
修改强>: 要查找另一列,请在此处填写第二列:
strWhere = strWhere & "[CityName] = '" & Trim(Me!txtSelectedCity.Column(1)) & "' AND "