在MS Access中删除查询会引发错误数据类型不匹配

时间:2018-04-03 17:51:30

标签: sql vb.net ms-access

我的查询有什么问题?

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)。

3 个答案:

答案 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是我清理文本和防止注入的功能。