每行记录都需要汇总!

angle097113 2005-01-17 11:37:47
我的数据库中存在商品资料,仓库资料,入库数量,出库数量
然后我显示的结构是:
商品资料 仓库 入库数量 出库数量 当前库存(我摄制的是计算型)
Nokia7200 主仓库 100 0 100
Nokia7200 主仓库 0 20 80
Nokia7200 主仓库 10 0 90
Nokia7200 主仓库 0 10 80
Nokia7200 主仓库 0 10 70
Nokia7200 主仓库 0 26 44
Nokia7200 主仓库 0 16 10
Nokia7200 主仓库 0 10 0

现在我已经实现了,但是当数据量很大的时候速度总是很慢,大家看看有什么好的办法,给点建议,
我以前实现的办法是:(我显示的时候也需要显示行号所以加上了ID)
Procedure TDM_ResAccount.qry_ResAccountDetailCalcFields(DataSet: TDataSet);
Var
qryTemp: TADOQuery;
a: double;
Begin
// Inc(tt);
With DataSet Do
Begin
If DataSet.RecNo > 0 Then
FieldByName('ID').AsInteger := RecNo
Else
FieldByName('ID').AsInteger := 1;
qryTemp := TADOQuery.Create(Self);
qryTemp.Clone(TADOQuery(DataSet));
With DataSet Do
Begin
With qryTemp Do
Begin
first;
a := 0;
While Not Eof Do
Begin
a := a + FieldByName('InNumber').AsFloat -
FieldByName('OutNumber').AsFloat;
If RecNo = DataSet.FieldByName('ID').AsInteger Then
break;
Next;
End;
End;
FieldByName('Remain').AsFloat := a;
End;
qryTemp.free;
End;
End;
...全文
162 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
angle097113 2005-01-17
  • 打赏
  • 举报
回复
我现在的处理方法是当客户查询的时候才汇总的,因为这个当前库存的字段是自己设置的计算类型数据
andylist 2005-01-17
  • 打赏
  • 举报
回复
让服务器在深夜2点做汇总不是行了
管它快还是慢.
反正点时是没有人用机的了
angle097113 2005-01-17
  • 打赏
  • 举报
回复
戏子你的意思是在插入每个纪录的时候就处理这个剩余库存的信息吗?
我们设计的时候没有想到客户需要这样的要求,现在已经开始使用了,所以我们只能被动的去处理这些信息了,你看看有其他的办法吗?
coeltdit 2005-01-17
  • 打赏
  • 举报
回复
用SQL。
cnhgj 2005-01-17
  • 打赏
  • 举报
回复
为什么不在SQL中处理?
zjcxc 2005-01-17
  • 打赏
  • 举报
回复
--如果你的数据库中已经有: 商品资料,仓库资料,入库数量,出库数量
--需要按记录顺序计算当前库存,则在数据库中直接这样算就行了

declare @i decimal
set @i=0
update 表 set @i=@i+入库数量-出库数量,当前库存=@i
aiirii 2005-01-17
  • 打赏
  • 举报
回复
一般這種, 我是做在後台的視圖, 或者存儲過程返回數據集合, 然後, 做下索引優化, 一般可快很多!
pbsql 2005-01-17
  • 打赏
  • 举报
回复
最好在SQL中用触发器处理,每进、出一笔数据直接把当前库存算出来,一劳永逸

你那样处理,数据量很大的时候速度总是很慢,而且每次查询时都要去重复计算,效率低而且浪费资源

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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