以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]谁能帮忙设计一个计算库存的表达式,或者代码?(重发)  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=13423)

--  作者:yacity
--  发布时间:2011/10/11 17:28:00
--  [求助]谁能帮忙设计一个计算库存的表达式,或者代码?(重发)

产品表的库存数量 是根据 产品表的初始数量-出货记录表的出货数量+制袋表的数量 计算得出

 

表达式如下

IsNull([shuliang],0) - isnull(Sum(Child(产品联出货).shuliang),0)+isnull(Sum(Child(产品联制袋).shuliang),0)

 

现在 要求制袋 的数量 只有 入库 的制袋生产记录才参加统计,不入库的不参加库存统计,如何实现呢?

 
图片点击可在新窗口打开查看此主题相关图片如下:171.jpg
图片点击可在新窗口打开查看


 项目 文件如下

 

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:儋州琼富琼富塑料管理系统1.0.table

[此贴子已经被作者于2011-10-11 17:45:15编辑过]

--  作者:狐狸爸爸
--  发布时间:2011/10/11 17:42:00
--  

你的系统哪有什么库存数量表?

 


--  作者:yacity
--  发布时间:2011/10/11 17:46:00
--  
不好意思! 弄错了。 是产品表的库存数量
[此贴子已经被作者于2011-10-11 17:46:36编辑过]

--  作者:mr725
--  发布时间:2011/10/11 17:49:00
--  
哪有库存数量表呢?
--  作者:yacity
--  发布时间:2011/10/11 18:14:00
--  

已经更正  是 产品表的库存数量


--  作者:mr725
--  发布时间:2011/10/11 18:34:00
--  

在产品表增加一数据列:【库存数量】

在制袋表的datacolchanged中加上,看看结果:

 

Case "ruku"
    Dim dr1 As DataRow = e.DataRow
    Dim pr As DataRow = dr1.GetParentrow("chanpin")
    If e.DataRow("ruku") = True
        pr("库存数量") = pr("shuliang")+e.DataRow("shuliang")

    Else
        pr("库存数量") = pr("库存数量")-e.DataRow("shuliang")
    End If

[此贴子已经被作者于2011-10-11 18:34:41编辑过]

--  作者:don
--  发布时间:2011/10/11 18:47:00
--  
chanpin:
Select Case e.DataCol.Name
    Case "shuliang"
        Dim fl as string = "chanpinid = " & e.DataRow("_Identify")
        Dim n1,n2 As Double     
        n1 = DataTables("chuhuo").Compute("sum(shuliang)",fl)
        n2 = DataTables("zhidai").Compute("sum(shuliang)",fl & " and ruku = True")
       e.DataRow("库存数量")=dr("shuliang")- n1+n2      
End Select

chuhuo:
Select Case e.DataCol.Name
    Case "shuliang"
        Dim n1,n2 As Double  
        Dim fl as string = "chanpinid = " & e.DataRow("chanpinid")        
        n1 = DataTables("chuhuo").Compute("sum(shuliang)",fl)
        n2 = DataTables("zhidai").Compute("sum(shuliang)",fl & " and ruku = True")
        Dim dr As DataRow = e.DataRow.GetParentrow("chanpin")
         if dr isnot nothing then
             dr("库存数量")=dr("shuliang")- n1+n2
         end if      
End Select


ZHIDAI:
Select Case e.DataCol.Name
    Case "shuliang","ruku"
        Dim n1,n2 As Double  
        Dim fl As String = "chanpinid = " & e.DataRow("chanpinid")        
        n1 = DataTables("chuhuo").Compute("sum(shuliang)",fl)
        n2= DataTables("zhidai").Compute("sum(shuliang)",fl & " and ruku = True")
       Dim dr As DataRow = e.DataRow.GetParentrow("chanpin")
         If dr IsNot Nothing Then
             dr("库存数量")=dr("shuliang")- n1+n2
         End If      
End Select

--  作者:yacity
--  发布时间:2011/10/11 22:33:00
--  

谢谢mr725don

除了用代码,表达式不能实现吗?

我这个比较特殊的地方在于 出货记录表,不是一条一条记录录入,而是在出货单页面 通过窗口录入,一次性可以录入多条记录。

 

 出货记录如下


图片点击可在新窗口打开查看此主题相关图片如下:001.jpg
图片点击可在新窗口打开查看
出货记录不是直接录入的

 

而是在出货单通过点击客户ID 启动出货单窗口录入

界面如下


图片点击可在新窗口打开查看此主题相关图片如下:002.jpg
图片点击可在新窗口打开查看

 

所以如果库存数量也要减掉出货数量的话,如果通过代码来实现就比较麻烦,我在想表达式可不可以?

关键是 制袋表 入库才参与统计,不入库不参与统计。能不能用表达式来实现?

 

[此贴子已经被作者于2011-10-11 22:34:59编辑过]

--  作者:mr725
--  发布时间:2011/10/11 22:52:00
--  
表达式不好使,7楼don老师已经给出了代码,稍加修改就可以了。
--  作者:don
--  发布时间:2011/10/12 17:29:00
--  
表达式法:
chanpin:
IsNull([shuliang],0) - isnull(Sum(Child(产品联出货).shuliang),0)+isnull(Sum(Child(产品联制袋).数量),0)

ZHIDAI增数量列,表达式为:
IIF([ruku] =  True,[shuliang],0)