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 :

[C#] User Control et classe acces BD


Sujet :

C#

  1. #1
    Membre habitué Avatar de richard_sraing
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2005
    Messages : 483
    Points : 182
    Points
    182
    Par défaut [C#] User Control et classe acces BD
    Bonjour à tous.

    Voilà, j'ai un petit problème en ce qui concerne une application que je développe dans un but personnel.
    J'aimerais faire un programme qui me permettra de gérer une collection, et de stocker les informations relatives à ma collection dans une DB Access.

    Pour ce faire, j'ai créer une classe DataBase dans laquelle j'ai un objet OleDbConnection et une chaîne de caractère que j'utilise comme chaîne de connexion.

    J'ai également créé un controle utilisateur dans lequel je donne la possibilité de saisir les données nécessaires à la pièce de la collection.

    Alors maintenant, lorsque je suis dans mon application, et que je souhaite ajouter un élément à ma collection (je me trouve donc dans mon contrôle utilisateur), je souhaite pouvoir faire appel à l'objet DataBase que j'ai déclaré dans ma Form principale.

    Le problème est le suivant, je n'ai absolument aucune idée de comment faire cela correctement. Je ne sais pas si je peux placer mon objet DataBase en public dans le code, ou alors si je doit faire une propriété qui me permettra de manipuler mon objet DataBase, ...

    Dans mon objet DataBase, j'ai déclaré une série de méthode auxquelles je ferais appel lorsque je voudrais enregistrer une nouvelle pièces à ma collection.
    Ces méthodes sont, à titre informatif:
    - Open(); ouvrir la connexion avec la BD
    - Close(); fermera la connexion avec la BD
    - Request(string Requete); contiendra la requête que je souhaiterais exécuter.

    Voilà, je pense avoir planté le décor. Est ce que quelqu'un parmi vous saurais me dire comment procéder?
    Ah oui, j'ai placer mes classes (donc pour la collections, pour les acces à la BD dans un répertoire "classes"), et les contrôle utilisateur (auxquels je ferais appel pour les différentes actions à réaliser) dans un répertoire GUI.

    J'espère avoir été assez clair sur le problème que j'ai, et vous remercie tous d'avance pour l'aide qu'il vous sera possible de m'apporter.

    Richard_Sraing

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 9
    Points : 8
    Points
    8
    Par défaut
    Si j'ai bien compris, tu as un objet DataBase.cs un autre objet Gui.cs ou se trouve donc aussi le [Design].

    Mais tu n'arrives pas a les faire communiquer?
    Si j'ai bien tout compris, il te faut simplement déclarer en attribut un objet du style

    DataBase oDatabase;

    Dans le constructeur il te faut instancier ton objet.

    oDataBase = new Database();

    Et ensuite, dans ton fichier Gui.Cs tu pourras utiliser toutes les méthodes déclarés public dans ton DataBase.Cs en faisait simplement appel a l'attribut oDataBase.Laméthodepublique();

    Mais bon, je suis pas sur d'avoir bien compris ton problème .

  3. #3
    Membre habitué Avatar de richard_sraing
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2005
    Messages : 483
    Points : 182
    Points
    182
    Par défaut
    Oui et non.

    En fait, dans ma Form principale, j'ai déjà créé un objet DataBase, et je l'ai initialiser aussi, de la manière suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    db.Filename = ofd.FileName;
    avec db mon objet de type DataBase
    et ofd, mon OpenFileDialog qui me permet d'aller chercher le fichier *.mdb que je souhaite ouvrir.

    Ensuite, dans la propriété Filename de mon objet DataBase, je procède comme suit:

    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
    public string Filename
    {
        get { return _Filename; }
        set
        {
            if (_Filename != value)
            {
                _Filename = value;
                if (FilenameChanged != null)
                    FilenameChanged(this, EventArgs.Empty);
            }
        }
    }
    public event EventHandler FilenameChanged;
    ReBuild();
    Avec ReBuild() étant une méthode privée qui sera appelée uniquement lors du changement de nom de fichier afin de recréer la chaîne de connexion.

    Voilà donc pour la classe DataBase.

    Ensuite, lorsque j'ajoute une nouvelle pièce à ma collection, je souhaiterais pouvoir faire appel aux méthodes de l'objet DataBase que j'ai créer dans ma Form principale, tout en étant dans mon User Control.

    En ce qui concerne la hiérarchie de mon applic, je vais tenter de la représenter ci-dessous:

    +MonProjet
    |
    +-+ classes // un répertoire
    |
    + DataBase.cs
    + Piece.cs
    + Serie.cs
    |
    +-+ GUI // répertoire
    |
    + AddItem.cs
    + Welcome.cs
    |
    +MainWindow.cs // ma Form Principale
    Voilà, j'espère avoir pu répondre aux questions de certains d'entre vous, et éclairé les choses sur mon projet, je l'avoue, quelque peut chaotique...

    p.s.: je viens de me poser une autre question. Est ce que je pourrais créer un interface que j'implémenterais dans mes objets que je souhaites sauver dans ma BD, afin de pouvoir, via la méthode de l'interface, créer de manière dynamique la requête me permettant d'interagir avec ma BD?

  4. #4
    Membre expert
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 210
    Points : 3 015
    Points
    3 015
    Par défaut
    Tu pourrais initialiser ton UserControl avec ton objet DataBase (c'est à dire donner ton objet DataBase en paramètre du constructeur du UserControl).

  5. #5
    Membre habitué Avatar de richard_sraing
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2005
    Messages : 483
    Points : 182
    Points
    182
    Par défaut
    Mouais, mais le problème est que comme çà, il me donne une erreur à la compilation:

    Accessibilité incohérente : le type de paramètre 'Gestion.classes.DataBase' est moins accessible que la méthode 'Gestion.GUI.AddItem.AddItem(Gestion.classes.DataBase)' D:\Mes Documents\Gestion\GUI\AddItem.cs
    /* donc cette ligne d'erreur correspond à la ligne de mon constructeur */ à savoir:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public AddItem(DataBase obj)
    {
                InitializeComponent();
                Location = new Point(0, 25);
                db1 = obj;
    }
    en sachant bien sûr que db1 est un objet de la classe DataBase.

    Donc, si je comprend bien, il ne veut pas que j'utilise ma classe DataBase dans le contexte de mon user control??

    Ou alors, est ce qu'il y a un problème avec un de mes constructeurs, que ce soit dans mon User Control, ou dans ma classe DataBase??

  6. #6
    Membre habitué Avatar de richard_sraing
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2005
    Messages : 483
    Points : 182
    Points
    182
    Par défaut
    OK, c'est bon, je viens de chercher, et je viens de trouver:

    c.f.:

    voici le lien pour résoudre le problème.

    Encore merci...

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 29/10/2013, 15h22
  2. [Débutant] Accès aux contrôles dans un User Control
    Par chouchouilloux dans le forum VB.NET
    Réponses: 4
    Dernier message: 08/10/2012, 22h09
  3. Accès User Control
    Par Franklin39 dans le forum C#
    Réponses: 2
    Dernier message: 17/08/2010, 21h04
  4. Réponses: 7
    Dernier message: 12/04/2007, 15h22
  5. [Struts] Droits d'un user et gestion des accès aux pages
    Par PeteMitchell dans le forum Struts 1
    Réponses: 4
    Dernier message: 14/04/2004, 11h30

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