其实很简单,我只想算出这个表达式的值:  '1+1'
看好了,是字符型表达式.
如果不是字符型表达式我会用: SELECT 1+1   结果:2
可现在是字符型,我用; SELECT '1+1'        结果:'1+1'(可我想要的结果是:2)谢谢了!

解决方案 »

  1.   

    AdoQuery.Sql.Text:='select '+'1+1'
      

  2.   

    你说的和这样写没有什么区别:
    AdoQuery.Sql.Text:='select 1+1' 可我想要的是
    AdoQuery.Sql.Text:='select '+'''1+1''' 
      

  3.   

    select '+'''1+1'''  数据库看到的是 select '1+1' ... 这样就是个字符串
    select '+'1+1'  数据库看到的是 select 1+1 ... 这样就是一表达式,这样才会相加
      

  4.   

    我知道AdoQuery.Sql.Text:='select '+'''1+1''' 出不来计算结果,我问的是有什么方法让他出来结果,而且还是用SQL语句来得到结果.
    我试过了,ACCESS用EVAL和自定义函数在ACCESS里执行是没有问题的,可以达到想要的结果,可在程序里用ADO就不可以了.
      

  5.   

    使用formatfloat函数吧.假设S1和S2字符型,S3为数值型
    S3:=formatfloat( strtoint(s1)+strtoint(S2));
    S:=inttostr(S3)
    with AdoQuery1 do
    begin
        close;
      sql.Clear;
        sql.Add('select 字段名列表 from 表名 where 查询字段名:=S);
        open;   //或者execsql;
    end;
      

  6.   

    Function GetEVal(Const Expression: String): String;
    Var
      vScript: Variant;
    Begin
      vScript := CreateOleObject('ScriptControl');
      vScript.Language := 'JavaScript';
      Result := vScript.Eval(Expression);
      vScript := Unassigned;
    End;edit1.text:=GetEVal('1+1');
      

  7.   

    AdoQuery.Sql.Text:='select '''+1+1+''''
      

  8.   

    抢分的来了,呵呵!
    select Cast(substring('1+2',1,charindex('+','1+2')-1) as int )+cast(substring('1+2',charindex('+','1+2')+1,len('1+2')-charindex('+','1+2'))as int)
      

  9.   

    晕ACCESS,那就在DELPHI 做,查找字符串,转化。