以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  非关联问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=139128)

--  作者:lgz518
--  发布时间:2019/8/6 15:18:00
--  非关联问题
 一。执行下面代码有以下问题:
1.单价,数量引不过去,只有“0”,不知道什么原因?
2.物料号存在时,引用过去出现只有“物料号”,是否可存在就引用不了?
二。对代码改进
1.对存在的物料号,数量可以加减等运算,单价也一样。如:库存数=库存数+进货数,单价=(库存数+进货数)/2;

三。实现类此功能库存计算,是否更高效,准确方法,多表统计有试过还可以,就做多个方法进行验证。请老师,指导,谢谢


Select Case e.DataCol.name
    Case "物料号"
        Dim dr As DataRow = DataTables("库存表").Find("物料号 = \'" & e.OldValue & "\'")
        If dr Is Nothing Then
            dr = DataTables("库存表").AddNew()
            dr("物料号") = e.DataRow("物料号")
            dr("品名") = e.DataRow("品名")
            dr("型号") = e.DataRow("型号")
            dr("单价") = e.DataRow("单价")
            dr("库存数") = e.DataRow("数量")
            
        Else
            dr("物料号") = e.DataRow("物料号")
        End If
    Case "品名","型号"
        Dim dr As DataRow = DataTables("库存表").Find("物料号 = \'" & e.DataRow("物料号") & "\'")
        If dr IsNot Nothing Then
            dr(e.DataCol.Name) = e.DataRow(e.DataCol.Name)
        End If
End Select



Dim dr As DataRow = DataTables("库存表").Find("物料号 = \'" & e.DataRow("物料号") & "\'")
If dr IsNot Nothing Then
    dr.Delete()
End If


--  作者:lgz518
--  发布时间:2019/8/6 15:19:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:关联计算 - 2.table

 
--  作者:有点蓝
--  发布时间:2019/8/6 15:42:00
--  
先理清逻辑:比如物料号从001改为002,希望做什么操作?如果库存已经同时存在001和002希望做什么操作?如果只存在其中一个又希望做什么操作?

不建议直接更改库存数量的用法,非常容易产生误差,而且也很难查产生误差的原因。如果要做,建议使用审核机制,入库单和出库单在审核之前,不更改库存数量,仅作为库存占用(待入\\出库)数进行库存计算。审核后才真正更改库存数量,审核后的入库单和出库单就不能在做任何更改,如果数量有问题,只能通过退库和入库,或者盘盈盘亏来冲。

--  作者:lgz518
--  发布时间:2019/8/6 19:53:00
--  
 老师,是这个思维,就是做不出来。还有实例中1.单价,数量引不过去,只有“0”,不知道什么原因?2.引用数据都会出现最后行,前有好几个空行。
请老师,指导,谢谢

--  作者:有点蓝
--  发布时间:2019/8/6 20:34:00
--  
先理清逻辑:比如物料号从001改为002,希望做什么操作?如果库存已经同时存在001和002希望做什么操作?如果只存在其中一个又希望做什么操作?