query.sql.text:='select name,money*aa from record'
因为我想根据客户输入aa的值,来提出money*aa 后的数据,但是变量不可以出现在语句select后面,
如何处理

解决方案 »

  1.   

    query.sql.text := 'select name , money * ' + inttostr(aa) + ' from record';
      

  2.   

    如果aa是数值,则
    query.sql.text := 'select name , money * ' + floattostr(aa) + ' from record'
      

  3.   

    aa:=trim(edit1.text);
    query.sql.text:='select name,money * ' + aa + ' from record';
      

  4.   

    哦,问题解决了,你们太棒了,总结一下,就是,变量 在显示列的部分可以用  '+aa+'
    在子句中  用    '''+aa+'''   当然 aa 是字符变量 ,对吗
      

  5.   

    可以使用 Select * From Atable where AField = :aa 作为参数,至于加法是用''''括起来是最基本的。
      

  6.   

    总结一下SQL语句中引号(')、quotedstr()、('')、format()在SQL语句中的用法以
    及SQL语句中日期格式的表示(#)、('')
    在Delphi中进行字符变量连接相加时单引号用('''),又引号用('''')表示
    首先定义变量
    var 
    AnInt:integer=123;//为了方便在此都给它们赋初值。虽然可能在引赋初值在某些情况下不对
    AnIntStr:string='456';
    AStr:string='abc';
    AFieldName: string='字符型编号';
    ATableName: string='YourTable';
    ADate:Tdatetime=now;
    Adoquery1:tadoquery;
    1,Delphi语句
    adoquery1.sql.text:=
    'select 字符型编号 from YourTable where 字符型编号='abc' and 整型编号=123';
    等价于
    adoquery1.sql.text:=
    'select '+AFieldName+' from '+ATableName+' where '+AFieldName
    +'='''+AStr+''' and 整型编号='+AnIntStr;
    也等价于
    adoquery1.sql.text:=
    'select '+AFieldName+' from '+ATableName+' where '+AFieldName
    +'='+QuotedStr(AStr)+' and 整型编号='+Inttostr(AnInt);
    传到数据库服务器为:
    select 字符型编号 from YourTable where 字符型编号='abc' and 整型编号=123
      

  7.   

    sql server 中SQL指令中包括动态参数,在D环境下是这样处理的:在SQL中使用“:”号来表示一个动态参数;如下例:
      with adoquery do
       begin
         close;
         sql.clear;
         sql.add('select count(*) from  tbl_person  where  person_age>=:param_age');
         parameters.parambyname('param_age').value:=25;//---这句是为动态参数指定参数值;
         prepared;
         open;
       end;