只有这么多,全上了!!!(200分)

  • 主题发起人 主题发起人 MyJob
  • 开始时间 开始时间
M

MyJob

Unregistered / Unconfirmed
GUEST, unregistred user!
A表: 序号 货号 时间 单价 数量 未出数量
1 001 2002-1-1 1.5 4 4
2 001 2002-1-2 1.6 4 4
3 001 2002-1-3 1.7 4 4

其中:'未出数量'表示在先进先出原则下,本入库单还有多少未出库。
----------------以上为入库单---------------------



B表: 序号 货号 出库数量 单价
1 001 5 ?


其中:按照先进先出的原则,B表中的单价为:4*1.5 + 1*1.6 / 5
----------------以上为出库单---------------------

上述业务发生后A表中的'未出数量'分别为 : 0,3,4 。
注:以上只是其中的一例,有可以一次出库要更新好几张入库单,也有可能只更新一张入库单

问题就在这里,怎样不用游标实现该业务?(用游标可以实现)
 
据我所知,应该可以的,但仍须一个SP来处理,一个语句不行。
 
多谢xiaorang,我不奢求源代码,我只需要各位大虾给我一点点提示,我自已想了很久都没
想出来,一想就想到游标,真是有点脑汁绞尽的味道。
 
那只能循环累加B表中的单价,其实游标要好处理一点.
 
游标什么意思?
 
只能使用一段程序(写一个函数)来实现。
将入库单没有‘未出数量’>0 的按日期排序。
从第一条记录开始:扣除需要的数量,计算总价,直到需要的数量满足,计算并返回单价。
注意:需要处理事务回滚。
由于回滚的可能,最终实现不能保证完全按照先进先出的规则。
调用此函数在保存出库单时:

function ...(nNeed:integer):double;
 
比如可以建临时表,
还有,涉及到表内记录排序的问题,往往用自关联解决.
都比游标快.
 
感谢各位提意见,虽然没有解决 :) 给分了!!!
 
多人接受答案了。
 

Similar threads

回复
0
查看
1K
不得闲
S
回复
0
查看
835
SUNSTONE的Delphi笔记
S
S
回复
0
查看
765
SUNSTONE的Delphi笔记
S
后退
顶部