ACCESO / VBA: no puede conseguir que funcione correctamente Dcount
-
15-10-2019 - |
Pregunta
aquí hay una porción de código que estoy usando para activar / desactivar el botón A (que permite crear una nueva revisión) dependiendo del resultado.
Si los DCOUNT devuelve 0, significa que la próxima revisión aún no existe (y por lo tanto pueden ser creados) si los DCOUNT devuelve 1, significa que ya existe la próxima revisión (y por lo tanto el botón estará desactivado)
DCount("index_rit", "t_données_rit", "[RITn°]=" & Me.RITn°.Value & " AND [Revision]=" & Me.Revision.Value + 1)
Mi problema es que, por alguna razón, incluso si un registro corresponde a los valores introducidos en el Dcount, todavía devuelve 0.
He intentado tanto con la hormiga sin el [] para los campos.
También he intentado usar * en lugar de index_rit ...
¿Qué obtuve mal?
Solución
consiguió. que era un problema de formato: RITn ° es de la forma xx-xx, así que tuve que ponerlo de esta manera:
"[RITn°]='" & Me.RITn°.Value & "' AND [Revision]=" & Me.Revision.Value + 1)
(añadido las comillas simples)
Otros consejos
Lo primero es que el DCont (y otras funciones ‘D’) se consideran generalmente que es un poco de una lata rendimiento. Intente reemplazarlo con esta función rápida. Usted sólo tiene que pasar que una consulta y ha de devolver el número de registros
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
Esto utiliza ADO, pero podría / debería utilizar DAO si usted está usando tablas de acceso pero eso es otra cuestión para otro momento!