使用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;
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');
AdoQuery.Sql.Text:='select '''+1+1+''''
抢分的来了,呵呵! 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)
AdoQuery.Sql.Text:='select 1+1' 可我想要的是
AdoQuery.Sql.Text:='select '+'''1+1'''
select '+'1+1' 数据库看到的是 select 1+1 ... 这样就是一表达式,这样才会相加
我试过了,ACCESS用EVAL和自定义函数在ACCESS里执行是没有问题的,可以达到想要的结果,可在程序里用ADO就不可以了.
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;
Var
vScript: Variant;
Begin
vScript := CreateOleObject('ScriptControl');
vScript.Language := 'JavaScript';
Result := vScript.Eval(Expression);
vScript := Unassigned;
End;edit1.text:=GetEVal('1+1');
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)