begin process at 2012 05 28 04:26:00
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive ASP & ASP.NET

 > 

Archives ASP & ASP.NET

 > 

ASP.net

 > 

Portée des variables


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Portée des variables

vendredi 20 mai 2005 à 14:38:05 | Portée des variables

DeitY51

Bonjour,
voila mon code :

void BindGrid(){
   // selection des jours feries de l'annee voulue
   SqlCommand selection = new SqlCommand("SELECT * FROM jours_feries" +
      " WHERE jf_date >= '01/01/" + anneecourante + "'" +
      " AND jf_date <= '31/12/" + anneecourante + "'"+
      " ORDER BY jf_date",
      connexion
    );
    try{
      connexion.Open();
      SqlDataReader dr = selection.ExecuteReader();

      GrilleJours.DataSource = dr;
      GrilleJours.DataMember = "jours_feries";
      GrilleJours.DataBind();
   }
   finally{
       dr.Close();
       connexion.Close();
    }
}

Voila mon probleme :

Compiler Error Message:
CS0246: The type or namespace name 'dr' could not be found (are you missing a using directive or an assembly reference?)

Source Error:

Line 52:     	} Line 53:     	finally{ Line 54:     		dr.Close(); Line 55:     		connexion.Close(); Line 56:     	}

Est-ce un probleme de portée de variable ?
Ce n'est pas la premiere fois que ca m'arrive entre les try et les catch...
Please, Help
vendredi 20 mai 2005 à 14:43:47 | Re : Portée des variables

jesusonline

Membre Club Administrateur CodeS-SourceS

Oui, le problème est bien une porté de variable, quand tu declares une variable elle est valable dans la boucle ou tu la declares, donc la dans le try, or t'as une erreur dans ton try, donc il va passer au catch, et dans ton catch, tu lui demande de fermer dr, alors qu'il n'existe pas encore, la bonne syntaxe est :

void BindGrid(){
   // selection des jours feries de l'annee voulue
   SqlCommand selection = new SqlCommand("SELECT * FROM jours_feries" +
      " WHERE jf_date >= '01/01/" + anneecourante + "'" +
      " AND jf_date <= '31/12/" + anneecourante + "'"+
      " ORDER BY jf_date",
      connexion
    );
   SqlDataReader dr;
    try{
      connexion.Open();
      dr = selection.ExecuteReader();

      GrilleJours.DataSource = dr;
      GrilleJours.DataMember = "jours_feries";
      GrilleJours.DataBind();
   }
   finally{
      // avant de le fermer regarder s'il est bien ouvert, si le truc plante à l'ouverture (ce qui etait le cas, il va planter car tu vas essayer de fermer qqchose de pas ouvert), en gros tu rajoute un try sur le open, et tu geres cette erreur, plutot qu'une erreur générique
       dr.Close();
       connexion.Close();
    }
}


Cyril - MCP ASP.net
Webmaster de : Hoshimi.CodeS-SourceS.fr

vendredi 20 mai 2005 à 15:07:54 | Re : Portée des variables

DeitY51

je viens d'essayer et maintenant j'ai :

Compiler Error Message:
CS0165: Use of unassigned local variable 'dr'

Ce qui est logique. Le probleme c'est que pour resoudre le probleme, il faudrait que je place ca :
      dr = selection.ExecuteReader();
en dehors du try, mais cette fonction pourrait me balacer une exception (enfin je pense parceque j'ai pas bien compris ce que faisait exactement cette fonction).
vendredi 20 mai 2005 à 15:46:56 | Re : Portée des variables

jesusonline

Membre Club Administrateur CodeS-SourceS
le ExecuteReader sert à faire la requete sur la base.

Par contre le problème est que tu ne geres pas correctement les exceptions, si c'est connexion.Open(); qui plante, dr = selection.ExecuteReader(); ne sera pas executé, donc dr = null, et tu pourras pas appeller l'event close a qqchose qui n'existe pas ...

Donc gere mieux les exceptions et tout les cas possibles, car la ce qui plante c'est ton finally, tu essayes de fermer des trucs qui ne sont pas ouvert ou qui n'existe encore pas.


Cyril - MCP ASP.net
Webmaster de : Hoshimi.CodeS-SourceS.fr
vendredi 20 mai 2005 à 15:52:33 | Re : Portée des variables

DeitY51

qu'est ce que tu me conseil ? des try-catch separes pour chaque truc qui peut balancer une exception ? c'est un peu trash non?
samedi 21 mai 2005 à 14:15:19 | Re : Portée des variables

Yopyop

    
    .......
    SqlDataReader dr = new SqlDataReader;
    try{
      connexion.Open();
      dr = selection.ExecuteReader();

      GrilleJours.DataSource = dr;
      GrilleJours.DataMember = "jours_feries";
      GrilleJours.DataBind();
   }
   finally{
         if dr.IsOpen(){   <- me souviens plus du nom de cette méthode, mais elle existe.
             dr.Close();
         }
       connexion.Close();
    }
}

et tu devrais ajouter des blocks catch....

yopyop
mardi 24 mai 2005 à 09:18:01 | Re : Portée des variables

DeitY51

Desole mais ca marche pas : le contructeur
SqlDataReader dr = new SqlDataReader;
n'existe pas. d'ailleur je trouve pas de constructeur correct a part avec un SqlCommand donc c'est un peu inutile!
Je reste donc avec mon probleme dont je n'arrive pas a trouver de solution. C'est la folie quand meme !


Cette discussion est classée dans : connexion, portée, line, close, dr


Répondre à ce message

Sujets en rapport avec ce message

Problème de connexion a la base sqlserver [ par fella2 ] Problème de connexion a la base sqlserverJe suis une débutante dans asp.net, j'ai essaye d'accéder a une base de données sous SQL Server.Mon fichier s BC30002: Type 'XXX' is not defined. [ par koutb ] Bonjour,j'ai un petit probleme, je suis debutant en asp.net et en programmation en généraldonc voila j'ai une page avec un textboxet j'ai ajouter un f WebParts et connexion aux serveur SQL [ par aKheNathOn ] Bonjour,J'ai une webpart qui doit effectuer une connexion à la base de données pour y rechercher des informations. La base de données peut être sur un tableau a remplir [ par tazagaga ] bonjour a tous voila je suis sur un projet et je suis debutant en C # et tout cequi concerne le .net alor ma page est en aspx.cs j'ai crée une co connexion distante avec iis [ par kikodos23 ] Salut tous le mondej'ai hébèrgé mon site avec iis est je veut le tester a distanct (ordinateur distant par internet),j'ai tapé le lien http://mon @ ip Erreur panier [ par scottmat ] Bonjours à tous et à toutes,   j'ai repris un stater kit thebeerhouse exactement. et quand je veux le tester en loca connexio sql 2000 [ par kikodos23 ] Slt tous le mondemon probleme est le suivant : g créer une base de donneé sql (2000) mes quand je veut etablire une connexion a cette base (avec VS200 connexion a sql server 2000 [ par 7amdaoui ] slt tt le mondej'ai une application développée en ASP et puis lorsque je vais connecté à ma base des données SQL server 2000 un message sur la page we DataRow : problème [ par Devlop001 ] Bonjour, J'essaye de puis hier d'ajouter une ligne à ma base de données ( donc un DataRow) pour qu'elle soit affichée dans mon GridView. L'idée c' connexion avec une base de donnée mysql [ par rehab ] salut tout le monde,j'ai une base de donnée avec mysql comment je dois me connecter avec ma base de donnée via une pagez asp.merci


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 3,931 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales