Click here to Skip to main content
15,885,914 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more: (untagged)
Hai I am getting this error while i was writing the code
C#
public DataTable FillData(SaleOrderBEL SaleBEL)
{

    if (cn.State != ConnectionState.Open)
        cn.Open();
    cmd = new SqlCommand("SP_SalesOrder_FillData", cn);
    cmd.CommandType = CommandType.StoredProcedure;
    cmd.Parameters.AddWithValue("@comp_id", SaleBEL.comp_id);
    cmd.Parameters.AddWithValue("@so_no", SaleBEL.so_no);
    cmd.Parameters.AddWithValue("@sod_deleted", SaleBEL.sod_deleted);
    if (dr.IsClosed == false) dr.Close();
    dr = cmd.ExecuteReader();
    sda = new SqlDataAdapter(cmd);
    ds = new DataSet();
    sda.Fill(ds, "so_details");
    while (dr.Read())
    {
        object[] obj = { dr["sod_order"].ToString(),"", dr["prod_code"].ToString(), dr["prod_desc"].ToString(), dr["sod_qty"].ToString(),
                               dr["sod_uom"].ToString(), dr["sod_uprice"].ToString(),  dr["sod_gstamt"].ToString(),
                               dr["sod_disc"].ToString(), dr["sod_netamount"].ToString(),"",dr["sod_qty_reserve"].ToString() };



        dt = ds.Tables[0];
        dt.Rows.Add(obj);
    }

    dr.Close();
    cn.Close();
    return dt;

}
Posted

1 solution

1.The problem is genrated by the fact that your SqlDataAdapter object is using internally a DataReader object for reading the data, but you have just created a reader (by using ExecuteReader) before to read the data by using adapter.

2.The solution is to ExecuteRedear after the usage of the SqlDataAdapter, like in the next example:

C#
public DataTable FillData(SaleOrderBEL SaleBEL)
{

    if (cn.State != ConnectionState.Open)
        cn.Open();
    cmd = new SqlCommand("SP_SalesOrder_FillData", cn);
    cmd.CommandType = CommandType.StoredProcedure;
    cmd.Parameters.AddWithValue("@comp_id", SaleBEL.comp_id);
    cmd.Parameters.AddWithValue("@so_no", SaleBEL.so_no);
    cmd.Parameters.AddWithValue("@sod_deleted", SaleBEL.sod_deleted);
    if (dr.IsClosed == false) dr.Close();
    sda = new SqlDataAdapter(cmd);
    ds = new DataSet();
    sda.Fill(ds, "so_details");
    //
    dr = cmd.ExecuteReader(); //Here!!!
    while (dr.Read())
    {
        object[] obj = { dr["sod_order"].ToString(),"", dr["prod_code"].ToString(), dr["prod_desc"].ToString(), dr["sod_qty"].ToString(),
                               dr["sod_uom"].ToString(), dr["sod_uprice"].ToString(),  dr["sod_gstamt"].ToString(),
                               dr["sod_disc"].ToString(), dr["sod_netamount"].ToString(),"",dr["sod_qty_reserve"].ToString() };



        dt = ds.Tables[0];
        dt.Rows.Add(obj);
    }

    dr.Close();
    cn.Close();
    return dt;
}
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900