MS ACCESS根据多个条件从表格中计数记录
我希望Access中的文本框更新时发现管理员在表中有一个“过期”记录的记录数取决于在组合框中选择的管理器,我有以下的代码,但我得到一个错误:当我从下拉框中选择一个选项MS ACCESS根据多个条件从表格中计数记录
Private Sub Combo26_AfterUpdate()
Dim rs As DAO.Recordset
Set rs = CurrentDb.OpenRecordset("SELECT Advisor FROM tbltargets WHERE manager = '" & Me.Combo26.Column(0) & "' AND overdue = 'Overdue'")
If rs.EOF Then
Me.Text35 = 0
MsgBox "no overdue records", vbOKOnly
Else
rs.MoveLast
Me.Text35 = rs.RecordCount
rs.Close
End If
End Sub
它给了我一个错误“太少参数预期的1。” ......
我也有类似的代码的作品,所以我不确定为什么上述是导致错误,任何人都可以帮助?
谢谢
检查这样
Private Sub Combo26_AfterUpdate()
Dim rs As DAO.Recordset
If IsNull(Combo26.value) Then Exit Sub
Set rs = CurrentDb.OpenRecordset("SELECT COUNT(*) AS CNT FROM tbltargets WHERE manager = '" & Combo26.value & "' AND overdue = 'Overdue'")
If Not rs.BOF Then
If Nz(rs!CNT, 0) = 0 Then
Me.Text35 = 0
MsgBox "no overdue records", vbOKOnly
Else
Me.Text35 = rs!CNT
End If
End If
End Sub
- 使用的
combobox.value
代替combobox.column
- 改变了SQL来
COUNT(*)
,并相应地调整代码来完善perfs。 - 增加对NULL值的一些保护(你应该在这个子添加一个错误处理程序)
谢谢托马斯,我刚刚给了这个去,但得到相同的“太少参数,预计1”的错误。 –
breakpoint/CTRL-Break并给出行 –
Set rs = CurrentDb.OpenRecordset(“SELECT COUNT(*)AS CNT FROM tbltargets WHERE manager ='”&Combo26.Value&“'AND overdue ='Overdue'”) –
什么是Me.Combo26.Column(0)的错误? DCOUNT的代码或'select count(advisor)'作为来自tblTargets的CT,其中manager ='xyz'和overdue ='overdue'' –
感谢help.combo 26设置为表中管理者的姓名发生错误。 –