OLEDB Sum error: Data type mismatch in criteria expression. VB.NET

OLEDB Sum error: Data type mismatch in criteria expression. VB.NET

请帮忙! 当我尝试用两个条件对一列求和时出现错误:

Data type mismatch in criteria expression.

这是 sql 代码:

 sql1 = "SELECT SUM(quantityofproduct) AS Expr1 FROM (SP001) where year = "2016" AND month = 1"

有 4 列:

1.ID

2.quantityofproduct

3.Year

4.month

SP001 是表的名称。

我尝试使用日期列格式和 &datetimepicker1.value/text& 作为条件,但没有成功。

感谢您的帮助。

如果字段类型是 varchar(30),您可以像这样使用引号 '' :

sql1 = "SELECT SUM(quantityofproduct) AS Expr1 FROM (SP001) where year = '2016' AND month = '1'"

但是,我建议您将列年和月的类型更改为 Integer 并使用参数来避免像这样的 SQL 注入:

Dim query As String = "SELECT SUM(quantityofproduct) AS Expr1 FROM (SP001) " &
                        "where year = @year And month = @month"
Dim cmd As New OleDbCommand(query, connection)
cmd.Parameters.AddWithValue("@year", YearValue)
cmd.Parameters.AddWithValue("@month", MonthValue)
Dim sumQuantity As Int32 = Convert.ToInt32(cmd.ExecuteScalar())

YearValue 和 MonthValue 是搜索的年份和月份的值。