IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

Comment récupérer 2 résultats avec 1 fonction ? [AC-2007]


Sujet :

VBA Access

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    686
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 686
    Par défaut Comment récupérer 2 résultats avec 1 fonction ?
    Bonjour,
    j'ai une fonction qui permet de trouver un prix en fonction d'une qté.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PRIXQUANTITATIF = PRIXSELONQTE(QTESQL, TOTALQTEGRP, ARTICLESQL)
    La fonction PRIXSELONQTE lance une requête SQL et des tests selon les résultats de cette requête.

    Je voudrais 'profiter' de cette requête pour récupérer en même temps une info d'un champ texte.

    Mais je n'arrive pas à trouver d'exemple de fonction renvoyant plusieurs valeurs sur le Net.

    Mon but est d'éviter au maximum de lancer 2 fois ma requête car elle est un peu couteuse en temps.

    Merci pour votre aide

  2. #2
    Membre confirmé
    Inscrit en
    Août 2010
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 16
    Par défaut
    Bonjour tibofo,

    Pour ma part quand je cherche à récupérer plusieurs valeurs d'un coup , je concatène dans une variable les 2 valeurs.

    Par exemple dans ton cas , je suppose que les 2 réponses sont de longueur variable 1 chiffre et une chaine.
    Donc la réponse "PRIXQUANTITATIF" et "PRIXSELONQTE" doivent être de type string.
    et je sépare les 2 informations par caractères 'remarquable' ... genre "=" , "/" , "-" ou n'importe quel autre.
    Après l'appel de la fonction , je teste la variable pour trouver la position du caractère 'remarquable' (par ex: "=")
    Tu connais la longueur de "PRIXQUANTITATIF" et la position de "=" tu sais en déduire les valeurs intéressantes.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    dim i as long
    dim reponse as string
    dim PRIXQUANTITATIF as double
    dim info as string
     
    reponse = PRIXSELONQTE(QTESQL, TOTALQTEGRP, ARTICLESQL)
    ' On suppose reponse contient "prix" & "=" & "info"
     
    for i = 1 to len(reponse)
       If mid$(reponse, i, 1) = "=" then
           PRIXQUANTITATIF = CDbl ( left$ ( reponse , i-1 )
           info = right$ ( reponse, len(reponse) - i)
           Exit for
       End if
    Next i
    et hop, tu récupères 2 valeurs dans une variable.

    En espérant que ça te corresponde.

    Olivier

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    686
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 686
    Par défaut
    Astuce ingénieuse !! Merci

    J'ai trouvé aussi ce code qui est déroutant de facilité :
    j'ajoute une valeur dans mon appel : COLONNEPRIX
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PRIXQUANTITATIF = PRIXSELONQTE(QTESQL, TOTALQTEGRP, ARTICLESQL, COLONNEPRIX)
    et dans la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Function PRIXSELONQTE(ByVal QTESQL As Long, ByVal TOTALQTEGRP As Long, ByVal ARTICLESQL As String, ByRef COLONNEPRIX As String) As Long
    ' XXXX MES CALCULS
    ' puis je force :
    COLONNEPRIX="mon information"
    Et cela marche !!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 03/05/2012, 19h02
  2. Réponses: 2
    Dernier message: 27/08/2007, 14h11
  3. Réponses: 6
    Dernier message: 08/06/2006, 11h07
  4. Réponses: 3
    Dernier message: 19/04/2006, 14h28
  5. Réponses: 3
    Dernier message: 24/03/2006, 14h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo