Variable locale non assignée?? quoi faire?

cs_othland Messages postés 298 Date d'inscription jeudi 18 décembre 2003 Statut Membre Dernière intervention 9 février 2010 - 19 juil. 2007 à 13:40
cs_Robert33 Messages postés 834 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 14 janvier 2017 - 3 mars 2012 à 18:59
salut tout le monde:
j'ai une partie de code source (d'un composant webpart) avec laquelle je veux afficher une table de base de données,
lors de la compilation, ça m'affiche le message suivant :
Utilisation d'une variable locale non assignée
'objDataSet'
je trouve pas quoi faire
aidez moi svp
mon code :
/////////////
      protectedoverridevoid
RenderWebPart(HtmlTextWriter output)

            {

                  DataSet
objDataSet;//= new DataSet("root");

                  //Set up connection string from custom properties

                  string strConnection;

                  strConnection =
"Data Source=" + SERVER;

                  strConnection +=
";Initial Catalog=" + DataBase;

                  strConnection +=
";Integrated Security=True"; 

                  //Query pubs database

                  string strSQL = "select * from Classe";

                  //Try to run the query

                  try 

                  {

                        objDataSet
= new DataSet("root");

                        SqlDataAdapter
dd = new SqlDataAdapter();

                        SqlConnection
conn = new SqlConnection(strConnection);

                        dd.SelectCommand
= new SqlCommand(strSQL, conn);

                        dd.Fill(objDataSet,"Classe");

                  }

                  catch (Exception ex)

                  {

                        lblMessage.Text
= ex.Message;

                       //exit;

                 }

                  //Bind to grid

                  try

                  {

                        grdNames.DataSource
= objDataSet;

                        grdNames.DataMember
= "Classe";

                        grdNames.DataBind();

                  }

                  catch (Exception
ex)

                  {

                        lblMessage.Text = ex.Message;

                        //Exit;

                  }

/////////////
merci pour votre aide!!

4 réponses

Nikoui Messages postés 794 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 19 août 2008 13
19 juil. 2007 à 14:10
C'est normal, dans le 2em bloc "try", tu assigne objDataSet a une variable. Hors, si le premier try echoue sur le "new DataSet", ta variable objDataSet ne sera pas initialisée lors du second try (elle vaudra null).

Pour supprimer cette erreur, tu peux par exemple initialiser explicitement objDataSet à null au tout début de la fonction, puis tester dans le 2em try en faisant : "if(objDataSet != null) { [le reste de ton code]}.
Ou bien alors réorganise ton code pour n'avoir qu'un seul bloc try...

<hr size="2" width="100%" />Working as designed
0
bernie666 Messages postés 427 Date d'inscription mercredi 1 octobre 2003 Statut Membre Dernière intervention 29 janvier 2008 1
19 juil. 2007 à 14:14
 DataSet objDataSet;//= new DataSet("root");

> rajoute DataSet objDataSet null;

et sa va compilé ;)

-------------------------------------------http://quoideneufaujourdhui.spaces.live.com
0
aminescm Messages postés 7 Date d'inscription mercredi 19 octobre 2011 Statut Membre Dernière intervention 9 mai 2012 2
3 mars 2012 à 06:31
SVP , j'a presque même problème : Utilisation d'une variable locale non assignée 'TAB'

voila mon code , juste j'ai crée une méthode dans une classe pour connaitre si la personne et un stagiaire ou condidat etc , et j'ai vraiment besoin de récupérer le champ (TAB)
merci pour votre aide .




public string recherches(string champ ,string val)
{


string TAB ;
SqlConnection Connecter = new SqlConnection();
Connecter.ConnectionString = ("data source= GLINFO-PC ; DATABASE=GRH2 ;Integrated Security=True;");


Connecter.Open();
SqlCommand Sql = new SqlCommand("select * from PERSONNE ", Connecter);
SqlDataReader dr;
dr = Sql.ExecuteReader();

while (dr.Read())
{

if
(dr[champ].ToString() == val) && (dr["TYPE_PERSONNE"].ToString() == "Condidat"))
{
TAB = "PERSONNE_CONDIDAT";

selectBD("PERSONNE_CONDIDAT");



}
}

return TAB;
///// l'erreur ici : Utilisation d'une variable locale non assignée 'TAB'
0
cs_Robert33 Messages postés 834 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 14 janvier 2017 33
3 mars 2012 à 18:59
Bonjour aminescm

C'est en effet le même probleme, ta variable TAB est déclarée mais non initialisée.
Elle est ensuite affectée dans le corps d'un if {}, mais si la condition n'est pas satisfaite, alors elle n'a aucune valeur.

il faut donc soit l'initialisée dès le début
string TAB=string.Empty;


soit dans le else du if.
if (...)
{
  TAB = "PERSONNE_CONDIDAT"; 
...
}
else
{
  TAB = string.Empty; //ou autre chose ;-)
}

Bob.
C# is amazing, enjoy it!
0
Rejoignez-nous