自己已解决,进来第一个回帖的给分结贴。Access关于时间查询问题,时间字符串为常量行,但是用变量代入就不行,疯掉。(50分)

B

baoyun

Unregistered / Unconfirmed
GUEST, unregistred user!
Access关于时间查询问题,时间字符串为常量行,但是用变量代入就不行,疯掉。详细如下
T1 :='#'+DateToStr(DP1.Date)+'#';
T2 :='#'+DateToStr(DP2.Date)+'#';
sqlstr :='select * from WorkPlanTable where Date>='''+T1+''' and Date<='''+T2+''' order by Date';
报错:[Microsoft][ODBC Microsoft Access Driver] 标准表达式中数据类型不匹配。

如果写成:sqlstr :=cxstr :='select * from WorkPlanTable where Date>=''#2007-11-01#'' and Date<=''#2007-11-30#'' order by Date';
报错同上。

如果写成:sqlstr :=cxstr :='select * from WorkPlanTable where Date>=#2007-11-01# and Date<=#2007-11-30# order by Date';
就没问题。

请教高人需要变量查询时怎么写才对
 
自己解决。
sqlstr :='select * from WorkPlanTable where Date>=' +T1+ ' and Date<=' +T2+ ' order by Date';OK了。
 
谁进来第一个,就给分结贴。
 
自己解决才是最好的。
 
另外,楼主既然已知道正确的写法是
select * from WorkPlanTable where Date>=#2007-11-01# and Date<=#2007-11-30# order by Date
不知道为什么要在>=和<=后加上''',要知道正确的语句中间完全没有单引号'的存在哦。
我一般在写这类查询语句出现问题时,都会用一个MEMO来显示SQL全部内容,这样应该不难看出其中问题所在。
 
以前都用Sql Server 或Oracal,没用Access做过,这次做的东西数据量很小,就拿Access试试,没想到查询语句写法还不相同。另外,除不同数据库之间略有差异外,用不同方式连接数据库进行查询增删等操作语法也会小有差别。一不小心就烦死。
结贴
 
顶部