同样的句子,换了数据库后,居然运行不了!进来up up也好!!

uio45757 2002-07-25 06:30:32
AnsiString a,b,e;
a=MaskEdit1->Text;
b=MaskEdit1->Text;
e=" SELECT * FROM TABLE5 where (date between '"+StrToDate(a)+"' and '"+StrToDate(b)+"') "
上面的语句,当我的数据库是sql server的时候,就没有问题,可是!
我原来是用sql server的,后来为了学习打包,就用了.db
不过.db那些数据和字段,都是用sql server的那个导出数据转换而来的但是,问题就出现了,
Project Project1.exe raisde exception class EDBEngineErr with message"Invalid use of key word,
Token:date
Line Number;1' process stopped

不明白!!
...全文
32 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
网事随逢 2002-07-28
  • 打赏
  • 举报
回复
mark!
uio45757 2002-07-26
  • 打赏
  • 举报
回复
试完了,原来是,要改2样东西。
1,改关键字,
2,用那个参数!
谢了,各位
jian9 2002-07-25
  • 打赏
  • 举报
回复
PARODOX数据库日期查询格式时月/日/年,其余的SQL语句是一样的!!
Chimae 2002-07-25
  • 打赏
  • 举报
回复
还有就是你的字段名不能是数据库中的关键字!
Chimae 2002-07-25
  • 打赏
  • 举报
回复
不同的数据库对日期字段要求的格式是不同的!
PARODOX(.DB)中对日期字段的格式如下:
FORMATDATETIME("MM/DD/YYYY",DATETIMEPICKER1->DATE);
所以你只要格式转换一下就行了!
bearbaba 2002-07-25
  • 打赏
  • 举报
回复
我认为是数据库引擎出错
原因:你在使用SQL SERVER时,实际上是sql已经为你配置好了与odbc或者是ado连接的接口,但是当你更换了数据库后,在odbc或者是ado中都没有进行新的配置,也就是无法与数据库服务器进行沟通,怎么可能让这些操作被执行呢?
wyb_45 2002-07-25
  • 打赏
  • 举报
回复
同意 wxcwuxuchun(清风) 用参数就没问题,可以通用。
String SQL_S="SELECT * FROM TABLE5 where (date between :SD and :ED)";
Query->Close();
Query->SQL->CLear();
Query->SQL->Add(SQL_S);
Query->Params->ParamByName("SD")->AsDatatime = DateTimePicker1->DateTime;
Query->Params->ParamByName("ED")->AsDatatime = DateTimePicker2->DateTime;
Query->Open();
albert 2002-07-25
  • 打赏
  • 举报
回复
同意 uio45757(一条傻鱼)!最好不要用date, time, int, single等关键字作为字段名。
albert 2002-07-25
  • 打赏
  • 举报
回复
同意 uio45757(一条傻鱼)!最好不要用date, time, int, single等关键字作为字段名。
piaorenqian 2002-07-25
  • 打赏
  • 举报
回复
agree, datetime 和date是两个概念
albert 2002-07-25
  • 打赏
  • 举报
回复
同意 uio45757(一条傻鱼)!
e_cat 2002-07-25
  • 打赏
  • 举报
回复
agreeeeeeee
jishiping 2002-07-25
  • 打赏
  • 举报
回复
当然有关系啦。因为datetime包含日期和时间,比如 2002/07/24 08:10:00
而 Pardox 数据库的字段类型为日期型,SQL语句里包含时间,当然不行了。
你直接用Edit的内容就可以了,干嘛用StrToDate(a)转换啊,反而转出问题
了。
e = "SELECT * FROM TABLE5 where date between '"+ a + "' and '" + b + "'";
wxcwuxuchun 2002-07-25
  • 打赏
  • 举报
回复
用参数好一点
SELECT * FROM TABLE5 where (date between :SD and :ED)
Query->Params->ParamByName(SD)->AsDatatime = StrToDate(a);
Query->Params->ParamByName(ED)->AsDatatime = StrToDate(b);
Query->Open();
hlmsoft 2002-07-25
  • 打赏
  • 举报
回复
paradox却是有一些标准sql关键字不支持,如select into等,没办法,我用powerdesign生成时,也有这种情况。认了吧
qdxby 2002-07-25
  • 打赏
  • 举报
回复
.db是什么数据库文件?我怎么想不起来了。一条傻鱼告诉我一下。
uio45757 2002-07-25
  • 打赏
  • 举报
回复
至于,字段名能不能是数据库的关键字,呵呵,我要回去试试才知道,不过,我那句语句,在server那里,可以运行成功

各位,不好意思啊,我先去试试再结帐,呵呵
uio45757 2002-07-25
  • 打赏
  • 举报
回复
(JSP 季世平)大侠,我就是试过,e = "SELECT * FROM TABLE5 where date between '"+ a + "' and '" + b + "'";
用你那个方法不行,我才换用我现在的方法

各位,我本来就只是记录了日期,没有记录时间,那我当然是换字段,

至于,字段名能不能是数据库的关键字,呵呵,我要回去试试才知道,不过,我那句语句,在server那里,可能运行成功
uio45757 2002-07-25
  • 打赏
  • 举报
回复
hehe,要补充几句,
AnsiString a,b,e;
a=MaskEdit1->Text;
b=MaskEdit1->Text;
e=" SELECT * FROM TABLE5 where (date between '"+StrToDate(a)+"' and '"+StrToDate(b)+"') "
Query1->Close();
Query1->SQL->clear():
Query1->SQL->Add(e);
Query1->Open():

其实我在数据转换的时候,在SQL server时,date字段是datetime类型
在.db时,我把它换成是date字段,是date类型!
我不知道有没有关系!!
先谢了


luhongjun 2002-07-25
  • 打赏
  • 举报
回复
.db是文件型数据库,有好多SQL语句是不支持的。

1,178

社区成员

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

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