Ce code est utile lors d'une migration d'Access vers VB6 (et donc aussi vers VB .Net) :
Source / Exemple :
Public Function DLookup(ByVal sChamp$, ByVal sTable$, ByVal sCritere$) As Variant
' Implementation de la fonction DLookup d'Access en VB6 :
' Relever la valeur d'un champ d'une table avec un critère
' si la table et le critère sont inchangés depuis le dernier appel,
' une bufférisation permet de gagner du temps !
Static sMemRq$, asChamps$(), avVal() As Variant
Dim iNbChamps%, i%
If sTable & sCritere = sMemRq Then
iNbChamps = UBound(asChamps)
For i = 0 To iNbChamps - 1
If asChamps(i) = sChamp Then
DLookup = avVal(i)
Exit Function
End If
Next i
Stop
End If
Dim Rq As DAO.Recordset
Set Rq = m_bd.OpenRecordset(sTable, dbOpenSnapshot)
Rq.FindFirst sCritere
If Rq.NoMatch Then
DLookup = Null
Else
DLookup = Rq(sChamp).Value
iNbChamps = Rq.Fields.Count
ReDim asChamps(iNbChamps)
ReDim avVal(iNbChamps)
For i = 0 To iNbChamps - 1
asChamps(i) = Rq.Fields(i).Name
avVal(i) = Rq.Fields(i).Value
Next i
sMemRq = sTable & sCritere
End If
Rq.Close
End Function
Public Function DSum(ByVal sChamp$, ByVal sTable$, ByVal sCritere$) As Variant
' Implementation de la fonction DSum d'Access en VB6 :
' faire un cumul d'un champ d'une table avec un critère
Dim Rq As DAO.Recordset, sSQL$
sSQL = "SELECT Sum(" & sChamp & ") AS SommeDeChamp FROM " & sTable
If sCritere <> "" Then sSQL = sSQL & " WHERE " & sCritere
Set Rq = m_bd.OpenRecordset(sSQL, dbOpenSnapshot)
If Rq.EOF Then
DSum = Null
Else
DSum = Rq.Fields(0).Value
End If
Rq.Close
End Function
Public Function DCount(ByVal sChamp$, ByVal sTable$, ByVal sCritere$) As Variant
' Implementation de la fonction DCount d'Access en VB6 :
' Compter le nombre d'enregistrement (via un champ) d'une table avec un critère
Dim Rq As DAO.Recordset, sSQL$
sSQL = "SELECT " & sChamp & " FROM " & sTable
If sCritere <> "" Then sSQL = sSQL & " WHERE " & sCritere
Set Rq = m_bd.OpenRecordset(sSQL, dbOpenSnapshot)
If Rq.EOF Then
DCount = 0
Else
Rq.MoveLast
DCount = Rq.RecordCount
End If
Rq.Close
End Function
Conclusion :
Pour que ca marche, il suffit d'un Private m_bd As Database dans votre module et de l'initialiser, c'est tout !
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.