Convertir fonction VBA DMax pour VB6

Signaler
Messages postés
29
Date d'inscription
vendredi 17 juin 2005
Statut
Membre
Dernière intervention
22 juin 2007
-
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
-
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

Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
27
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...
Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
14
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

 
Messages postés
29
Date d'inscription
vendredi 17 juin 2005
Statut
Membre
Dernière intervention
22 juin 2007

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 ???
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
27
"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...)
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
19
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
Messages postés
29
Date d'inscription
vendredi 17 juin 2005
Statut
Membre
Dernière intervention
22 juin 2007

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

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