sql.Text := 'select sum(card_ss) from card_detal where card_number like ' + QuotedStr('2001' + '%');

解决方案 »

  1.   

    QuotedStr('2001' + '%');
    如果这里面的2001一定要用变量形式怎么写???
    谢谢!
      

  2.   

    'select sum(card_ss) from card_detal where card_number like ' + '%'+:Year+'%'
      

  3.   

    Year是参数!!,使用Parametes[0]控制
      

  4.   

    如果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;
      

  5.   

    还是包错!
    好象最后一句:
    query1.sql.text:=......
    这句话编译通过不了!
      

  6.   

    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;
    我对你问题的理解对吗?
      

  7.   

    如果你用的是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;
                
      

  8.   

    不要在SQL中就把‘%’添上,只是 like :card-number即可,然后在对参数赋值时用
    parambyname('card_number').asstring:=''''+'2001%'+''''就可以了
      

  9.   

    我认为这样:
    ...
      sql.add('select sum(card_ss) from card_detal where card_number like :card_number);
      parambyname('card_number').asstring:='2001'+'%';
    ...      
      

  10.   

       以下这段程序通过,且正确执行。环境: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 + '%' + '''');
          
        不久前我刚刚开始学SQL也是常常犯这种错误,不知道解释对不对,请各位大虾斧正。