我正在使用以下代码将记录从另一个表中插入表中....
Private Sub InsDuplicateDB()
Dim strInsDup As String = "INSERT INTO Duplicate_srno(Sr_no,chalan_no) SELECT sr_no,chaln_no FROM Vendor_Machine where sr_no=@srno"
Dim comm_InsDup As OleDb.OleDbCommand = New OleDb.OleDbCommand(strInsDup, cnnOLEDB)
comm_InsDup.Parameters.AddWithValue("@srno", cmbSn_no.Text)
comm_InsDup.ExecuteNonQuery()
Dim strUpdDup As String = "UPDATE Duplicate_srno SET sr_no = @srno,chaln_no =@chn_no,Problem=@problemWHERE sr_no = @srno AND chalan_no=@chn_no"
Dim comm_Update As OleDb.OleDbCommand = New OleDb.OleDbCommand(strUpdDup, cnnOLEDB)
comm_Update.Parameters.AddWithValue("@srno", cmbSn_no.Text)
comm_Update.Parameters.AddWithValue("@chn_no", cmbChal_no.Text)
comm_Update.Parameters.AddWithValue("@problem",strProb)
comm_Update.ExecuteNonQuery()
End Sub
这里strProb是一个字符串,其值在anoter子函数中赋值。 在这里它给出错误为“没有给出一个或多个所需参数的值......”
请解决我的问题
答案 0 :(得分:1)
我不知道这是否是拼写错误,但更新字符串缺少参数名@problem和WHERE子句之间的空格
Dim strUpdDup As String = "UPDATE Duplicate_srno SET sr_no = @srno,chaln_no =@chn_no," & _
"Problem=@problem WHERE sr_no = @srno AND chalan_no=@chn_no"
^
但是更新字符串可以简化,因为您正在使用where子句
中使用的相同值更新两个字段Dim strUpdDup As String = "UPDATE Duplicate_srno SET Problem=@problem " & _
"WHERE sr_no = @srno AND chalan_no=@chn_no"
除了缺少的空间外,错误消息表明引擎需要更多参数 在OleDb中,参数无法通过其名称识别。您需要由字符串中的占位符定义的相同数量的参数。在原始文本中,您有5个占位符,但只添加了3个参数。如果其中两个是相同的并不重要。
修订后的代码可以是以下
Dim strUpdDup As String = "UPDATE Duplicate_srno SET Problem=@problem " & _
"WHERE sr_no = @srno AND chalan_no=@chn_no"
Dim comm_Update As OleDb.OleDbCommand = New OleDb.OleDbCommand(strUpdDup, cnnOLEDB)
comm_Update.Parameters.AddWithValue("@problem",strProb)
comm_Update.Parameters.AddWithValue("@srno", cmbSn_no.Text)
comm_Update.Parameters.AddWithValue("@chn_no", cmbChal_no.Text)
请注意我在集合中首先添加了@problem
参数。现在,参数集合的顺序与占位符在命令文本中的位置相同。