DCount не находит совпадающих записей в Access

#ms-access #vba #ms-access-2010 #dcount

#ms-access #vba #ms-access-2010 #dcount

Вопрос:

Я не получаю правильное значение для DCount

Таблица «Уроки»:
ID (auto) pk
InstructorID Как целое
число Weekof Как Дата
StudentID Как целое
число Статус как байт

3 записи

Моя функция

 Public Function NoRecordsFound(ByVal instructorid As Integer, ByVal weekof As Date, studentid As Integer) As Integer

    Dim strCriteria As String
    strCriteria = "Lessons.[InstructorID] = " amp; instructorid amp; " AND Lessons.[WeekOf] = " amp; weekof amp; " AND Lessons.[StudentID] = " amp; studentid

    NoRecordsFound = DCount("*", "Lessons", strCriteria)
End Function
  

Функция вызывается из непосредственного окна следующим образом:

  :Debug.Print(NoRecordsFound(5, DateValue("10/3/2016"), 17043))
  

Следующий оператор select возвращает правильное количество записей (должно быть 1).:

 SELECT Lessons.[ID], Lessons.[InstructorID], Lessons.[WeekOf], Lessons.[StudentID], Lessons.[Status]
FROM Lessons
WHERE (((Lessons.[InstructorID])=5) AND ((Lessons.[WeekOf])=DateValue("10/3/2016")) AND ((Lessons.[StudentID])=17043));
  

Может ли кто-нибудь помочь определить ошибку в моем выражении DCount?

Ответ №1:

При создании строкового аргумента для критериев вам необходимо разграничить значение даты хэш-метками ( # ). Кроме того, в целях безопасности он должен быть отформатирован как однозначная yyyy-mm-dd строка даты:

 strCriteria = "Lessons.[InstructorID] = " amp; instructorid amp; " " amp; _
        "AND Lessons.[WeekOf] = #" amp; Format(weekof, "yyyy-mm-dd") amp; "# " amp; _
        "AND Lessons.[StudentID] = " amp; studentid
  

Комментарии:

1. Я видел разделитель # в некоторых примерах, но не смог найти ни одного документа по нему. Следовало бы продолжить. Большое спасибо.