Access/vba: не могу получить Dcount правильно работать
-
15-10-2019 - |
Вопрос
Вот часть кода, которую я использую, чтобы включить/отключить кнопку (которая позволяет создать новую редакцию) в зависимости от результата.
Если DCOUNT возвращает 0, это означает, что следующее пересмотр еще не существует (и, следовательно, может быть создан), если DCOUNT возвращает 1, это означает, что следующая редакция уже существует (и, следовательно, кнопка будет отключена)
DCount("index_rit", "t_données_rit", "[RITn°]=" & Me.RITn°.Value & " AND [Revision]=" & Me.Revision.Value + 1)
Моя проблема в том, что по какой -то причине, даже если запись соответствует значениям, введенным в DCOUNT, она все еще возвращает 0.
Я попробовал оба с муравей без [] для полей.
Я также пытался использовать * вместо index_rit ...
Что я ошибся?
Решение
понятно. Это была проблема в формате: Ritn ° имеет форму xx-xx, поэтому мне пришлось так сказать:
"[RITn°]='" & Me.RITn°.Value & "' AND [Revision]=" & Me.Revision.Value + 1)
(Добавлены единые кавычки)
Другие советы
Первое, что DCOUNT (и другие функции D '), как правило, считаются чем -то вроде сопротивления производительности. Попробуйте заменить его на эту быструю функцию. Вы просто передаете ему запрос, и он вернет количество записей
Private Function GetRecordCount(strSearch as String) as Long
Dim rst As ADODB.Recordset
Dim RecCount As Long
Set rst = New ADODB.Recordset
With rst
.ActiveConnection = CodeProject.Connection
.CursorType = adOpenForwardOnly
.LockType = adLockReadOnly
.Source = strSearch
.Open Options:=adCmdText
if .EOF = true then
RecCount=0
else
RecCount=.Collect(0)
End If
.Close
End With
GetRecordCount = RecCount
Set rst = Nothing
End Function
Это использует ADO, но может/должен использовать DAO, если вы просто используете таблицы доступа, но это еще один вопрос для другого времени!