- 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
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