2009-12-14 54 views
1
 private void FillInvoiceList() 
    { 
     DataTable distinctInvoice = new DataTable(); 
     using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["APOS_CONNECTION_STRING"].ConnectionString)) 
     { 
      conn.Open(); 
      SqlCommand cmd = new SqlCommand("Select distinct svc_tag from data where rep_name = @value"); 
      cmd.Parameters.AddWithValue("@value", this.DropDownList1.SelectedItem.Text); 
      SqlDataAdapter sqlDataAdapter = new SqlDataAdapter(cmd.CommandText, conn.ConnectionString); 
      sqlDataAdapter.Fill(distinctInvoice); 
     } 
     foreach (DataRow row in distinctInvoice.Rows) 
     { 
      this.ListBox1.Items.Add(row["svc_tag_dim_invoice_num"].ToString()); 
     } 
    } 

我有這樣的代碼,當我調用Fill(DistinctInvoice)SQL錯誤必須聲明標量變量

必須聲明標量變量「@value」

我FillInvoiceList(我得到這個錯誤)方法正在從DropDownList1的SelectedIndexChanged事件中調用。 DropDownList1.SelectedItem.Text的值似乎是正確的。

感謝您的任何幫助。

回答

10

的錯誤是在這裏:

SqlDataAdapter sqlDataAdapter = new SqlDataAdapter(cmd.CommandText, conn.ConnectionString); 

你設置的SqlDataAdapter使用原來的CommandText,而不是SqlCommand的本身。將其更改爲:

SqlDataAdapter sqlDataAdapter = new SqlDataAdapter(cmd, conn.ConnectionString); 
+0

oy vey ...感謝您的快速回復。 – jim 2009-12-14 13:20:07

+0

它看起來不像SqlDataAdapter()不會重載以獲取cmd和連接對象。我將連接添加到SqlCommand的構造函數 – jim 2009-12-14 13:26:36

+0

啊,我的不好。現在編輯。 – MartW 2009-12-14 14:06:49