bala3569
bala3569

Reputation: 11010

accessing variable outside for loop in c#?

Here i need to access the variable delval outside the for loop as in the code below

cmd_mail.Parameters.Add("@deleteusers", SqlDbType.NVarChar).Value = delval;

..How to do this..

Here is my code

 for (int i = 0; i <= NoOfUsers - 1; i++) {
        using (SqlConnection Conn = new SqlConnection(constr_str)) {
            using (SqlCommand cmd = new SqlCommand()) {
                cmd.Connection = Conn;
                Conn.Open();
                cmd.CommandText = "Select top 1 Login_User_Name  from Rode_Provisioning_User where RequestId=@RequestId and CustomerCode =@CustomerCode and disableflag=0 order by User_Count";
                cmd.Parameters.Add("@CustomerCode", SqlDbType.VarChar).Value = CustomerCode;
                cmd.Parameters.Add("@RequestId", SqlDbType.VarChar).Value = RequestId;
                string Loginusername = cmd.ExecuteScalar();
                Conn.Close();
                string delval = "";
                if (string.IsNullOrEmpty(delval)) {
                    delval = Loginusername;
                } else {
                    delval = delval + "," + Loginusername;
                }
            }
        }
        }

    if (flag == "Yes") {
        string constr_dep = "server=" + _strServer + ";database=" + _strDatabase + ";uid=" + _strUserid + ";pwd=" + _strPassword + ";";
        SqlConnection con_dep = new SqlConnection();
        con_dep.ConnectionString = constr_dep;

        SqlCommand cmd_mail = new SqlCommand("delete_user_mailsend_sp", con_dep);
        cmd_mail.CommandType = CommandType.StoredProcedure;
        cmd_mail.CommandTimeout = 0;
        cmd_mail.Parameters.Add("@companycode", SqlDbType.NVarChar).Value = CustomerCode
        cmd_mail.Parameters.Add("@deleteusers", SqlDbType.NVarChar).Value = delval;
            try {
            con_dep.Open();
            cmd_mail.ExecuteNonQuery();
        } catch (SqlException ee) {
            VWLogger.LogMessage("Exception in delete_user_mailsend_sp:", TraceEventType.Critical);
            VWLogger.LogMessage(ee, TraceEventType.Critical);
            return ee.Message;
            flag = ee.Errors(0).ToString();

        }

        con_dep.Close();
    }

Any suggestion?

Upvotes: 0

Views: 2079

Answers (2)

Kirk Broadhurst
Kirk Broadhurst

Reputation: 28718

As zerkms said, declare it outside the loop. See below.

string delval = "";

for (int i = 0; i <= NoOfUsers - 1; i++) 
{
    // your existing stuff
    // ...
    if (string.IsNullOrEmpty(delval)) 
    {
        delval = Loginusername;
    }
    else
    {                     
        delval = delval + "," + Loginusername;                 
    }
}

if (flag == "Yes") 
{           
    // your existing stuff
    // ...
    cmd_mail.Parameters.Add("@deleteusers", SqlDbType.NVarChar).Value = delval;
}

Upvotes: 0

zerkms
zerkms

Reputation: 254926

Define it outside the loop then, and it will be visible in both blocks, as well as outside.

Upvotes: 5

Related Questions