【发布时间】:2018-04-03 17:51:29
【问题描述】:
我下面的查询有什么问题?
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)。
【问题讨论】:
-
我认为 MS Access 不理解
@inv部分。它似乎只使用{0}。给我一点.... -
我在整个代码中都使用了@,尤其是在插入和选择查询中并且效果很好,为什么删除查询无法理解?
-
如果
InvoiceNo是一个整数,那么您传递的是一个双精度数。 AddWithValue 是一个坏主意因为您需要数据库提供猜测数据类型。明显的默认表单实例同样是个坏主意 -
我不知道什么是“直接号码”。
Val但是总是返回一个不是整数的双精度数,因此数据类型不匹配。如果源是一个TextBox,用户输入一个值?那么你应该使用 TryParse。 -
我的意思是直接号码就像
.Parameters.AddWithValue("@inv", 10)