STACK OVERFLOW错误!(100分)

  • 主题发起人 主题发起人 CJ
  • 开始时间 开始时间
C

CJ

Unregistered / Unconfirmed
GUEST, unregistred user!
实在复杂,麻烦,火大!
我实际上要做的很简单,当编辑折扣字段时,自动改
变价格字段(别告诉我设计有问题,呵呵,实际上我
经过很多考虑的),代码如下:
//ADOQUERY
procedure TSalesDM.AQQuoteDetailDSDesigner5Change(Sender: TField);
begin
with AQQuoteDetail do
if Fields[3].AsCurrency = 0 then
exit
else
Fields[5].AsCurrency := Fields[4].AsCurrency / Fields[3].AsCurrency;
end;

可是,运行时老是出现STACK OVERFLOW错误!可值是
改变了!于是,我用TRY-EXCEPT保护这些代码,可问
题严重的时候出现致命错误,我实在火大死了。

别告诉我.VALUE,试过,没用!
 
在Change事件中改变字段值,又会引起Change的调用,无限循环,导致堆栈溢出。
改进:
将方法写到Field[3]的Change事件中。
 
sorry,你写的已是字段的事件了。
 
请提供Field1-5的名字
 
kiss you~~~

提醒我了,实际上,我在价格里也加了代码,所以可能出问题!!!实在是没面子,哎!
100分啊,麻烦帮忙改进一下吧,呵呵

procedure TSalesDM.AQQuoteDetailDSDesigner4Change(Sender: TField);
begin
try
with AQQuoteDetail do
Fields[4].AsCurrency := Fields[5].AsCurrency * Fields[3].AsCurrency;
except

end;
end;
 
3,4,5分别是
参考价格
实际价格
折扣
 
else
a:=Fields[4].AsCurrency
b:=Fields[3].AsCurrency;
c:=a/b;
Fields[5].AsCurrency :=c


test??
 
如果Field[4]=Designer4,Field[5]就是Designer5,那这两个过程不都死悄悄了吗
 
是啊,所以我找到问题了呀,帮忙改进改进吧,呵呵...
好歹也有一百啊
 
你已编了Field[4],field[5]的Change事件,不知field[3]有没有Change事件,如没有,不如将其设为计算字段,Field[3].Value:=Field[4].Value/Field[5].Value
 
不成,这些结果都需要保存:(
3没有CHANGE
 
Field[3]设成物理字段,但在OnCalculate事件中按公式计算。
Query的AutoCalculate=True;
如还是不计算,添一个无用的计算字段。
 
Lee:我搞定了,加了个FLAT,很简单的,谢谢你了,真是一句话点醒梦中人
好没面子,好没面子。

另:LEE和牛仔库的牌子LEE有关系?好贵的说:)
 
后退
顶部