2016-07-07 155 views
0

我希望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。” ......

我也有类似的代码的作品,所以我不确定为什么上述是导致错误,任何人都可以帮助?

谢谢

+0

什么是Me.Combo26.Column(0)的错误? DCOUNT的代码或'select count(advisor)'作为来自tblTargets的CT,其中manager ='xyz'和overdue ='overdue'' –

+0

感谢help.combo 26设置为表中管理者的姓名发生错误。 –

回答

0

检查这样

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 
  1. 使用的combobox.value代替combobox.column
  2. 改变了SQL来COUNT(*),并相应地调整代码来完善perfs。
  3. 增加对NULL值的一些保护(你应该在这个子添加一个错误处理程序)
+0

谢谢托马斯,我刚刚给了这个去,但得到相同的“太少参数,预计1”的错误。 –

+0

breakpoint/CTRL-Break并给出行 –

+0

Set rs = CurrentDb.OpenRecordset(“SELECT COUNT(*)AS CNT FROM tbltargets WHERE manager ='”&Combo26.Value&“'AND overdue ='Overdue'”) –

相关问题