declare @s varchar(8000) set @s='numZN+intSR+intXS-intZC-intGZ'set @s='select '+@s+' from tb where ...' exec(@s)
to xinxinshou2009 谢谢啊 之所以来问,是想看看这个思路能不能解决。可能思路就错了。 我的每个字段前面都有对应表名标识的。如:table1.Field1+table2.Field3-table3.Field2...,因为我的统计表达时时用户自己选择配置的。所以这里面表与字段都是一个变量。FastReport字段表达式有这个功能。看了半天没有看懂FastReport。哎
uses StrUtils;var
Strs: TStringList;
str: string;
begin
str := 'A+B+C+D-E-F';
Strs := TStringList.Create;
try
str := AnsiReplaceStr(str, '+', ' ');
str := AnsiReplaceStr(str, '-', ' ');
Strs.Text := AnsiReplaceStr(str, ' ', #10);
ShowMessage(Strs.Text);
finally
Strs.Free;
end;
end;
不过不是我想要的结果。可能没有表达清楚。表达式:numZN+intSR+intXS-intZC-intGZ...
我想循环一个一个的提取,及提取第一个变量numZN后再提起后面一个变量...。numZN+intSR+intXS-intZC-intGZ因为我需要将每个变量获取后,然后再到数据库表中去查找出对应的值相加减。类似FastReport字段表达式运算报表那种。字段是从几个表中取出的然后运算。我这里只考虑加减。
思路:numZN+intSR+intXS-intZC-intGZ...应该替换成具体是数
numZN=100(根据字段numZN从数据库中取出的)
intSR=200(同样)
intXS=300
intZC=100
intGZ=50
结果:(100+200+300-100-50...)
不过不是我想要的结果。可能没有表达清楚。表达式:numZN+intSR+intXS-intZC-intGZ...
我想循环一个一个的提取,及提取第一个变量numZN后再提起后面一个变量...。numZN+intSR+intXS-intZC-intGZ因为我需要将每个变量获取后,然后再到数据库表中去查找出对应的值相加减。类似FastReport字段表达式运算报表那种。字段是从几个表中取出的然后运算。我这里只考虑加减。
思路:numZN+intSR+intXS-intZC-intGZ...应该替换成具体是数
numZN=100(根据字段numZN从数据库中取出的)
intSR=200(同样)
intXS=300
intZC=100
intGZ=50
结果:(100+200+300-100-50...)
set @s='numZN+intSR+intXS-intZC-intGZ'set @s='select '+@s+' from tb where ...'
exec(@s)
谢谢啊
之所以来问,是想看看这个思路能不能解决。可能思路就错了。
我的每个字段前面都有对应表名标识的。如:table1.Field1+table2.Field3-table3.Field2...,因为我的统计表达时时用户自己选择配置的。所以这里面表与字段都是一个变量。FastReport字段表达式有这个功能。看了半天没有看懂FastReport。哎