Office中国论坛/Access中国论坛

标题: [原创][求助]如何求出相同字段上下记录值的滚动差额????? [打印本页]

作者: dhqian-qp    时间: 2006-3-5 16:37
标题: [原创][求助]如何求出相同字段上下记录值的滚动差额?????
[attach]16168[/attach]




产品名称          工序名称         工序代码         与上工序差

      A                   打磨              1000                0(因为是头道工序,所以是“0”)

     A               SB处理              1020               20(由1020-1000=20)

     A                  研扫               1050               30(由1050-1020=30)

    A                    装箱             1070                20  (由1070-1050=20)

    B                   打磨               1000                 0

    B                   去毛边            1010               10(同上)

    B                  SB处理             1020               10(同上)

    B                  装箱                   1070              50(同上)

请问,如何通过工序代码字段上下记录的滚动相减,得出“与上道工序差”字段值呢?           

                  

[此贴子已经被作者于2006-3-5 11:39:45编辑过]


作者: msf    时间: 2006-3-5 20:20
你的表中应该在增加一个字段[id],然后创建一个函数,在查询中引用

Public Function F(A As Variant, D As Variant)
On Error GoTo ERR_F
F = A - DLookup("[工序代码]", "表1", "[id]=" & D - 1)
If F <= 0 Or IsNull(F) Then
F = 0
End If

EXIT_F:
Exit Function

ERR_F:
F = 0
End Function
作者: msf    时间: 2006-3-5 20:22
SELECT 表1.产品名称, 表1.工序名称, 表1.工序代码, 表1.id, f([工序代码],[id]) AS 表达式1
FROM 表1;
作者: fan0217    时间: 2006-3-6 17:08
在论坛上有很多关于求余额的方法,可以搜索一下。
作者: dhqian    时间: 2006-3-10 00:55
多谢msf!

感谢你给了我新的思路,但是,增加了ID编号后,如果工序顺序发生了变化,结果就不准确了。

另,fan0217版主,我认为这跟求余额有一定区别的。求余额是从头到尾的滚动累加,而我这里想

要的是一种相同字段中,上、下两个记录之间的滚动差额,而不是整个字段记录之间的滚动差额。

多谢了!  
作者: fan0217    时间: 2006-3-10 03:06
方法一样,做一些更改应该可以的。
作者: dhqian    时间: 2006-3-10 18:26
能否帮忙做一个,我这儿水平太差,实在做不出来。多谢了!


作者: msf    时间: 2006-3-10 19:05
ID字段不要用自动编号,手工输入不就解决了,你怎么排序都没问题
作者: wwwwa    时间: 2006-3-10 22:42
建立一新表,结构与你的表一致,多一个ID字段

SQL:

SELECT *,(select a.工序代码-工序代码 from b1 where 产品名称=a.产品名称 and a.id=id+1) from b1 a;





欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3