impact74
Messages postés29Date d'inscriptionvendredi 17 juin 2005StatutMembreDernière intervention22 juin 2007
-
21 juin 2007 à 10:44
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 2018
-
23 juin 2007 à 11:40
Bonjour à toutes et à tous !!!
Voilà je dois développer un programme en "VB6" qui interroge un base de données Access.
Dans cette interrogation je doit récupérer la valeur MAX d'une ligne dans une table.
Je sais que DMax (en VBA) récupère bien la valeur maximum d'une ligne. Le seule souci c'est que je suis obligé d'utiliser VB6.
Donc, je souhaiterai savoir si il y a une fonction équivalente en VB6 (et pas VB7 ni VB.NET ou autre chose), de la fonction DMax qu'on utilise en VBA???
Si oui quel est cette fonction??
Si non est-t-il possible de créer une fonction équivalente?
PS : Je suis pas un expert en VB6 mais je me débrouille...
cs_Exploreur
Messages postés4821Date d'inscriptionlundi 11 novembre 2002StatutMembreDernière intervention15 novembre 201615 21 juin 2007 à 10:57
Salut,
Si tu utilises une requête SQL pour lire dans ta base, je te conseil de regarder : Count
Cela te permet entre autre de connaître la valeur : Min / Max / Sum / Avg .... Enfin tu peux faire plein de chose avec....
impact74
Messages postés29Date d'inscriptionvendredi 17 juin 2005StatutMembreDernière intervention22 juin 2007 21 juin 2007 à 11:48
Merci "jmfmarques" et "Exploreur" d'avoir répondu si rapidement...
J'ai donc regardé l'aide en ligne de VB6 pour la fonction MAX().
Corrigé moi si je me trompe ; cette fonction est utilisé dans une requête qui renvoie la valeur max dans un autre champ.
Ex :
' Renvoie les frais de port les plus élévés des commandes livrées au Royaume-Uni.
Set rst = dbs.OpenRecordset("SELECT " _
& " Max(Port)AS [Port élevé] " _
& "FROM Commandes WHERE [Pays livraison] =" & " 'Royaume-Uni';")
Moi ce que je veux c'est récupérer la valeur max dans une variable pour l'utiliser plus loin dans le code.
De plus, j'ai trouvé une fonction équivalente à DCount en VB6 qui me convient et que j'utilise dans mon code. J'appele cette fonction avec :
result DCount("[" & tranche & "]", "trancheWS", "[app] '" & apptrch & "' AND [Datecnx] = #" & FormDate & "#")
' Fonction DCount(VBA) en VB6 :
' Compter le nombre d'enregistrement (via un champ) d'une table avec un critère
Public Function DCount(ByVal sChamp$, ByVal sTable$, ByVal sCritere$) As Variant
' Variables
Dim m_bd As Database
Dim Rq As Variant
Dim sql
' Connexion à la base de données
Set m_bd = OpenDatabase(sDbRev)
'Selection des champs à compter
sql = "SELECT " & sChamp & " FROM " & sTable
' Vérification des critères et compte les champs selon critère
If sCritere <> "" Then sql = sql & " WHERE " & sCritere
Set Rq = m_bd.OpenRecordset(sql, dbOpenSnapshot)
If Rq.EOF Then
DCount = 0
Else
Rq.MoveLast
DCount = Rq.RecordCount
End If
Rq.Close
End Function
Je voudrai donc une fonction dans ce genre mais avec MAX. est-ce possible ???
et que font Max et Min (VB6) ?
"Returnthe
minimum or maximum of a set of values contained in a specified field on a query
".
et comment utilise-t-on Dmax (VBA) ?
DMax ( expression, domain, [criteria] )
expression is the field that you wish to find the maximum value for.domain is the set of records. This can be a table or a query name.
criteria is optional. It is the WHERE clause to apply to the domain.
et comment utilise-t-on Max en VB6 ?
Max(expr)
The expr placeholder represents a string expression identifying the field that contains the data you want to evaluate or an expression that performs a calculation using the data in that field. Operands in expr can include the name of a table field, a constant, or a function (which can be either intrinsic or user-defined but not one of the other SQL aggregate functions).
Euh.... kif kif...(du moins pour moi...)
Vous n’avez pas trouvé la réponse que vous recherchez ?
impact74
Messages postés29Date d'inscriptionvendredi 17 juin 2005StatutMembreDernière intervention22 juin 2007 22 juin 2007 à 13:10
Merci à tous pour vos réponses !!!
Je ne savais pas qu'on pouvait récupérer des données dans une variable comme ceci :
ValeurMax = rst![Port élevé] rien que cette ligne m'a permis de débloquer un certain nombre de pb.
Mais j'ai encore un petit souci...
La fonction MAX récupère bien la valeur maximum, mais par colonne (champ).
Moi
ce que je souhaite c'est, récupérer la valeur maximum d'une seule ligne et faire une boucle, afin de récupérer la valeur max de chaque ligne de
ma table...
Est-ce que c'est possible?...
Désolé si je n'ai pas été clair dans mes explications
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 23 juin 2007 à 11:40
Ce n'est pas vraiment clair...
C'est normal que MAX ne concerne qu'une seule colonne. Les valeurs des autres champs de cette ligne ne sont pas nécessairement des valeurs MAX elles aussi. Si tu recherches les valeurs MAX de différentes colonnes, tu te retrouveras éventuellement avec un conflit de lignes.
Soit tu fais plusieurs requêtes chacune portant sur sa propre colonne,
Soit tu fais fais une requête qui sort les lignes selon certains critères, puis tu boucles chaque enregistrement et emmagasine les valeurs MAX dans des variables (ou un tableau)
Je ne vois pas d'autres alternatives pour le moment...