我的查询有什么问题?
sqlquery = "DELETE FROM tblProductTransDetail WHERE (InvoiceNo) = @inv"
With sqlcommand
.CommandText = sqlquery
.Parameters.AddWithValue("@inv", Val(TextBoxNoNota.Text))
.Connection = FormMain.conn
.ExecuteNonQuery()
End With
也尝试过:
"DELETE FROM tblProductTransDetail WHERE InvoiceNo = @inv"
和其他一些但没有工作。
我的InvoiceNo
在数据库中是number
类型(MS Access 2016)。
答案 0 :(得分:0)
请你试一试吗?还假设您在顶部导入了System.Data.OleDb。
Convert.ToInt32使文本成为整数(假设它是数字而不是文本)。强制执行invParam以使数据类型为整数。
sqlquery = "DELETE FROM tblProductTransDetail WHERE (InvoiceNo) = ?"
With sqlcommand
.CommandText = sqlquery
Dim invParam as new OleDbParameter("InvoiceNo", OleDbType.Integer)
invParam.Value = Convert.ToInt32(TextBoxNoNota.Text)
.Parameters.Add(invParam)
.Connection = FormMain.conn
.ExecuteNonQuery()
End With
答案 1 :(得分:0)
您使用的是SQL查询,而不是MS ACCESS查询。
你应该试试这个
sqlquery = "DELETE * FROM tblProductTransDetail WHERE (InvoiceNo) = @inv"
在SQL中删除查询没有*,但在Access中有一个删除查询中的*
答案 2 :(得分:-1)
但是我可以使用不带参数的标准删除查询
使其正常运行sqlquery = "DELETE FROM tblProductTransDetail WHERE InvoiceNo = " & cleansql(TextBoxNoNota.Text)
注意:cleansql是我清理文本和防止注入的功能。