'select sum(card_ss) from card_detal where card_number like ' + '%'+:Year+'%'
Year是参数!!,使用Parametes[0]控制
如果Year是String类型的要这样: var S:string; begin S:=''''; Query1.SOL.Clear; Query1.SQL.Text:='select sum(card_ss) from card_detal where card_number like ' + S+'%'+:Year+'%'+S;
还是包错! 好象最后一句: query1.sql.text:=...... 这句话编译通过不了!
procedure TForm1.Button1Click(Sender: TObject); var s : string ; begin with query1,sql do begin close ;clear ; s := '2001' ; //在这里附参数值,不一定非要用:式的参数的 Add('select sum(card_ss) from card_detail where card_number like '''+s+'%''') ; open ; // showmessage(text) ; end ; end; 我对你问题的理解对吗?
如果你用的是sql server 那么你可以这样写 var s:string; card_number:string; ... s:='select sum(card_ss) from card_detal where card_number like "'+card_number +'"%'; sql.text:=s; 如过你是其他的数据库,请将"改为+''''; 而且你的参数必须在加入在SQl.text,或者SQl.add()之前, 建议使用SQL.text;
不要在SQL中就把‘%’添上,只是 like :card-number即可,然后在对参数赋值时用 parambyname('card_number').asstring:=''''+'2001%'+''''就可以了
我认为这样: ... sql.add('select sum(card_ss) from card_detal where card_number like :card_number); parambyname('card_number').asstring:='2001'+'%'; ...
以下这段程序通过,且正确执行。环境:SQLServer. with query1 do begin close; sql.clear; sql.add('select sum(card_ss) as ttuy from card_detal where card_number like :card_number'); parambyname('card_number').AsString:='2001%'; open ; end; edit1.text:=query1.FieldByname('TTuy').asString; 你的错误在于将card_Number参数在SQL语句中的表现形式误解。按照你的代码: sql.add('select sum(card_ss) from card_detal where card_number like :card_number '+'%'); parambyname('card_number').asstring:='2001' 那么,SQL语句最终表现将是: select sum(card_ss) from card_detal where card_number like '2001'% //错误 而这个语句是错误的。正确的语句是: select sum(card_ss) from card_detal where card_number like '2001%' //正确 所以,你如果说需要非得将card_number作为一个变量来处理的话,只能是这样: card_number:='2001' sql.add('select sum(card_ss) from card_detal where card_number like' + '''' + card_number + '%' + '''');
如果这里面的2001一定要用变量形式怎么写???
谢谢!
var
S:string;
begin
S:='''';
Query1.SOL.Clear;
Query1.SQL.Text:='select sum(card_ss) from card_detal where card_number like ' + S+'%'+:Year+'%'+S;
好象最后一句:
query1.sql.text:=......
这句话编译通过不了!
var
s : string ;
begin
with query1,sql do begin
close ;clear ;
s := '2001' ; //在这里附参数值,不一定非要用:式的参数的
Add('select sum(card_ss) from card_detail where card_number like '''+s+'%''') ;
open ;
// showmessage(text) ;
end ;
end;
我对你问题的理解对吗?
那么你可以这样写
var
s:string;
card_number:string;
...
s:='select sum(card_ss) from card_detal where card_number like "'+card_number +'"%';
sql.text:=s;
如过你是其他的数据库,请将"改为+'''';
而且你的参数必须在加入在SQl.text,或者SQl.add()之前,
建议使用SQL.text;
parambyname('card_number').asstring:=''''+'2001%'+''''就可以了
...
sql.add('select sum(card_ss) from card_detal where card_number like :card_number);
parambyname('card_number').asstring:='2001'+'%';
...
with query1 do
begin
close;
sql.clear;
sql.add('select sum(card_ss) as ttuy from card_detal where card_number like :card_number');
parambyname('card_number').AsString:='2001%';
open ;
end;
edit1.text:=query1.FieldByname('TTuy').asString; 你的错误在于将card_Number参数在SQL语句中的表现形式误解。按照你的代码:
sql.add('select sum(card_ss) from card_detal where card_number like :card_number '+'%');
parambyname('card_number').asstring:='2001' 那么,SQL语句最终表现将是:
select sum(card_ss) from card_detal where card_number like '2001'%
//错误
而这个语句是错误的。正确的语句是:
select sum(card_ss) from card_detal where card_number like '2001%'
//正确
所以,你如果说需要非得将card_number作为一个变量来处理的话,只能是这样:
card_number:='2001'
sql.add('select sum(card_ss) from card_detal where card_number like' + '''' + card_number + '%' + '''');
不久前我刚刚开始学SQL也是常常犯这种错误,不知道解释对不对,请各位大虾斧正。