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 :

Utilisation de recordset dans une Public Sub


Sujet :

Access

  1. #1
    Membre régulier
    Inscrit en
    Avril 2007
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 335
    Points : 112
    Points
    112
    Par défaut Utilisation de recordset dans une Public Sub
    Bonjour,

    Je n'arrive pas à utiliser un recordset défini dans le module d'un formulaire, dans une public sub.
    Pour etre plus précis, je définis un recordset au moment du chargement d'un formulaire, ce recordset me sert à récupérer des résultats d'une table. Ensuite je fais un publipostage et j'ai mis cette fonction de publipostage dans un module indépendant (car j'ai besoir de cette fonction depuis plusieurs form), le premier c'est que dans ce module, il ne semble pas reconnaitre le recordset.
    Auriez vous une idée de comment faire ?

    Merci d'avance.

  2. #2
    Rédacteur
    Avatar de eclesia
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    2 108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 108
    Points : 3 203
    Points
    3 203
    Par défaut
    montre le code sinon on n'a pas beaucoup de chance de deviner l'erreur.

  3. #3
    Membre régulier
    Inscrit en
    Avril 2007
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 335
    Points : 112
    Points
    112
    Par défaut
    J'ai plus ou moins réussi à résoudre mon problème de recordset en le redéclarant dans le module. Maintenant en fait j'ai un peu le même problème, je déclare une variable en tant que formulaire, je lui attribue une valeur et quand j'arrive dans ma fontion, il perd la valeur attribuée. C'est en fait le même problème transposé à l'utilisation de variable.
    Le code (le début) de ma fonction est (dans un module indépendant):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Public Sub publipostage()
     
    Dim listres As String
        listres = "SELECT ResID, ReportID, QuestID, Comments, Status, Quote, pic1, pic2, pic3, pic4, OrderID FROM RESULTS WHERE ReportID = " & formulaire2.ReportID & " ORDER BY ResID "
        Set listresrs = db.OpenRecordset(listres, DB_OPEN_SNAPSHOT)
    et le code qui fait appel à cette fonction (dans le module du formulaire):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Private Sub publi_Click()
     
    Set formulaire2 = Form_ModifResults
    Set formulaire = Form_ReportInfo
     
    publipostage
    Et donc lorsqu'il arrive à la dernière ligne du premier bout de code j'ai une erreur me disant qu'une variable n'a pas été attribuée.

  4. #4
    Membre régulier
    Inscrit en
    Avril 2007
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 335
    Points : 112
    Points
    112
    Par défaut
    Même si j'attribue le nom du formulaire à la variable donc le module publipostage, il ne me reconnait pas "formulaire2.ReportID".

  5. #5
    Membre régulier
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Octobre 2005
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2005
    Messages : 93
    Points : 90
    Points
    90
    Par défaut Conservation de la valeur d'une variable
    Bonjour,

    Ne devrais-tu pas déclarer ta variable comme globale afin qu'elle soit connue de tous les modules de formulaires ?

    Bout de code à placer dans le module indépendant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    'Déclaration des variables
    Global #Nomvariable# As #Type variable#

  6. #6
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    La variable Formulaire2 est a passer en paramètre à la Sub du module sans quoi il ne peut pas la connaitre puisqu'elle n'est pas dans sa portée. La déclarer en Global peut régler ton problème mais c'est très sale et très gourmand en ressources.

  7. #7
    Membre régulier
    Inscrit en
    Avril 2007
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 335
    Points : 112
    Points
    112
    Par défaut
    Merci pour vos réponses, je ne pensais pas que j'étais obligé de passer toutes les variables en paramètres, c'est bien domage.

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

Discussions similaires

  1. [AC-2013] remplacer le nom d'un formulaire par une variable dans un Public Sub
    Par GuyDuLac dans le forum VBA Access
    Réponses: 2
    Dernier message: 24/10/2014, 17h23
  2. [AC-2003] Comment utiliser une variable issue d'un recordset dans une requète SQL
    Par alainwilly dans le forum Access
    Réponses: 1
    Dernier message: 23/03/2012, 20h12
  3. Réponses: 2
    Dernier message: 07/08/2007, 09h35
  4. Utilisation de MAX dans une requête SQL
    Par Evil onE dans le forum Langage SQL
    Réponses: 7
    Dernier message: 15/06/2004, 18h38
  5. Réponses: 3
    Dernier message: 11/03/2004, 10h58

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