具体是这样的,
摘要 借方, 贷方 余额
提现 100 100
付款 20 80
收入 200 280要求在改变借方,贷方的值时, 余额随之发生变化
例子
把提现 借方100 改变150
结果就变成
摘要 借方, 贷方 余额
提现 150 150
付款 20 130
收入 200 330我想这个问题很有用?对大家也有很帮助?
摘要 借方, 贷方 余额
提现 100 100
付款 20 80
收入 200 280要求在改变借方,贷方的值时, 余额随之发生变化
例子
把提现 借方100 改变150
结果就变成
摘要 借方, 贷方 余额
提现 150 150
付款 20 130
收入 200 330我想这个问题很有用?对大家也有很帮助?
你可以在dataset.fields.onchange中
写代码重新生成
好象你也对业务不太清楚,一般流水是不允许改的
新增或着冲红的方式
然后prior取数据假如为j
再next然后根据借方和贷方是否为0判断j:=j+vale;
一直到eof不就行了
1、编写事件
procedure OnCalcBalance(sender: TField);
begin
当前记录集前移一条
取出余额
记录集.Next;
while not 记录集.eof
begin
根据摘要,处理数据逻辑关系
记录集.Next;
end;
end;2、初始化,在打开记录集的时候动态绑定
procedure InitParam();
begin
打开记录集
if 记录集.FindField('借方')<>nil then 记录集.FindField('借方').OnChange := OnCalcBalance;
if 记录集.FindField('贷方')<>nil then 记录集.FindField('贷方').OnChange := OnCalcBalance;
贷方
end;
另外,检查一下你的程序,是不是用了 "余额" 的OnChange?
那要在那里写?
代码贴出来,请帮我看看
//借方字段的事件 我在这里先不减贷方数额
procedure TForm1.ADOQuery1jyChange(Sender: TField);
//var
// i,j:integer;
begin
//先上移一条
adoquery1.Prior;
//取出余额数
i:=adoquery1.FieldByName('ye').AsInteger;//余额
//下移一条,回到当前记录
adoquery1.Next;
while not adoquery1.eof do
begin
//取出当前记录的金额
j:=adoquery1.FieldByName('jy').AsInteger;
adoquery1.Edit;
//当前行记录余额等于 前一条记录金额(jy)加当前行记录余额(s)
adoquery1.FieldByName('ye').Value:=i+j;
//保存当前行记录的余额
i:=adoquery1.FieldByName('ye').AsInteger;
//记录下移
adoquery1.Next;
end;
end;
帮我看看,我实在太笨了,感谢两位,
在onchang内不能改变记录指针