2013-05-09 59 views
0

我有一個用於申請號的組合框。在從組合框選擇申請編號時,我們應該獲得申請該特定申請的成本中心。這是代碼:已經有一個與此命令關聯的開放DataReader,它必須先關閉。

 cmd.Connection = con; 
     if (con.State != ConnectionState.Open) 
     { 
      con.Open(); 
     } 
     txtcc.Text = ""; 
     if (cmbreqno.SelectedValue != null || Convert.ToString(cmbreqno.SelectedValue) != "") 
     { 
      cmd.Connection = con; 
      cmd.CommandType = CommandType.StoredProcedure; 
      cmd.CommandText = "sp_displaycostcenter"; 
      cmd.Parameters.AddWithValue("@req_no", cmbreqno.SelectedValue); 

      SqlDataReader rdr = cmd.ExecuteReader(); 


      adp.Fill(dsreqno,"selectedpurchase"); 
      if (dsreqno.Tables["selectedpurchase"].Rows.Count > 0) 
      { 
       txtcc.Text = dsreqno.Tables["selectedpurchase"].Rows[0]["req_no"].ToString(); 
      } 
      dsreqno.Tables["selectedpurchase"].Clear(); 

     } 
     cmd.Parameters.Clear(); 
     //rdr.Close(); 
     con.Close(); 
+0

在你的代碼中,行顯然是關閉的://rdr.Close(); – 2013-05-09 05:13:48

+0

它不做任何差異。我嘗試使用該行。同樣的錯誤。 – Kaushik27 2013-05-09 05:15:09

+0

你爲什麼試圖在第二個'if'語句的第一行重新創建相同的連接? – JuStDaN 2013-05-09 05:16:38

回答

0

試試這個:

if (con.State != ConnectionState.Open) 
    { 
     con.Open(); 
    } 
    txtcc.Text = ""; 
    if (cmbreqno.SelectedValue != null || Convert.ToString(cmbreqno.SelectedValue) != "") 
    { 
     cmd.Connection = con; 
     cmd.CommandType = CommandType.StoredProcedure; 
     cmd.CommandText = "sp_displaycostcenter"; 
     cmd.Parameters.AddWithValue("@req_no", cmbreqno.SelectedValue); 

     SqlDataReader rdr = cmd.ExecuteReader(); 
     if (rdr.Read()) 
     { 
     txtcc.Text= rdr[0].ToString();//assuming sp_displaycostcenter returns costcenter. 
     } 
     rdr.Close(); 

    }   
    con.Close(); 
0

您可以使用從MSDN的標準代碼塊(http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldataadapter.aspx)來讀取數據,如下圖所示,並用自己的人替換變量:

private static DataSet SelectRows(DataSet dataset, 
            string connectionString, 
            string queryString) 
{ 
    using (SqlConnection connection = new SqlConnection(connectionString)) 
    { 
     SqlDataAdapter adapter = new SqlDataAdapter(); 
     adapter.SelectCommand = new SqlCommand(queryString, connection); 
     adapter.Fill(dataset); 
     return dataset; 
    } 
} 
相關問題