2016-07-07 154 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'」) –

相關問題