高手请进:此SQL语句在BCB中报错,在ACCESS中执行无误,郁闷!

cfstock 2005-03-10 01:50:02


此SQL语句在BCB中报错,提示为“不正常地定义参数对象。提供了不一致或不完整的信息”

在ACCESS中执行此查询却无误,结果完全正确


SELECT sum([money]) AS sumVal
FROM history
WHERE etime Between #3/7/2005 3:3:3# And now();

相关信息:

此语句有同样问题
ADOQuery2->SQL->Clear();
sumSql = "Select sum([jiushui]) as aJiushui,sum([money]) as aMoney from history where [eTime] between #" + DateTimeStr + "# and now()";
ADOQuery2->SQL->Add(sumSql);
Edit7->Text = ADOQuery2->SQL->Text;
//return;
ADOQuery2->Open();
...全文
207 点赞 收藏 13
写回复
13 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
slwang2003 2005-07-19
关注
回复
cfstock 2005-03-10
咋结贴呀
回复
weill 2005-03-10
谢谢“我又……”,让我学到了东西。
回复
cfstock 2005-03-10
报歉,发贴时未选择分数,专请两位朋友在新贴中领分!

samchoy(SamChoy)
sczyq(我又...........)

答谢贴:
http://community.csdn.net/Expert/TopicView1.asp?id=3839785
回复
cfstock 2005-03-10
between 发贴时间 and #2005-03-10 02:30:50# 我一直研究这个问题,现在才起床,已经解决了这个问题,最简单的办法就是把#2005-3-6 00:00:00# 改成#2005-3-6 00.00.00# 即可,这与 samchoy(SamChoy) 所言不谋而合,并且sczyq(我又...........) 的办法更为正规一些,同样解决问题

谢谢大家关注,热心技术讨论的朋友都加分
回复
mli0080 2005-03-10
你的时间应该使用字符串方式放到SQL中去才能行吧,另外Now()函数在ACCESS中有吗?
回复
tangyong12 2005-03-10
如果通过程序来判断的话,先确保你的日期格式和系统日期格式是一致的.
回复
samchoy 2005-03-10
同意 sczyq(我又...........) ( ) 信誉:99
关键是BCB把表示时间的":"当成是参数了,所以有这个问题,最好是改用参数传递
回复
Bestbuy 2005-03-10
SQL Server 可以识别以下列格式括在单引号 (') 中的日期和时间:

字母日期格式(例如,'April 15, 1998')


数字日期格式(例如,'4/15/1998'、'April 15,1998')


未分隔的字符串格式(例如'19981207'、'December 12, 1998')
回复
Bestbuy 2005-03-10
改为:
SELECT sum([money]) AS sumVal
FROM history
WHERE etime Between '3/7/2005 3:3:3' And Getdate();
即可。
回复
sczyq 2005-03-10
// 只能这样,才能两种都通用

ADOQuery2->SQL->Clear();
sumSql = "Select sum([money]) as aMoney from history where [eTime] between :BeginDate and :EndDate";
ADOQuery2->SQL->Add(sumSql);
ADOQuery2->Parameters->ParamValues["BeginDate"] = StrToDateTime("03/07/2005 03:03:03");
ADOQuery2->Parameters->ParamValues["EndDate"] = Now();
// Edit7->Text = ADOQuery2->SQL->Text;
//return;
ADOQuery2->Open();
回复
weill 2005-03-10
以下面语句试试。
SELECT sum([money]) AS sumVal
FROM history
WHERE etime BETWEEN '03-07-2005 03:03:03' AND { fn NOW() }

其它的类上面改。
以上在SQL2000下测试,未在ACCESS中测。
回复
cfstock 2005-03-10
这样的SQL语句在BCB中也是同样的错误
select etime - #2005-3-6 00:00:00# as diff from history

所以总结起来发现,BCB中ADOQUERY的SQL属性,不可以存在时间型的常量。

系统:BCB5.0 + ADO补丁 + BCB UPDATE + WINDOWS2003

何以解决?
回复
相关推荐
发帖
C++ Builder
创建于2007-08-02

1.3w+

社区成员

C++ Builder相关内容讨论区
申请成为版主
帖子事件
创建了帖子
2005-03-10 01:50
社区公告
暂无公告