2009-12-14 107 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