【发布时间】:2012-02-13 19:38:13
【问题描述】:
这是我的问题:
我正在使用 MS-Access 2010。我有一个表单,其中有一个为员工姓名和员工 ID 保留的列表框,下面有 2 个命令按钮。一键显示我所有的员工。另一个打开一个带有过滤条件的模态表单。在这个模型表单中,我有另一个具有不同 HR 类别的列表框(启用了多选)。
我正在尝试做的是:打开我的模态表单,在我的列表框中选择一个或多个这些 HR 类别,单击一个命令按钮,然后关闭模态表单并根据我拥有的某些标准更新员工列表框选择。
在此先感谢您的帮助。这让我有点发疯:-)
下面是我更新后的代码。
Private Sub cmd_ExecuteEmpFilter_Click()
Dim varItem As String
Dim i As Variant
Dim strSql As String
'Building the criteria string from selected items in the list box
varItem = ""
For Each i In Me!lst_HRFilter.ItemsSelected
If varItem <> "" Then
varItem = varItem & " , "
End If
varItem = varItem & Me!lst_HRFilter.ItemData(i) & ""
Next i
'Filter the form using selected items inside the list box
txt_HRCat = varItem
strSql = "SELECT DISTINCT q.LastName, q.FirstName, q.EmployeeID " & _
"FROM qry_MasterEmployeeFilter As q " & _
"WHERE q.HomeTeamID=" & Me.txt_TeamID2 & _
"AND q.ReportingGroupID IN (" & varItem & ") " & _
"ORDER BY q.[LastName], q.[FirstName], q.[EmployeeID];"
Debug.Print strSql
Forms!frm_Employee_Updater.lst_AllEmps.RowSource = strSql
DoCmd.Close acForm, "frm_EmployeeFilter", acSaveYes
End Sub
【问题讨论】:
-
还有什么问题?为什么它不起作用?您是否尝试在代码中设置断点并查看您正在构建的查询是否符合您的预期?尝试将查询放在 SQL 视图中的空查询中并尝试执行它。可能你会看得更清楚。
-
qry_MasterEmployeeFilter.dbo_T_ReportingGroup.ReportingGroupID是什么? -
当我单击命令按钮时,我的模式表单关闭,但我的员工列表根本没有填充。我尝试了您使用空 SQL 视图查询的建议并收到以下错误:“此表达式键入错误或太复杂而无法计算。例如,数字表达式可能包含太多复杂元素”
-
@HansUp - 该字段是我的主要员工查询中的 HR CategoryID。此查询与各种表有多个连接,包括包含我的 HR ID 的 ReportingGroup 表。
-
删除之前的空格 AND 删除了 TeamID 后面的障碍。查看 Immediate 窗口,TeamID 正在正确注册,但 ReportingGroupID 选择仍未启动。 ...WHERE q.HomeTeamID=3 AND q.ReportingGroupID IN () ORDER BY q.[LastName], q.[FirstName], q.[EmployeeID];