I have a part of code as following and it keep showing an error "The connection was not closed. The connection's current state is open." at the
cmd2.Connection.Open();
after debugging. so I'm wondering how can i solve this problem if i using multiple connection?
Please someone assist me for this question since I had used few days to find the solution for it. Thanks.
private void loadgrid()
{
string sql;
string sql2;
string a;
string b;
SqlDataAdapter adapter = new SqlDataAdapter();
DataSet ds = new DataSet();
String connectionString = ConfigurationManager.ConnectionStrings["VSGIHURConnectionString"].ConnectionString;
SqlConnection connection = new SqlConnection(connectionString);
if (ddl_groupid.Text == "")
{
a = "";
gv.Visible = false;
}
else
{
a = " AND UniformGroupid = '" + ddl_groupid.Text.ToString() + "' ";
gv.Visible = true;
}
if (ddl_uniformid.Text == "")
{
b = "";
}
else
{
b = " AND uniformtran.UniformID = '" + ddl_uniformid.Text + "'";
}
sql = "select distinct UniformInfo.UniformGroupID, UniformTran.Uniformid from UniformTran " +
" inner join UniformInfo on UniformTran.Uniformid = UniformInfo.UniformID " +
" where UniformGroupid <> '' " + a + b + " and datename(MONTH, CONVERT (datetime,uniformtran.transcdate, 103)) = '" + ddlMonth.Text + "' " +
" and datename(YEAR, CONVERT (datetime,uniformtran.transcdate, 103)) = '" + ddlYr.Text + "' " +
" order by UniformTran.Uniformid ";
SqlCommand cmd = new SqlCommand(sql, connection);
cmd.Connection.Open();
SqlDataReader ddlValues;
ddlValues = cmd.ExecuteReader();
int count0 = 10000;
for (int i = 0; i < count0; i++)
{
if (connection.State == ConnectionState.Open)
{
if (ddlValues.HasRows)
{
ddlValues.Read();
{
sql2=("Select UniformGroupID, Uniformid, 'STOCK' as transctype, convert(varchar(25),dateadd(dd,-(day(convert(datetime,transcdate,103))-1),convert(datetime,transcdate,103)),103) as transcdate, " +
" '00:00:00' as transctime, '-' as actualqty ,'B/F' as method " +
" ,currentonhand as onhand,Batnbr from " +
" (select top 1 UniformGroupID, UniformTran.UniformID, 'STOCK' as transctype, transcdate, " +
" '00:00:00' as transctime, '-' as actualqty ,'B/F' as method " +
" ,onhand as currentonhand,Batnbr from uniformtran " +
" inner join UniformInfo on UniformTran.Uniformid = UniformInfo.UniformID " +
" where UniformGroupid <> '' " + a + b + " AND datename(MONTH, CONVERT (datetime,uniformtran.transcdate, 103)) = '" + ddlMonth.Text + "' " +
" and datename(YEAR, CONVERT (datetime,uniformtran.transcdate, 103)) = '" + ddlYr.Text + "' order by Batnbr)z " +
" union" +
" select UniformGroupID, UniformID, transctype,transcdate ,transctime, actualqty = case when CAST (actualqty as int) < 0 then CAST (actualqty as int) * -1 " +
" else actualqty end,method = case " +
" when (CAST(actualqty as int) * cast (method as int )) > 0 then 'IN'" +
" when (CAST(actualqty as int) * cast (method as int )) < 0 then 'OUT'" +
" when (CAST(actualqty as int) * cast (method as int )) = 0 then '-'" +
" end" +
" ,currentonhand,Batnbr from" +
" (select UniformGroupID, Batnbr, UniformTran.UniformID, transctype ,qtyvariance,((CAST(actualqty as int ) - cast (qtyvariance as int) ) * CAST (method as int)) as actualqty,method,onhand,currentonhand,transcdate,transctime from uniformtran" +
" inner join UniformInfo on UniformTran.Uniformid = UniformInfo.UniformID " +
" where UniformGroupid <> '' " + a + b + " AND datename(MONTH, CONVERT (datetime,uniformtran.transcdate, 103)) = '" + ddlMonth.Text + "' and datename(YEAR, CONVERT (datetime,uniformtran.transcdate, 103)) = '" + ddlYr.Text + "' AND transctype like 'Receive%'" +
" Union" +
" select UniformGroupID, Batnbr,UniformTran.UniformID, transctype ,qtyvariance,(CAST(actualqty as int ) - cast (qtyvariance as int) )as actualqty,method,onhand,currentonhand,transcdate,transctime from uniformtran" +
" inner join UniformInfo on UniformTran.Uniformid = UniformInfo.UniformID " +
" where UniformGroupid <> '' " + a + b + " AND datename(MONTH, CONVERT (datetime,uniformtran.transcdate, 103)) = '" + ddlMonth.Text + "' and datename(YEAR, CONVERT (datetime,uniformtran.transcdate, 103)) = '" + ddlYr.Text + "' AND transctype like 'Issue%' and actualqty <> '0' " +
" Union" +
" select UniformGroupID, Batnbr, UniformTran.UniformID, transctype ,qtyvariance,(CAST(actualqty as int ) - cast (qtyvariance as int) )as actualqty,method,onhand,currentonhand,transcdate,transctime from uniformtran" +
" inner join UniformInfo on UniformTran.Uniformid = UniformInfo.UniformID " +
" where UniformGroupid <> '' " + a + b + " AND datename(MONTH, CONVERT (datetime,uniformtran.transcdate, 103)) = '" + ddlMonth.Text + "' and datename(YEAR, CONVERT (datetime,uniformtran.transcdate, 103)) = '" + ddlYr.Text + "' AND transctype like 'Stock Adjustment%'" +
" ) as a" +
" order by uniformid, transcdate,transctime,Batnbr");
SqlCommand cmd2 = new SqlCommand(sql2, connection);
cmd2.Connection.Open();
adapter.SelectCommand = cmd2;
adapter.Fill(ds, "TempMovementRecord");
SqlDataReader ddlValues2;
ddlValues2 = cmd.ExecuteReader();
if (ddlValues2.HasRows)
{
ddlValues2.Read();
{
ddl_uniformid.Text = ddlValues2["UniformID"].ToString();
}
}
gv.DataSource = ddlValues2;
gv.DataBind();
cmd2.Connection.Close();
cmd2.Connection.Dispose();
}
int count2 = ds.Tables[0].Rows.Count;
DataTable dt = new DataTable();
DataRow dr;
dt.Columns.Add(new DataColumn("UniformGroupID",typeof(string)));
dt.Columns.Add(new DataColumn("UniformID", typeof(string)));
dt.Columns.Add(new DataColumn("transctype", typeof(string)));
dt.Columns.Add(new DataColumn("transcdate", typeof(string)));
dt.Columns.Add(new DataColumn("transctime", typeof(string)));
dt.Columns.Add(new DataColumn("actualqty", typeof(int)));
dt.Columns.Add(new DataColumn("method", typeof(string)));
dt.Columns.Add(new DataColumn("onhand", typeof(string)));
dt.Columns.Add(new DataColumn("batnbr", typeof(string)));
for (int j = 0; j < count2; j++)
{
dr = dt.NewRow();
dr[0] = ds.Tables[0].Rows[j]["UniformGroupID"];
dr[1] = ds.Tables[0].Rows[j]["UniformID"];
dr[2] = ds.Tables[0].Rows[j]["transctype"];
dr[3] = ds.Tables[0].Rows[j]["transcdate"];
dr[4] = ds.Tables[0].Rows[j]["actualqty"];
string m = ds.Tables[0].Rows[j]["method"].ToString().Trim();
dr[5] = ds.Tables[0].Rows[j]["onhand"];
dr[6] = ds.Tables[0].Rows[j]["batnbr"];
dt.Rows.Add(dr);
}
DataView dv = new DataView(dt);
gv.DataSource = dv;
gv.DataBind();
adapter.Dispose();
}
}
}
int count = gv.Rows.Count;
if (count > 0)
{
Label lblqty = (Label)gv.Rows[0].FindControl("lblqty");
lblqty.Text = "-";
btnPrint.Visible = true;
ibExcel.Visible = true;
}
else
{
btnPrint.Visible = false;
ibExcel.Visible = false;
}
cmd.Connection.Close();
cmd.Connection.Dispose();
}