Garder connexion bd sur mdichild

[Résolu]
Signaler
Messages postés
260
Date d'inscription
jeudi 31 mai 2007
Statut
Membre
Dernière intervention
5 novembre 2010
-
Messages postés
260
Date d'inscription
jeudi 31 mai 2007
Statut
Membre
Dernière intervention
5 novembre 2010
-
Bonjour!!

Je débute en C#, et il y a quelque chose que je ne comprend pas.

J'ai une Form MDIcontainer dans laquel j'ouvre une connexion à une base de données :



public



partial



class



index
:

Form

{
   public

connexion
cnx;

   

public
index()
   {InitializeComponent();}




   private



void
index_Load(

object
sender,

EventArgs
e)  
   {


      Form
childForm =

new



accueil
();
      childForm.MdiParent =

this
;


      childForm.Show();
      cnx =

new



connexion
();
      cnx.Open();
      }
}

voici ma classe connexion :





class



connexion

{
   

private



OleDbConnection
Ocnx;




   public



void
Open()
   {
      

try
      
{
         Ocnx =

new



OleDbConnection
();
         Ocnx.ConnectionString =

"Provider=microsoft.jet.oledb.4.0;Data Source=../../../base/gestion.mdb;"
;
         Ocnx.Open();
      

}
      

catch
      
{

index
.ActiveForm.Close();
      }
   }
}

Comme vous avez pu constater, j'ouvre une mdiChild nommée accueil.

Ma question est : comment se fait-il que je n'ai pas accésà la propriété cnx dans la mdiChild?
C'est la premiere fois que je fais une connexion à un bd en c# et je ne comprend pas encore tout...

Si quelqu'un pouvait m'aiguiller, ce serait simpa!!

lowkey

5 réponses

Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
54
Salut,

L'instance de cnx appartient a ta Form.
Pour faire simple, ouvre ta connexion dans ta MdiChild, ou alors passe lui l'instance de cnx en paramètre.

Mx
MVP C# 
Messages postés
794
Date d'inscription
vendredi 24 septembre 2004
Statut
Membre
Dernière intervention
19 août 2008
10
Déclare ta classe "connection" comme étant public ou internal selon le cas (internal si accueil et connection sont dans le même projet, public sinon).

Sinon, en générale les nom de classes commencent par des majuscules (même si dans les conventions de codages y'a souvent plusieurs écoles qui s'affrontent, ce point là fait souvent l'unanimité...)

<hr size="2" width="100%" />
Working as designed
www.nikoui.fr
Messages postés
260
Date d'inscription
jeudi 31 mai 2007
Statut
Membre
Dernière intervention
5 novembre 2010
1
Merci Morpion!!
Messages postés
260
Date d'inscription
jeudi 31 mai 2007
Statut
Membre
Dernière intervention
5 novembre 2010
1
Après avoir suivi ton conseil, un autre problème se pose :

Erreur 1 Accessibilité incohérente : le type de paramètre 'programme.connexion' est moins accessible que la méthode 'programme.accueil.accueil(programme.connexion)'

public

partial
class
accueil :
Form
{
   
private
connexion cnx;

   
public accueil(
connexion vcnx)
   {
      
this.cnx = vcnx;
      InitializeComponent();
   }

}

et

public
partial
class
index :
Form
{
   
private
connexion cnx;

   
public index()
   {InitializeComponent();}

   private
void index_Load(
object sender,
EventArgs e)
   {
      
this.cnx =
new
connexion();
      
this.cnx.Open();
      
Form childForm =
new
accueil(
this.cnx);
      childForm.MdiParent =
this;
      childForm.WindowState =
FormWindowState.Maximized;
      childForm.Show();
      childForm.BringToFront();
   }
}

Héhé, j'adore le c#  (et je regrette de pas avoir mieux suivi mes cours de dev objet...)
Messages postés
260
Date d'inscription
jeudi 31 mai 2007
Statut
Membre
Dernière intervention
5 novembre 2010
1
Merci nikoui!!