以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  老师请教编码  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=100626)

--  作者:xusuyang
--  发布时间:2017/5/15 14:18:00
--  老师请教编码
请问老师“材料库库存表”中图片点击可在新窗口打开查看

1.如何实现“材料名称”加“材料规格”自动生成材料编码,如“材料名称”是语文书,“材料规格”为25*15,自动生成材料编码“YWS2515”  ?
2.“材料库库存表”中如何实现自动计算出结余?如上年结余1500,今年1月1日入库500,今年1月8日出库300,库存结余1700?
If e.DataCol.Name = "配件名称" Then
    If e.DataRow.IsNull("配件名称") Then
        e.DataRow("配件编码") = Nothing
    Else
        e.DataRow("产品编码") = GetPy(e.DataRow("产品名称"), 1)
    End If
End If
Select Case e.DataCol.Name
     Case  "配件信息_配件名称","出入库信息_入库数量","出入库信息_出库数量"
          Dim drs  As  List(of DataRow)
        Dim Filter As String
        Filter =  "[_SortKey] >= " & e.DataRow("_SortKey") & " And [配件信息_配件名称] = \'" & e.DataRow("配件信息_配件名称") & "\'"
        drs = e.DataTable.Select(Filter)
        For Each dr As  DataRow  In drs
            Filter =  "[_SortKey] <= " & dr("_SortKey") & " And [配件信息_配件名称] = \'" & dr("配件信息_配件名称") & "\'"
            Dim Val1 As Double = e.DataTable.Compute("Sum(出入库信息_入库数量)",Filter)
            Dim Val2 As Double = e.DataTable.Compute("Sum(出入库信息_出库数量)",Filter)
            dr("库存结余") = Val1 - Val2
        Next
        If e.DataCol.Name = "配件信息_配件名称" AndAlso e.OldValue IsNot Nothing AndAlso e.OldValue <> e.NewValue  Then
            Filter =  "[_SortKey] > " & e.DataRow("_SortKey") & " And [配件信息_配件名称] = \'" & e.OldValue &  "\'"
            drs = e.DataTable.Select(Filter)
            For Each dr As  DataRow  In drs
                Filter =  "[_SortKey] <= " & dr("_SortKey") & " And [配件信息_配件名称] = \'" & dr("配件信息_配件名称") & "\'"
                Dim Val1 As Double = e.DataTable.Compute("Sum(库存结余)",Filter)
                Dim Val2 As Double = e.DataTable.Compute("Sum(出入库信息_出库数量)",Filter)
                dr("库存结余") = Val1 - Val2
            Next
        End If
 End  Select      为啥配件编码不能显示?

--  作者:有点蓝
--  发布时间:2017/5/15 14:51:00
--  
1、

If e.DataCol.Name = "配件名称" Then
    If e.DataRow.IsNull("配件名称") Then
        e.DataRow("配件编码") = Nothing
    Else
        e.DataRow("配件编码") = GetPy(e.DataRow("配件名称"), 1)
    End If
End If

2、做个例子上传看看

--  作者:有点色
--  发布时间:2017/5/15 15:00:00
--  

 第二个问题,你为什么要合计结余? Dim Val1 As Double = e.DataTable.Compute("Sum(库存结余)",Filter)

 

 每次统计,都是入库减去出库就行了。

 

 如果你有一个结余数据,需要加入统计,应该用备注列备注为手动录入,这样,再统计这类的数据就好了。