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

Access Discussion :

Récupérer des variables d'une fonction dans un code


Sujet :

Access

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Août 2006
    Messages : 78
    Points : 49
    Points
    49
    Par défaut Récupérer des variables d'une fonction dans un code
    Bonjour,

    je crois que le titre n'est pas très clair.

    En fait j'ai créé une fonction qui va chercher des valeurs dans une table et les stocke dans des variables.
    De retour dans ma procédure, je n'arrive pas à utiliser ces variables.

    Voici une partie du code réduit à l'essentiel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub Commande3_Click()
    
    SelectionBase2 (Modifiable34.Value)
    MsgBox PrefixeTable
    MsgBox Fournisseur
    
    End Sub
    Et ma fonction :
    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
    16
    17
    18
    19
    Public Function SelectionBase2(BaseChoisie As String)
    
    Dim rs As DAO.Recordset
    Dim db As Database
    Set db = Application.CurrentDb
    Set rs = db.OpenRecordset("Paramètres", dbOpenDynaset)
    Dim Critere As String
    Dim PrefixeTable As String
    Dim Fournisseur As String
    
    Critere = "[base]=" & "'" & BaseChoisie & "'"
    With rs
        .FindFirst Critere
        PrefixeTable = .Fields("prefixe_table")
        Fournisseur = .Fields("fournisseur")
    End With
    
    End Function
    Je suppose que c'est un problème de public ou private.
    Est-ce qu'il faut utiliser un module de classe ? Si oui je ne vois pas quoi y mettre.

    Merci d'avance.

  2. #2
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    29
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 29
    Points : 32
    Points
    32
    Par défaut
    bonjour,

    ton probleme viens de tes parenthèse apres le nom de la fonction: tu dois mettre dans ta parenthèse les paramètre en entrée mais aussi ceux que retourne ta foncion:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    Private Sub Commande3_Click()
     
    SelectionBase2 (Modifiable34.Value, sortie_variable1, sortie_variable2)
    MsgBox PrefixeTable
    MsgBox Fournisseur
     
    End Sub
    et pour la fonction:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    Public Function SelectionBase2(BaseChoisie As String, variable1 as string, 
    variable2 as string)
    je pense que ca t'aidera.



    cain

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    710
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 710
    Points : 847
    Points
    847
    Par défaut
    Salut,

    L'existance de tes variables est limité à la fonction SelectionBase2 : dés que cette fonction est finie, les variables sont "effacées".

    Tu peux :
    utiliser des variables globales ( )
    renvoyer une valeur comme résultat de ta fonction
    passer tes valeurs par référence

    Teste ça (exemple d'utilisation de variables par référence) :

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    Public Function SelectionBase2(ByVal BaseChoisie As String, ByRef Arg_PrefixeTable As String, ByRef Arg_Fournisseur As String)
     
    Dim rs As DAO.Recordset
    Dim db As Database
    Set db = Application.CurrentDb
    Set rs = db.OpenRecordset("Paramètres", dbOpenDynaset)
    Dim Critere As String
     
     
    Critere = "[base]=" & "'" & BaseChoisie & "'"
    With rs
        .FindFirst Critere
        Arg_PrefixeTable = .Fields("prefixe_table")
        Arg_Fournisseur = .Fields("fournisseur")
    End With
     
    End Function
    Private Sub Commande3_Click()
    Dim PrefixeTable As String
    Dim Fournisseur As String
     
    SelectionBase2 (Modifiable34.Value, PrefixeTable, Fournisseur)
    MsgBox PrefixeTable
    MsgBox Fournisseur
     
    End Sub
    A+

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Août 2006
    Messages : 78
    Points : 49
    Points
    49
    Par défaut
    Et il n'y a aucun autre moyen ?
    Parce qu'avec le temps il y aura bien une trentaine de paramètres et si je dois les entrer dans l'appel de ma fonction à chaque fois, je n'ai pas fini.
    De plus l'entrée est toujours la même, soit Modifiable34.value.

    C'est pour ça que j'aurais voulu l'exécuter en entier et ensuite récupérer simplement les résultats nécessaires.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Août 2006
    Messages : 78
    Points : 49
    Points
    49
    Par défaut
    Voilà j'ai trouvé.
    J'ai donc passé mes variables en global dans mon module.
    Et pour ma zone déroulante, je l'ai appelée avec le nom du formulaire.
    Du coup je n'ai plus qu'à exécuter ma fonction de la manière suivante :
    Tous les paramètres s'affectent dans mes variables et je peux les utiliser à loisir.

    Merci quand même de l'aide

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

Discussions similaires

  1. Réponses: 10
    Dernier message: 16/12/2012, 11h08
  2. [Débutant] Sortir des variables d'une fonction executée dans un callback
    Par jasdu95 dans le forum Interfaces Graphiques
    Réponses: 2
    Dernier message: 22/11/2010, 15h44
  3. récupérer les echo d'une fonction dans une variable
    Par CaviarNAS dans le forum Langage
    Réponses: 2
    Dernier message: 29/12/2009, 16h46
  4. Récupérer la variable d'une fonction JavaScript dans PHP
    Par Nix6800 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 18/11/2009, 15h13
  5. récupérer une variable d'une fonction dans une classe
    Par free_dom dans le forum Général Python
    Réponses: 20
    Dernier message: 08/07/2009, 12h35

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