Date vb2010中MS-Access查询涉及日期范围
我束手无策。有很多论坛找不到 我正在尝试使用VB 2010 System.data.OleDb对象从Access db查询数据。 代码如下:Date vb2010中MS-Access查询涉及日期范围,date,range,Date,Range,我束手无策。有很多论坛找不到 我正在尝试使用VB 2010 System.data.OleDb对象从Access db查询数据。 代码如下: Dim AccessCommand As New System.Data.OleDb.OleDbCommand("SELECT format( dateadd(""m"", -e.tenure, e.expirydate), ""yyyy-mm-dd"") as Expired, n.customerid , e.type as Description,
Dim AccessCommand As New System.Data.OleDb.OleDbCommand("SELECT format( dateadd(""m"", -e.tenure, e.expirydate), ""yyyy-mm-dd"") as Expired, n.customerid , e.type as Description, (select s.type from servicetype s where s.servicecode = e.servicecode) as CodedType, (select v.servicecode from servicetype v where v.servicecode = e.servicecode) as ServiceCode, e.totalamount INTO [Excel 12.0 Xml;DATABASE=d:\BookTest.xlsx;HDR=Yes;].[Sheet1] " _
& " From notification n, notificationservice e where " _
& " e.notificationid = n.notificationid " _
& " and mid(n.notificationid, 1,2) ='RN' " _
& " and jn_duplicate = 0 " _
& " and dateadd(""m"", -e.tenure, e.expirydate) between @1 and @2 " _
& " and ( n.salesid is null or ( n.salesid is not null and not exists
( select paymentid from payment p where p.invoiceid = n.salesid) )) ", _
m_conn)
AccessCommand.Parameters.Add("@1", OleDbType.Date).Value = New DateTime(2013, 7, 21) '"#20-jul-2013#" '(InputBox("Enter Expiry DateFrom in dd-mon-yyyy", "", "", 100, 100))
AccessCommand.Parameters.Add("@2", OleDbType.Date).Value = New DateTime(2013, 7, 31) '"'#30-jul-2013#" '(InputBox("Enter Expiry DateTo in dd-mon-yyyy", "", "", 100, 100))
但尝试尽可能多的组合,我总是得到错误,如没有指定数据等
我的目标是要求用户在查询中输入两个日期,这两个日期将构成日期From和Date to,并在日期之间
非常感谢您的帮助
谢谢
Cho来自
OLE DB的.NET Framework数据提供程序和ODBC的.NET Framework数据提供程序不支持将参数传递给SQL语句或存储过程的命名参数。在这种情况下,必须使用问号(?)占位符,如下例所示
换句话说,对于OleDB,您需要将@1和@2之间的
替换为介于?和?
之间,并且只依赖于参数的顺序。“…错误,如未指定数据等”有点不清楚,您是否可以发布准确的错误消息?错误是“没有为一个或多个必需参数提供值”我包含的异常捕获捕获捕获了此错误。非常感谢,但我的问题仍然没有解决,因为在通过inputbox获取的日期后附加的#字符仍然为空。但是我在查询中输入了完整的日期。。。日期在2013年7月21日之间,有效…我认为参数化查询时不应该有
,请尝试仅使用日期。