通过ODBC调用vb.net中预定义的参数化查询

问题描述 投票:0回答:1

我在 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.
database vb.net
1个回答
0
投票

按照目前的情况,您并不是从 VB.NET 调用该查询。您正在 VB.NET 中执行内联查询,并且该查询正在执行内置查询而不向其传递任何参数。如果您想直接执行内置查询,那么您必须将其视为存储过程。您需要将命令的

CommandType
属性设置为
StoredProcedure
而不是默认的
Text
,然后将 `CommandText 设置为查询的名称。

strQuery = "qrySumOfSQty"

cmdDesign.Connection = connection
cmdDesign.CommandType = CommandType.StoredProcedure
cmdDesign.CommandText = strQuery
© www.soinside.com 2019 - 2024. All rights reserved.