从第一行自动计算到最后一行

anger6678 2009-05-25 12:30:16
有一个表有如下字段:

账户名称 收入总额 支出总额 账户余额
A
B
C
....

想实现这样一个功能:账户余额=收入总额-支出总额
算完A行,继续算B行,一直到最后一行
请问高手如何实现
...全文
134 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
阿三 2009-05-25
  • 打赏
  • 举报
回复
[Quote=引用楼主 anger6678 的帖子:]
有一个表有如下字段:

账户名称  收入总额  支出总额  账户余额
A
B
C
....

想实现这样一个功能:账户余额=收入总额-支出总额
                  算完A行,继续算B行,一直到最后一行
                  请问高手如何实现

[/Quote]

update table set 账户余额=收入总额-支出总额
这样更新一下就行了。
anger6678 2009-05-25
  • 打赏
  • 举报
回复
ABC...是不会重复的,先汇总A的收入总额,再汇总A的支出总额,然后自动算出A的账户余额,接着这样循环,执行B,一直到结束
bdmh 2009-05-25
  • 打赏
  • 举报
回复
你所说的先算完A是什么意思,先汇总A的价格的和吗,如果有多条A怎么处理
anger6678 2009-05-25
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 luxuewei5214 的回复:]
update试试
[/Quote]
具体怎么写啊
luxuewei5214 2009-05-25
  • 打赏
  • 举报
回复
update试试
anger6678 2009-05-25
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 bdmh 的回复:]
这个无论写程序还是写存储过程,都不难吧,就是一个循环,统计,写入的过程
[/Quote]
高手,账户余额=收入总额-支出总额,这个怎么算我会写,就是不知道怎么写循环,晕死,而且是要在FormCreate里写,就是一打开窗口就自动计算
bdmh 2009-05-25
  • 打赏
  • 举报
回复
这个无论写程序还是写存储过程,都不难吧,就是一个循环,统计,写入的过程
anger6678 2009-05-25
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 zxf_feng 的回复:]
加个计算字段也可以吧。

而且
s:='select 账户类别,sum(收入金额)as 收入总额 from Income where 账户类别='+QuotedStr(bsSkinDBEdit1.Text)+' group by 账户类别';
s:='select 账户类别,sum(支出金额)as 支出总额 from expense where 账户类别='+QuotedStr(bsSkinDBEdit1.Text)+' group by 账户类别';

这两个语句可以一个SQL中进行的,直接算出来账户余额了

select a.账户类别,sum(a.收入金额) as 收入总额,su…
[/Quote]
谢谢高手提点,学习了
阿三 2009-05-25
  • 打赏
  • 举报
回复
加个计算字段也可以吧。

而且
s:='select 账户类别,sum(收入金额)as 收入总额 from Income where 账户类别='+QuotedStr(bsSkinDBEdit1.Text)+' group by 账户类别';
s:='select 账户类别,sum(支出金额)as 支出总额 from expense where 账户类别='+QuotedStr(bsSkinDBEdit1.Text)+' group by 账户类别';

这两个语句可以一个SQL中进行的,直接算出来账户余额了

select a.账户类别,sum(a.收入金额) as 收入总额,sum(b.支出金额)as 支出总额,
sum(a.收入金额)-sum(b.支出金额) as 账户余额
from Income a,expense b
where a.账户类别=b.账户类别
group by a.账户类别
注意可能要用到外联接
anger6678 2009-05-25
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 zxf_feng 的回复:]
引用楼主 anger6678 的帖子:
有一个表有如下字段:

账户名称 收入总额 支出总额 账户余额
A
B
C
....

想实现这样一个功能:账户余额=收入总额-支出总额
算完A行,继续算B行,一直到最后一行
请问高手如何实现



update table set 账户余额=收入总额-支出总额
这样更新一下就行了。
[/Quote]
3Q,这样果然解决了
anger6678 2009-05-25
  • 打赏
  • 举报
回复
大概代码如下:这样只是执行了一行,如何才能让他循环执行,直到最后一行

procedure TFrmAccountType.bsSkinButton6Click(Sender: TObject);
var
Income,Expense,Balance:Currency;
s:string;
begin
s:='select 账户类别,sum(收入金额)as 收入总额 from Income where 账户类别='+QuotedStr(bsSkinDBEdit1.Text)+' group by 账户类别';
with Query2 do
begin
Close;
SQL.clear;
SQL.add(s);
try
open;
except
execsql;
end;
end;
Income:=Query2.Fields[1].AsCurrency;
with Table1 do
begin
edit;
fieldValues['收入总额']:=Income;
post;
end;
s:='select 账户类别,sum(支出金额)as 支出总额 from expense where 账户类别='+QuotedStr(bsSkinDBEdit1.Text)+' group by 账户类别';
with Query2 do
begin
Close;
SQL.clear;
SQL.add(s);
try
open;
except
execsql;
end;
end;
Expense:=Query2.Fields[1].AsCurrency;
with Table1 do
begin
edit;
fieldValues['支出总额']:=Expense;
post;
end;
Balance:=StrToCurr(IncomeSum.Text)-StrToCurr(ExpenseSum.Text);
with Table1 do
begin
edit;
fieldValues['账户余额']:=Balance;
post;
end;
end;
hongqi162 2009-05-25
  • 打赏
  • 举报
回复
update 表名 set 账户余额 = 收入总额 - 支出总额



不是这个意思么?你的总额是怎么计算出来的

16,742

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧