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

WinDev Discussion :

Utiliser les résultats d'une requête dans le constructeur d'une classe ?


Sujet :

WinDev

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Avril 2011
    Messages : 49
    Points : 42
    Points
    42
    Par défaut Utiliser les résultats d'une requête dans le constructeur d'une classe ?
    Bonjour ,
    je souhaite construire une classe d'objets dont la source serait le fruit d'une requête exécutée par une procédure globale au projet .
    mais , que je déclare la variable requête parmi les variables globales au projet ou que je transforme cette requête en requête enregistrée , le constructeur n'y a pas accès .
    Une solution envisagée serait de recopier les résultat de ma requête dans une table , voyez vous une autre possibilité qui ne passerait pas par une table ?
    En vous remerciant de vos réponses
    Bonne journée
    TC

  2. #2
    Expert confirmé
    Avatar de Voroltinquo
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2017
    Messages
    2 807
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2017
    Messages : 2 807
    Points : 5 263
    Points
    5 263
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    Tu peux créer une classe mappée sur ta requête.
    Un FichierVersMémoire ou un FichierVersTableau fera l'affaire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    MMaClasse est Classe <Mapping REQ_MaRequête>
     
         PRIVE
              m_saMonMembre1 est chaine <Mapping Colonne1>
              m_nMonMembre2 est entier <Mapping Colonne2>
    FIN
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Constructeur()
     
    FichierVersMémoire(objet,REQ_MaRequête)
    Dans le cas d'un résultat "multiple" de la requête

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    CMaClasse2 est classe
         m_tabMesClasses et tableau de CMaClasse
    FIN
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Constructeur()
    FichierVersTableau(objet,REQ_MaRequête
    Dans ce cas de figure, le constructeur de CMaclasse est devenu inutile
    Il y a peut-être plus simple, mais ça tourne.
    Quand tout a échoué utilisez l'option RTFM

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Avril 2011
    Messages : 49
    Points : 42
    Points
    42
    Par défaut
    Bonjour,
    Merci de ta réponse .
    Le problème est que seule la déclaration a accès à la requête , qu'elle soit une requête enregistrée ou globale cela ne change rien
    ni les méthodes ni les propriétés de la classe n'y ont accès . il est impossible de s'y référer dans le constructeur.
    Et si l'on passe outre aux avertissements du compilateur on obtient une erreur fatale à l'instanciation d'un objet
    Nom : Capture d’écran (43).png
Affichages : 364
Taille : 31,4 Ko
    La requête source doit elle bénéficier d'une déclaration particulière ?
    Merci de ta réponse
    TC

  4. #4
    Expert confirmé
    Avatar de Voroltinquo
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2017
    Messages
    2 807
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2017
    Messages : 2 807
    Points : 5 263
    Points
    5 263
    Billets dans le blog
    1
    Par défaut
    Tu veux un seul enregistrement, il faut donc le rechercher dans la requête avant de l'affecter.
    Il faut passer la PK en paramètre.

    Par ailleurs, le premier membre de ta classe attend dans Mapping la nom d'une colonne et non celui de la requête (cela n'a rien à voir avec ton problème, mais c'est très gênant quand même)
    Il y a peut-être plus simple, mais ça tourne.
    Quand tout a échoué utilisez l'option RTFM

  5. #5
    Membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Avril 2011
    Messages : 49
    Points : 42
    Points
    42
    Par défaut
    Citation Envoyé par Voroltinquo Voir le message
    Tu veux un seul enregistrement, il faut donc le rechercher dans la requête avant de l'affecter.
    Il faut passer la PK en paramètre.
    Bonjour ,
    OK merci de ta réponse, désolé de ma réponse tardive , je n'avais pas vu ta contribution.
    Ma requête est une requête sélection et je n'envoie qu'un enregistrement . Maintenant ça fonctionne , ma classe a accès aux requêtes ce qui ne provoque plus d'erreur de compilation sans que je sache pourquoi mais ça tourne .
    Par ailleurs, le premier membre de ta classe attend dans Mapping la nom d'une colonne et non celui de la requête (cela n'a rien à voir avec ton problème, mais c'est très gênant quand même)
    Je saisis pas ce que tu veux dire ?
    ces lignes ont été générées automatiquement et je ne vois pas ce qui les différencie de l'exemple que tu donnes ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    MMaClasse est Classe <Mapping REQ_MaRequête>
     
         PRIVE
              m_saMonMembre1 est chaine <Mapping Colonne1>
              m_nMonMembre2 est entier <Mapping Colonne2>
    FIN
    Bonne journée TC

Discussions similaires

  1. Comment utiliser les résultats d'une requête ?
    Par campamsam dans le forum VBA Access
    Réponses: 10
    Dernier message: 13/08/2020, 15h30
  2. [AC-2010] Utiliser les résultats d'une requête dans VBA
    Par com689 dans le forum VBA Access
    Réponses: 15
    Dernier message: 26/04/2018, 23h16
  3. Réponses: 0
    Dernier message: 22/03/2012, 14h03
  4. Utiliser les résultats d'une sous-requête
    Par BBric dans le forum Requêtes
    Réponses: 6
    Dernier message: 22/04/2011, 01h19
  5. utiliser les attribut d'une classe dans une autre classe
    Par kaissaoui dans le forum Langage
    Réponses: 11
    Dernier message: 18/07/2007, 15h13

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