Scope probleem

Status
Niet open voor verdere reacties.

Speedy7912

Gebruiker
Lid geworden
4 dec 2009
Berichten
65
Dames heren,

ik wil een variabele vullen met een sql quey. Binnen een for loop heb ik hiervoor een query opgesteld welke de variabele vult (zie onderstaande 'code').

Code:
private void (.....)
{
   int nummer;

   for loop 
   {

                    SqlCommand Medewerker = new SqlCommand("Select MDWID from Medewerker Where PersoneelsNr =" + PersoneelsNr, conn);
                    da.SelectCommand = Medewerker;
        // 'nummer' wordt gevult met query resultaat op de volgende manier
                     try
                     {
                        conn.Open();
                        object mdw = da.SelectCommand.ExecuteScalar();
                        nummer = (int)mdw;
                     }
                     catch...
   }

    //'nummer' wordt gebruikt maar met foutmelding : Use of unassigned local variable 'nummer'
}

vanwaar deze foutmelding. Als ik het goed begrepen heb (ja ik ben een newbie) is de scope van de variabele 'nummer' groot genoeg om 'nummer' buiten de for loop en de try/catch constructie te kunnen gebruiken.

waar schiet mijn kennis te kort?










Na verder zoeken komt het probleem vermoedelijk voort uit de try/catch/finaly afhandeling....hoe los ik dit probleem op


Ik heb de code afgesplitst van het geheel op de volgende manier:

Code:
        private int getMdwID(int personeelsNr)
        {
            int ID;
            /*****************************************************************************
            * 
            *  Get MDWID 
            *  
            *****************************************************************************/

            SqlCommand Medewerker = new SqlCommand("Select MDWID from Medewerkers Where PersoneelsNr =" + personeelsNr.ToString(), conn);
            da.SelectCommand = Medewerker;
            try
            {
                conn.Open();
                object mdw = da.SelectCommand.ExecuteScalar();
                ID = (mdw == null) ? (int)0 : (int)mdw;
            }
            catch (SqlException ex)
            {
                string str;
                str = "Source:" + ex.Source;
                str += "\n" + "Message:" + ex.Message;
                str += "\nSelect Command.";
                MessageBox.Show(str, "Database Exception. Selection failed");
            }

            catch (Exception ex)
            {
                string str;
                str = "Source:" + ex.Source;
                str += "\n" + "Message:" + ex.Message;
                str += "\nSelect Command.";
                MessageBox.Show(str, "Generic Exception");
            }
            finally
            {
                if (conn.State == ConnectionState.Open)
                {
                    conn.Close();
                    ID = (ID == null) ? 0 : ID;   
                }
            }
            return ID;
        }
 
Laatst bewerkt:
Je moet nummer even initialiseren:

Code:
private void (.....)
{
   int nummer = 0; //initialisatie

   for loop 
   {

                    SqlCommand Medewerker = new SqlCommand("Select MDWID from Medewerker Where PersoneelsNr =" + PersoneelsNr, conn);
                    da.SelectCommand = Medewerker;
        // 'nummer' wordt gevult met query resultaat op de volgende manier
                     try
                     {
                        conn.Open();
                        object mdw = da.SelectCommand.ExecuteScalar();
                        nummer = (int)mdw;
                     }
                     catch...
   }

    //'nummer' wordt gebruikt maar met foutmelding : Use of unassigned local variable 'nummer'
}
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan