2016-07-07 2 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) как CT от tblTargets, где 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

точка останова/CTRL-Break и строка –

+0

Установить rs = CurrentDb.OpenRecordset ("SELECT COUNT (*) AS CNT FROM tbltargets WHERE manager = '" & Combo26.Value & "' И просрочено = 'Просрочка'") –

Смежные вопросы