VB操作ACCESS数据库的有关问题,麻烦大家帮忙看看

VB操作ACCESS数据库的问题,麻烦大家帮忙看看

Set getrsp = cnn.Execute("SELECT * FROM gpsdata where cisu ='" & cisu & "' and Datediff(d,startdate,'" & tmpdate & " ')  =  0 ORDER BY 时间")

数据库中startdate字段位DATE型,tmpdate定义的也为DATE型,断点运行时值为"2012-10-19"也是对的,怎么SQL还是查询不到呢?
------解决方案--------------------
查一下access中有没有datediff函数
------解决方案--------------------
先在access里面操练SQL语句,跟MS-SQL还是有点差别的,这个跟VB无关。

------解决方案--------------------
需要理解的是,VB 中的日期类型实际上是作为 Double 类型存储的。(当你在界面上读取时,VB 会因为它是日期类型,自动转换出日期字符串。)而 SQL 命令,实际上是以字符串形式传送到数据库引擎的。但你将日期变量拼接到字符串时,它会直接接入数值。你将 SQL 语句打印出来就看到了。

对于日期字符串,如果是 Access 数据库,需要加 # 号括起来,以表示运算时应转为日期数值。如果是 SQL 数据库,则用单引号。

另外 Datediff() = 0 可以直接用两日期相等的表达式。

Set getrsp = cnn.Execute("SELECT * FROM gpsdata where cisu ='" & cisu & "' and startdate = #" & Format(tmpdate, "yyyy-mm-dd") & "# ORDER BY 时间")
------解决方案--------------------
sql语句的问题,也就是 说类型转换的问题。顶of123