给sql参数付值时出错(50分)

  • 主题发起人 主题发起人 不点儿蚁
  • 开始时间 开始时间

不点儿蚁

Unregistered / Unconfirmed
GUEST, unregistred user!
我的数据库名为:chargedb,其中有表:battletab.db,date 为其中的一个日期型字段,
在给query1设定了数据库chargedb后
有程序:
query1.sql.clear;
query1.sql.add('select * from battletab.db where date=:p1');
query1.pramabyname('p1').asstring:=s;//s为一个字符串变量,值可取:'00-8-22'
query1.prepare;
query1.open;

但程序运行到query1.prepare时,出错,"invalid use of keyword. token: date=?"
那位高手帮我解决一下这个问题,感激不尽
 
你的date 是不是一个字段,字段值是不是日期型的?如果是 S 好像得转换
直接为:
Query1.SQL.Text :='select * from battletab.db where date ="'+S+'"';
不行吗?


 
date好象是个保留字,将这个字段换个名试试.
 
query1.sql.clear;
query1.sql.add('select * from battletab.db where "date"=:p1');
query1.pramabyname('p1').asstring:=s;//s为一个字符串变量,值可取:'00-8-22'
query1.prepare;
query1.open;

 
我现在也遇到了这样的问题,类型是日期、数值型都出这种问题。
再关注
 
1.将Date换成别的名字
2.query1.pramabyname('p1').AsDateTime:=StrToDate(S);//s为字符串值
 
>>query1.pramabyname('p1').asstring:=s;
1.日期型赋值,不能用字符形式.
query1.params[0].value:=strtodatetime(s);
2.s的读取也可通过tdatetimepicker读其datetime属性
 
>>date好象是个保留字,将这个字段换个名试试.
同意.
>>>1.日期型赋值,不能用字符形式.
SQL6.5就行.

to:不点儿蚁
多试几次吧,不同的数据库,参数类型不同的.
 
paradox不能用保留字,包括字段类型名,例如:date,money等
 
两种可能:
1.date是个保留字,将这个字段换个名如MYDATE.
2.query1.sql.clear;
query1.sql.add('select * from battletab.db where mydate=:p1');
query1.pramabyname('p1').asDateTime:=StrToDate(s);//s为一个字符串变量,值可取:'00-8-22'
query1.prepare;
query1.open;
或者直接将s改为real型,因为DateTime在数据库中是real型的,不过这样用很复杂
 
谢谢大家的帮助,问题已经解决了
再次多谢大家!
 
蚂蚁你也得分分啊.懒得帮你打扫卫生
 
多人接受答案了。
 
后退
顶部