我在 Access 2016 中有一个参数化查询 我想在 Vb.NET 中调用该查询 在 VB.Net 中调用参数化查询的方法是什么?
名称为 qrySumOfSQty 的预定义访问查询是
PARAMETERS S_StartDate DateTime, S_EndDate DateTime;
SELECT tblSale.SaleDate, tblSaleDetail.ProductId, Sum(tblSaleDetail.Quantity) AS SLQty
FROM tblSaleDetail INNER JOIN tblSale ON tblSaleDetail.SaleId = tblSale.SaleId
GROUP BY tblSale.SaleDate, tblSaleDetail.ProductId
HAVING (((tblSale.SaleDate) Between [S_StartDate] And [S_EndDate]))
ORDER BY tblSaleDetail.ProductId;
并且通过VB>Net调用它是
strQuery = "Select * From qrySumOfSQty"
cmdDesign.Connection = connection
cmdDesign.CommandText = strQuery
cmdDesign.Parameters.AddWithValue("S_StartDate", DateFrom.Value)
cmdDesign.Parameters.AddWithValue("S_EndDate", DateTo.Value)
dtReader = cmdDesign.ExecuteReader
出现错误
ERROR [07002] [Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 2.
按照目前的情况,您并不是从 VB.NET 调用该查询。您正在 VB.NET 中执行内联查询,并且该查询正在执行内置查询而不向其传递任何参数。如果您想直接执行内置查询,那么您必须将其视为存储过程。您需要将命令的
CommandType
属性设置为 StoredProcedure
而不是默认的 Text
,然后将 `CommandText 设置为查询的名称。
strQuery = "qrySumOfSQty"
cmdDesign.Connection = connection
cmdDesign.CommandType = CommandType.StoredProcedure
cmdDesign.CommandText = strQuery