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