Office中国论坛/Access中国论坛

标题: ----------> 请教版主, 库存查询 [打印本页]

作者: duckdon    时间: 2005-4-4 17:03
标题: ----------> 请教版主, 库存查询
我想在下图“剩余”字段里得到下面结果:

1)如果上条记录库存为空则显示本记录库存数
2)如果上条记录库存为负则显示0-上条记录库存数
3)如果上条记录库存为正则显示0

即:


计划   库存  剩余
P1      -5   -5
P2    9   5
P3    6   0

[attach]9716[/attach]
[attach]9717[/attach]


[此贴子已经被作者于2005-4-8 12:43:17编辑过]


作者: duckdon    时间: 2005-4-4 19:25
为什么没能人回复啊?
作者: duckdon    时间: 2005-4-4 21:18
没人回,再顶!
作者: 静儿    时间: 2005-4-4 21:23
如果为零值呢?
作者: duckdon    时间: 2005-4-4 21:32
为0的话,还是0

有什么办法吗?

[此贴子已经被作者于2005-4-4 13:36:36编辑过]


作者: xinbao    时间: 2005-4-4 21:36
首先,你的排序顺序是啥 什么是上一条
另需要做个自定义函数,dlookup判断上条记录的库存数
再判断当前应放内容
作者: duckdon    时间: 2005-4-4 21:38
按计划号排序,P2是P3的上一条

具体点,不会啊

[此贴子已经被作者于2005-4-4 13:38:40编辑过]


作者: tmtony    时间: 2005-4-4 21:44
要自定义个函数 类似余额问题
给个ID号,判断ID之前的库存是多少,然后决定当前值是多少

您可参考:
http://www.office-cn.net/Article/Class5/Class10/200408/491.html
http://www.office-cn.net/Article/Class5/Class10/200502/834.html


作者: duckdon    时间: 2005-4-4 21:48
谢谢,我先看看
作者: duckdon    时间: 2005-4-5 03:38
小弟愚钝,搞了半天也没出来,可不可以帮忙做一下
作者: 000618    时间: 2005-4-5 06:53
标题: 回复
估计大家还是弄不清这几个数的关系

库存和剩余是什么概念

是否是计划数-(计划完成数+库存数)=剩余数

也就是说,还需要有一个生产数
作者: tmtony    时间: 2005-4-5 17:14
[attach]9727[/attach]

做了个例子,你看看是否可以

作者: duckdon    时间: 2005-4-5 23:53
标题: 谢谢tmtony! 受益匪浅
可是我将条件放在同一个查询中,就不行了,为什么,怎么办?

我想实现下面的结果,同种产品计划1的库存结余80(即净需求"-80")个作为计划2的库存量

如果上个净需求是正的(即库存无结余),那么下个同产品的计划对应的库存量为0(比如计划6)

但是每种产品最早的计划对应的库存量还是库存表中的数值(如计划1和计划5)

[attach]9747[/attach]

下面我做的附件是错的[attach]9748[/attach]

作者: tmtony    时间: 2005-4-6 04:24
这个需求我没弄明白,有些糊涂了
作者: duckdon    时间: 2005-4-6 16:14
按交期的早晚(紧急度), 上个计划剩余的物料,给下个计划用

也就是说到计划2查库存时, 已经没有180个了,库存可用量是80个

因为计划1预约了100个, (计划1交期较早,享有优先权)

再则,如计划5按需求库存还差100个, 到计划6时查库存可用量也就没有了

所以计划6的净需注还要70个.

最后得出: 产品CP1只需要生产90个, CP2生产170,就能满足计划了

不知道这样有没有表达清楚.


[此贴子已经被作者于2005-4-6 8:29:39编辑过]


作者: duckdon    时间: 2005-4-6 18:32
我下面这段代码有什么问题吗?老是显示类型不匹配

Public Function f(d As Date, E As String) As Integer
'函数计算库存量,例如:f([交期],[计划].[产品ID])

Dim a, b, c As Integer
  
a = Nz(DLast("计划量", "计划需求", "交期 <" & Str(d) And "产品ID =" & E))    '上一个计划量
b = Nz(DLast("净需求", "计划需求", "交期 <" & Str(d) And "产品ID =" & E))    '上一个净需求
c = Nz(DLookup("库存量", "库存", "产品ID =" & E))                            '本产品库存量

If a = 0 Then
f = c

Else

   If b < 0 Then
   f = -b
   End If

   If b >= 0 Then
   f = 0
   End If

End If

End Function


[此贴子已经被作者于2005-4-6 11:05:09编辑过]


作者: duckdon    时间: 2005-4-7 18:36
还没完,顶上来
作者: duckdon    时间: 2005-4-9 00:05
不要让这个问题夭折吧,高手帮忙看看啊~~~
作者: hi-wzj    时间: 2005-4-9 02:33
[attach]9842[/attach]


在报表中完成的。
作者: duckdon    时间: 2005-4-10 01:49
以下是引用hi-wzj在2005-4-8 18:32:54的发言:


在报表中完成的。

谢谢就是我要的结果,可是不能在查询中实现吗?因为结果的数据我还要引用
作者: duckdon    时间: 2005-4-11 23:40
用了自定义函数,查询变得好慢啊?怎样才能提高速度?




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