#ms-access #vba #ms-access-2010 #dcount
#ms-access #vba #ms-access-2010 #dcount
Вопрос:
Я не получаю правильное значение для DCount
Таблица «Уроки»:
ID (auto) pk
InstructorID Как целое
число Weekof Как Дата
StudentID Как целое
число Статус как байт
Моя функция
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. Я видел разделитель # в некоторых примерах, но не смог найти ни одного документа по нему. Следовало бы продолжить. Большое спасибо.