请哪位高手帮我如何把字符串feild07=field01+field02*(field03-field04*(field05-field06))对应到表中的fi

  • 主题发起人 主题发起人 xygsw
  • 开始时间 开始时间
X

xygsw

Unregistered / Unconfirmed
GUEST, unregistred user!
请哪位高手帮我如何把字符串feild07=field01+field02*(field03-field04*(field05-field06))对应到表中的field07中去?(300分)<br />请哪位高手帮我如何把字符串feild07=field01+field02*(field03-field04*(field05-field06))对应到表中的field07中去?
其中field01…field07都为integer,feild07=field01+field02*(field03-field04*(field05-field06))为字符型的表达式
最好有源代码。
 
用计算字段
 
你的问题不是很清楚,先试一把
procedure TForm1.Button1Click(Sender: TObject);
var
yourstr,feild07str:string;
i:integer;
begin
yourstr:='feild07=field01+field02*(field03-field04*(field05-field06))';
for i:=1 to strlen(Pchar(yourstr)) do
begin
if yourstr='=' then
break
else
feild07str:=feild07str+yourstr;
end;
yourtable.feildbyname('feild07').asinteger:=strtoint(feild07str);
end;
但愿有没有理解错你的意思:)
 
fieldbyname('field xx').asinteger 做運算就好了
 
procedure tform1.table1calcfields(dataset:tdataset);
begin
table1field07.value=table1field01.value+table1field02.value*
(table1field03.vaule-table1field04.value*(table1field05.value-
table1field06.value));
end;
 
“=”前少了:
 
兄弟们,表达式样是存在另一个表中,也就是说计算关系是从另一个表中得出的
我要通过计算关系得到field07的值,因而需要对计算关系进行解码
 
xygsw:
好难啊!,宏代换是肯定不行的。
须逐字解读文本,繁杂的逻辑运算。
我投降!
高手请。。。。
 
看来还是我猜得准。
你这样试试改:
。。。。。
yourstr:=AnotherTable.feildbyname('表达式样').asstring;
.........
 
redzhong:
如果真行,太棒了!!!!
这个问题困扰了我很久,觉得希望渺茫,都没问。
 
首先把字符串feild07=field01+field02*(field03-field04*(field05-field06))
生成后缀表达式,就像编译原理一样。
field01 field02 field03 field04 field05 field06 - * - * +
接下去的步骤就像 写计算器的运算步骤,相信大家都还记得吧。
当然还得用Table.feildbyname('field0X').asstring;
 
使用Tquery来解决, 其SQL 为:
select field01,field02,field03,field04,field05,
field06, field01+field02*(field03-field04*(field05-field06)) field07
from table
即可得到计算结果,其中field07为一个别名。
 
请大家关注:jiangone的方法,很有创意
 
可如Mataijin用法,但可用在一个Query里作为LookUp过去,很多类似也可这样做
 
jiangone
好象不太行,因为field01+field02*(field03-field04*(field05-field06)) 为字符串型
而且预先是不知道他的确切表达式,他是从另一个表中的一条记录
 
是不是过滤用?
 
假设你的计算表达式在变量Str1中, 如:
Str1:='field01+field02*(field03-field04*(field05-field06)) '
你可以这样写:
Str1:=Str1+' field07'
Query1.close;
Query1.sql.clear;
Query1.sql.add('select field01,field02,field03,field04,field05,field06, ')
Query1.sql.add(Str1);
Query1.sql.add('from YourTable');
Query1.open;
即执行了这个SQL。

 
请大家继续讨论,我出300分,请!
 
我认为jiangone已经解决问题了
 
后退
顶部