ACCESSO / VBA: non può ottenere Dcount per funzionare correttamente
-
15-10-2019 - |
Domanda
qui è una porzione di codice che sto usando per abilitare il tasto / a disabilitare (che permette di creare una nuova revisione) a seconda del risultato.
Se le DB.CONTA.NUMERI restituisce 0, significa che la revisione successiva non esiste ancora (e quindi possono essere creati) se i DB.CONTA.NUMERI restituisce 1, significa che esiste già la prossima revisione (e quindi il tasto sarà disattivato)
DCount("index_rit", "t_données_rit", "[RITn°]=" & Me.RITn°.Value & " AND [Revision]=" & Me.Revision.Value + 1)
Il mio problema è che per qualche motivo, anche se un record corrisponde ai valori inseriti nel DCount, restituisce ancora 0.
Ho provato sia con la formica senza il [] per i campi.
Ho anche provato ad utilizzare * invece di index_rit ...
Quello che ho ricevuto sbagliato?
Soluzione
ottenuto. si trattava di un problema di formato: RITn ° è della forma xx-xx, così ho dovuto mettere in questo modo:
"[RITn°]='" & Me.RITn°.Value & "' AND [Revision]=" & Me.Revision.Value + 1)
(aggiunge le virgolette singole)
Altri suggerimenti
Per prima cosa è che il DCount (e altre funzioni ‘D’) sono generalmente considerati di essere un po 'una seccatura prestazioni. Provare a sostituire con questa funzione rapida. Basta passarlo una query e restituirà il record count
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
Questo utilizza ADO, ma potrebbe / dovrebbe utilizzare DAO se si sta solo utilizzando le tabelle di Access, ma questa è un'altra questione per un'altra volta!