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

C# Discussion :

Accès au formulaire ouvert depuis une classe


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Homme Profil pro
    Développeur
    Inscrit en
    Juin 2006
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juin 2006
    Messages : 645
    Par défaut Accès au formulaire ouvert depuis une classe
    [09/07/2007 - suppression des pièces jointes]

    Bonjour,

    (mon message est un peu long, je mets des titres)

    Généralités
    je suis actuellement en train de réaliser une application qui va schématiquement réaliser les opérations suivantes :
    1. l'utilisateur entre les clés primaires d'une table (BdD) ;
    2. l'application se connecte à la base et recupère tous les champs de la ligne correspondant à la clé ;
    3. ces données récupérées sont utilisées pour remplir les contrôles restant du formulaire (j'ai 25 contrôles "texte") ;
    4. l'utilisateur modifie certaines de ces valeurs et renvoie celles-ci pour générer automatiquement une requête (pas pour l'exécuter).
    Puisqu'il y a un certain nombre de requêtes SQL dans mon application (plus de 10), je les ai isolées dans une classe (on l'appellera clsAffaire).

    Problème
    Lorsqu'il n'y a pas besoin de retour, tout se passe bien, mais dans le cas détaillé ci-dessus, je ne vois pas comment modifier la propriété "Text" des contrôles de mon formulaire à partir de la classe.

    Si cela change quelque chose : ce n'est pas le formulaire principal de l'application.

    Pistes
    J'avais dans l'idée d'utiliser la propriété "public", mais je ne vois pas où définir mon formulaire pour pouvoir l'utiliser.
    Au clic sur le bouton, j'ai une erreur :Terme d'expression non valide 'public'.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public void mnuiAffaire_Click(object sender, System.EventArgs e)
    {
      public frmAffaire fAffaire = new frmAffaire();
         formAffaire.Show();
    }
    En désespoir de cause, j'avais même tenté de redéfinir le formulaire depuis la classe, mais comme prévu, ça en créé un nouveau... donc pas moyen de modifier les champs de l'actuel.

    Merci d'avance pour votre aide !

    Alban

    PS : l'utilisation d'un DataGrid ne correspond pas à ce que je veux faire.

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 764
    Par défaut
    J'ai compris (je crois) la partie "généralités".
    Par contre je n'ai pas du tout compris ton problème
    Je n'ai pas compris ce que tu entends par "lorsqu'il n'y a pas besoin de retour"
    Je n'ai pas compris sur quel champ tu avais essayé d'appliquer le mot-clé public
    Je n'ai pas compris ce que tu entends par "redéfinir le formulaire depuis la classe" (quelle classe d'ailleurs ?)



    Tu as récupéré des données.
    Tu les affiches dans un formulaire.
    Au clic sur un bouton, tu veux afficher un deuxième formulaire. MAIS tu ne sais plus comment accéder à tes données pour les afficher.
    C'est bien ça ?

    Si c'est ça :
    => comment sont "stockées" tes données après récupération dans la base ?

    Hypothèse :
    J'*imagine* (mais vu les infos que tu donnes c'est difficile à savoir...) que tu récupères tes données dans un DataReader, que tu remplis les contrôles de ton formulaire principal, que tu fermes ton DataReader. Puis que tu ne sais pas comment ré-accéder aux données depuis un autre formulaire puique les contrôles sont private.
    Deux solutions :
    - construire dans le formulaire principal des propriétés publiques qui reflètent le contenu des contrôles
    - définir pour le 2ème formulaire un constructeur qui prend en argument les données que tu veux y afficher

    Si ça n'a rien à voir, essaie de mieux préciser ton problème

  3. #3
    Membre chevronné
    Homme Profil pro
    Développeur
    Inscrit en
    Juin 2006
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juin 2006
    Messages : 645
    Par défaut
    Bon, je la refais en essayant d'être plus clair

    En fait :
    • j'ouvre un formulaire F depuis le formulaire principal (qui n'est pas fermé) ;
    • je ne m'occupe plus du principal, je ne considère plus QUE F ;
    • dans F, je rentre les champs 1, 2 et 3 par exemple (clé primaire de la table) ;
    • j'appuie sur un bouton, ça appelle la classe C qui contient une procédure qui exécute une requête (select) sur la base en fonction de ces trois champs.
    Jusqu'ici, ça va : c'est déjà fait.

    Ce que je cherche maintenant, c'est que les variables récupérées depuis la procédure de C soient "renvoyées" vers les textbox de F (champs 4 à 25).
    Je n'ai rien d'imposé pour faire ça... donc la meilleure méthode sera la plus simple


    Pendant que j'écris tout ça, j'ai une idée...
    Une procédure peut renvoyer plusieurs valeurs ? (return A, B, C, ... , Z; )
    Je vais regarder ça. Si oui, j'ai fini
    Schématiquement, je pense à ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     format(?) XXX = clsMaClasse.Resulalrequete(par1,par2,par3);
    textbox4.text = XXX[1];
    textbox5.text = XXX[2];
    ...
    textbox25.text = XXX[21];
    Ca sera l'occasion de faire mon premier tableau en C#...

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 764
    Par défaut
    Ce que je cherche maintenant, c'est que les variables récupérées depuis la procédure de C soient "renvoyées" vers les textbox de F (champs 4 à 25).
    Ouh lààà j'avions pas compris ça... Ma foi c'est pas bien compliqué.

    Exécuter la requête avec un objet Command et la méthode ExecuteReader().
    Récupérer le résultat de la requête dans un DataReader.
    Traiter le contenu du DataReader...

    Tutos sur les objets Command et DataReader , dans la partie ".NET et les bases de données".

  5. #5
    Membre chevronné
    Homme Profil pro
    Développeur
    Inscrit en
    Juin 2006
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juin 2006
    Messages : 645
    Par défaut
    Ma foi c'est pas bien compliqué.
    Ouf

    Merci pour le lien, je regarde ça... mais j'ai l'impression que ce n'est pas ce que je cherche (je sens que je vais me faire taper dessus).

    La récupération des données depuis la base, c'est fait.
    Elles sont stockées dans des variables (string) définies dans ma classe.

    Maintenant, ce que je veux, c'est que ces variables contenues dans la classe soient affectées aux propriétés "text" des textbox du formulaire.

    C'est peut-être là que je n'ai pas été assez précis : ma classe n'est pas définie dans le formulaire. J'ai mon formulaire frmAffaire.cs et ma classe clsAffaire.cs, ce sont deux fichiers différents.

    Autant, modifié une propriété de l'objet que je viens de créer, je sais faire, autant modifier une propriété d'un objet qui a appelé ma procédure, je je sais pas faire.

    La méthode "de rêve", serait de pouvoir avoir un code de ce genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    FormulaireActif mon_formulaire = new FormulaireActif();
    mon_formulaire.textbox4.text = ma_variable;
    Le code ci-dessus étant contenu dans le fichier de classe et non dans le fichier de formulaire.

    En pièce jointe, j'ai mis un schéma des opérations que je veux faire.

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 764
    Par défaut
    Donc c'était bien un problème de communication avec la base de données ?
    Ce n'est pas du tout ce que m'évoquait le titre "Accès au formulaire ouvert depuis une classe"...

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

Discussions similaires

  1. [JBoss Portal] Acces à la Session Portail depuis une classe Java
    Par thom44 dans le forum Portails
    Réponses: 0
    Dernier message: 02/10/2008, 16h09
  2. Accès au fichier ressources depuis une classe action
    Par root76 dans le forum Struts 1
    Réponses: 2
    Dernier message: 21/11/2006, 07h36
  3. [EJB2] Accès Interface locale depuis une classe métier.
    Par rigor dans le forum Java EE
    Réponses: 2
    Dernier message: 10/10/2006, 14h44
  4. acces a uneressource bitmap depuis une classe
    Par firejocker dans le forum MFC
    Réponses: 9
    Dernier message: 03/02/2006, 21h48
  5. Acces a un control depuis une autre classe
    Par schnito dans le forum MFC
    Réponses: 5
    Dernier message: 25/01/2004, 22h14

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