Accueil > > > LES FONCTIONS DCOUNT, DLOOKUP ET DSUM D'ACCESS EN VB6
LES FONCTIONS DCOUNT, DLOOKUP ET DSUM D'ACCESS EN VB6
Information sur la source
Description
Ce code est utile lors d'une migration d'Access vers VB6 (et donc aussi vers VB .Net) :
Source
- 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
Conclusion
Pour que ca marche, il suffit d'un Private m_bd As Database dans votre module et de l'initialiser, c'est tout !
Sources du même auteur
Sources de la même categorie
Commentaires et avis
|
Derniers Blogs
ASYNC/AWAIT: COMPRENDRE COMMENT CA MARCHEASYNC/AWAIT: COMPRENDRE COMMENT CA MARCHE par fathi
Tout le monde est unanime pour dire que la programmation multi-thread et asynchrone est en train de devenir un sujet incontournable. Beaucoup de choses sont arrivées avec le framework 4 pour le code parallèle (TPL, PLinq,.) et bientôt, on va avoir l...
Cliquez pour lire la suite de l'article par fathi PAS D'INTELLITRACE SUR MON SITE WEB DANS IIS !PAS D'INTELLITRACE SUR MON SITE WEB DANS IIS ! par Etienne Margraff
J'ai récemment eu un problème pour obtenir l'intelliTrace sur un site web dans IIS. Il n'y avait pas de message d'erreur, rien dans le journal d'évènement Windows, et après 3 appels à une voyante, 2 visites chez un marabou, j'ai failli me résign...
Cliquez pour lire la suite de l'article par Etienne Margraff OFFICE 365 - SHAREPOINT ONLINE, QUELQUES LIMITATIONSOFFICE 365 - SHAREPOINT ONLINE, QUELQUES LIMITATIONS par junarnoalg
De nombreuses entreprises font le choix de SharePoint Online, service fourni au travers de l'offre de Microsoft Office 365. S'il est vrai que ce choix apporte un grand nombre d'avantages; rapidité de mise en œuvre, disponibilité, large couvertu...
Cliquez pour lire la suite de l'article par junarnoalg PRéSENTATION DES API REST DE WINDOWS AZURE : LISTER LES COMPTES DE STORAGEPRéSENTATION DES API REST DE WINDOWS AZURE : LISTER LES COMPTES DE STORAGE par richardc
http://www.c2idotnet.com/articles/presentation-des-api-rest-de-windows-azure-lister-les-comptes-de-storage
Désolé pour "toto", mais c2i existait avant blogs.developpeur.org et c'est mon site "officiel" ;-) ...
Cliquez pour lire la suite de l'article par richardc
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|