Convertir fonction VBA DMax pour VB6

impact74 Messages postés 29 Date d'inscription vendredi 17 juin 2005 Statut Membre Dernière intervention 22 juin 2007 - 21 juin 2007 à 10:44
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 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...

Merci d'avance.
Salutations sincères.

7 réponses

jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
21 juin 2007 à 10:50
Bonjour,


 


Crois-tu que Max et Min sont très différents de Dmax et Dmin ?

Regarde à Max et à Min dans ton aide en ligne...
0
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
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....

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
0
impact74 Messages postés 29 Date d'inscription vendredi 17 juin 2005 Statut Membre Dernière intervention 22 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 ???
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
21 juin 2007 à 14:19
"Corrigez moi si je me trompe ; cette fonction est utilisée dans une requête qui renvoit la valeur max dans un autre champ. "


Oui ? et que fait Dmax ?http://www.techonthenet.com/access/functions/domain/dmax.php
"In Access, the DMax function returns the maximum value in a specified set of records
"

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...)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
22 juin 2007 à 00:25
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';")



En fait, ce n'est pas un autre champ, mais une étiquette temporaire
La valeur Max que tu cherches est donc
ValeurMax = rst![Port élevé]

Sous SQL, je sais qu'il existe aussi Top qui permet de rechercher plusieurs valeurs, comme les 5 plus grandes valeurs... Select Top 5 ...

MPi
0
impact74 Messages postés 29 Date d'inscription vendredi 17 juin 2005 Statut Membre Dernière intervention 22 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


Merci pour votre aide !!!

 
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
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...

MPi
0
Rejoignez-nous