请教一个访问Access数据库的问题(有关日期/时间字段的)

fall1979 2006-05-25 03:46:48
我要在Access数据库中查询某个表中介于某个时间段内的记录我的语句是
select * from Lw_NormalEvent where (EventPlace='003.001.017') and (EventTime>=#2003-12-4 11:20:15#) and (EventTime<=#2005-5-25 11:20:15#)
在BCB中的连接模式是创建一个数据库的ODBC(比如名称:aa),然后
AnsiString strConnect,strCommand;
strCommand="select * from Lw_NormalEvent where (EventPlace='003.001.017') and (EventTime>=#2003-12-4 11:20:15#) and (EventTime<=#2005-5-25 11:20:15#)";
strConnect="Provider=MSDASQL.1;Persist Security Info=True;Data Source=aa";
addEvent->CommandText=strCommand;
addEvent->ConnectionString=strConnect;
addEvent->Open();
运行的时候总提示[Microsoft][ODBC Microsoft Access Driver]COUNT字段不正确
我上面语句中根本没有COUNT字段啊!
还有我把上面的查询语句放到Access的SQL视图中直接运行是没问题的!

请问有哪位兄弟知道怎么回事啊?

对了,我把SQL语句改了一下,把后面的时间去掉变成
select * from Lw_NormalEvent where (EventPlace='003.001.017') and (EventTime>=#2003-12-4#) and (EventTime<=#2005-5-25#) 就没问题。EventPlace字段的类型是日期/时间
...全文
298 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
stevenjscn 2006-05-29
  • 打赏
  • 举报
回复
谢谢关中刀客,我也学会了新的知识。
FirryHere 2006-05-26
  • 打赏
  • 举报
回复
最好用access建立一个查询,然后你看看他产生的sql语句是什么样的。因为access有自己的个性。哈哈
daydayup234 2006-05-26
  • 打赏
  • 举报
回复
解决了,注意:用::
void __fastcall Tmain_::Button3Click(TObject *Sender)
{
AnsiString sql;
sql="select * from Lw_NormalEvent \r\n"
"where (EventPlace='003.001.017') \r\n"
"and (EventTime>=#2003-12-4 11::20::15#) \r\n"
"and (EventTime<=#2005-5-25 11::20::15#)";
ADOQuery1->SQL->Clear(); ShowMessage(sql);
ADOQuery1->SQL->Add(sql);
ADOQuery1->Open();
}
fall1979 2006-05-26
  • 打赏
  • 举报
回复
stevenjscn(小胖),怎么分开比较?那样容易引起条件混乱吧!
fall1979 2006-05-26
  • 打赏
  • 举报
回复
jjwwang(风归叶),你的第二条语句select * from data where (recv_date>=#2003-05-02 00:00:00#) and (recv_date<=#2003-05-02 00:00:00#)理论上没错,直接在Access上也能运行,但是把SQL语句通过BCB访问数据库就出错的!
fall1979 2006-05-26
  • 打赏
  • 举报
回复
daydayup234(关中刀客),真是高人啊!

刚看到你的回帖的时候还以为是ADODataSet和ADOQuery的差别,试了之后又不对,之后又认为是不是加了\r\n换行的问题。直到最后拿你的字符串和我自己的字符串仔细比较才发现原来是时间用两个冒号来隔开的。BCB和Access的组合也真是怪胎了,竟然用11::20::15表示时间,而不是11:20:15,呵呵!

不管怎么说,问题解决了!非常感谢!结帖给分!
jone7319 2006-05-25
  • 打赏
  • 举报
回复
这个问题我也碰到过,不支持日期+时间的,只能用日期。
CACACACACA 2006-05-25
  • 打赏
  • 举报
回复
Access数据库
select * from data where recv_date>=#2003-04-29#

select * from data where (recv_date>=#2003-05-02 00:00:00#) and (recv_date<=#2003-05-02 00:00:00#)
stevenjscn 2006-05-25
  • 打赏
  • 举报
回复
我是将DATE和TIME分开作比较的。
stevenjscn 2006-05-25
  • 打赏
  • 举报
回复
fall1979 2006-05-25
  • 打赏
  • 举报
回复
leyon328(仰着头看天),单引号是SQL Server数据库中的用法,我一开始也是用单引号的,不行的!谢谢!
leyon328 2006-05-25
  • 打赏
  • 举报
回复
bcb中#改为单引号,试试
fall1979 2006-05-25
  • 打赏
  • 举报
回复
有没有会的兄弟啊?不会的帮忙顶一下也好啊!谢谢啦!

比较着急!
fall1979 2006-05-25
  • 打赏
  • 举报
回复
对了,刚才有朋友帮我在VB中运行了这条SQL语句也没问题,就是不知道BCB为什么会这样!有知道的朋友帮个忙!先谢谢了!

1,178

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 数据库及相关技术
社区管理员
  • 数据库及相关技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧