我正在尝试根据# do stuff in parent
if not result.empty():
event = result.get()
# process event as above and terminate if `None`
中选定的代码选择客户的名称。当我运行以下代码时,我收到一条错误消息,指出一个或多个必需参数没有值。
ComboBox
但是,当我运行相同的查询但没有参数时,它可以正常工作。
sql = "SELECT [Customer_Name] FROM [Customers] WHERE [Customer_Code] = @code"
Dim cmd As New OleDb.OleDbCommand(sql, con)
cmd.Parameters.Add("@code", OleDb.OleDbType.VarChar).Value = cmbCustomer.Text
Dim da As New OleDb.OleDbDataAdapter(sql, con)
Dim ds As New DataSet
da.Fill(ds)
txtCustomer.Text = ds.Tables(0).Rows(0).Item("Customer_Name")
是否有一些非常明显的东西让我错过了第一种做法?如果没有,为什么这种方式不起作用?
答案 0 :(得分:4)
这是因为OleDbDataAdapter
您正在设置DataAdapter
以获取sql
的字符串,以及con
的连接,这意味着cmd.Parameter
未与其一起传递。
所以你的代码会寻找da.SelectCommand.Parameters.Add
。
你需要
da.SelectCommand.Parameters.Add("@Code", OleDb.OleDbType.VarChar).Value = cmbCustomer.Text
或者
Dim da As New OleDb.OleDbDataAdapter(cmd)