Foxtable(狐表)用户栏目专家坐堂 → 如何处理我的批号表


  共有1593人关注过本帖树形打印复制链接

主题:如何处理我的批号表

帅哥哟,离线,有人找我吗?
edisontsui
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1511 积分:9801 威望:0 精华:0 注册:2014/12/18 16:12:00
如何处理我的批号表  发帖心情 Post By:2017/3/30 14:13:00 [只看该作者]

我的项目有两个数据表,一个叫出入库,一个叫批号表

 

出入库里的数据列名称有:物料编号、批号、入库数量(正数)、出库数量(负数)

批号表里的数据列名称有:物料编号、批号、库存数量

 

我的要求是:每当 (1) “出入库里面的入库数量、出库数量发生改变,或者(2)有新增、删除数据行时,如果批号表里面有与出入库相同物料编号批号的记录,则将批号表里面的数量与情况(1)的改变量相加,或者与情况(2)里面的入库数量、出库数量相加,否则就新增加一条记录。出入库里面没有批号的数据行入库数量、出库数量发生改变或者新增、删除数据行是没有批号的,则不在批号表里反映出来。也就是说,批号表里面的所有数据行都是有批号的,而且只能有一条相同物料编号和相同批号的记录。

 

我现在的代码是这样的:

出入库Datacolchanged:

 

 

If e.DataCol Is DataTables("出入库").DataCols("入库数量") Or e.DataCol Is DataTables("出入库").DataCols("出库数量")

    If e.DataRow("批号") Is Nothing

    Else

        Dim re As Boolean = False

        For Each dr As DataRow In DataTables("批号表").DataRows

            If dr("批号") <> e.DataRow("批号") Or dr("物料编号") <> e.DataRow("物料编号") Then

                Continue For

            ElseIf dr("批号") = e.DataRow("批号") And dr("物料编号") = e.DataRow("物料编号") Then

                dr("库存数量") = e.DataRow("入库数量") + e.DataRow("出库数量") + dr("库存数量") - e.OldValue

                re = True

                Exit For

            End If

        Next

        If re =False

            Dim dr As DataRow

            dr = DataTables("批号表").AddNew()

            dr("批号") = e.DataRow("批号")

            dr("物料编号") = e.DataRow("物料编号")

            dr("库存数量") = e.DataRow("入库数量") + e.DataRow("出库数量")

        End If

    End If

End If

 

但是现在的代码不能完全实现我的要求。不知这个代码有什么问题?


 回到顶部
帅哥哟,离线,有人找我吗?
有点色
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/3/30 16:49:00 [只看该作者]

If e.DataCol.name = "入库数量" OrElse e.DataCol.name = "出库数量" Then
    If e.DataRow("批号") Is Nothing OrElse e.DataRow("物料编号") Is Nothing Then
       
    Else
        Dim dr As DataRow = DataTables("批号表").find("批号 = '" & e.DataRow("批号") & "' And 物料编号 = '" & e.DataRow("物料编号") & "'")
        If dr Is Nothing Then
            dr = DataTables("批号表").AddNew()
           
            dr("批号") = e.DataRow("批号")
           
            dr("物料编号") = e.DataRow("物料编号")
           
            dr("库存数量") = e.DataRow("入库数量") + e.DataRow("出库数量")
        End If
       
        Dim filter As String = "批号 = '" & e.DataRow("批号") & "' And 物料编号 = '" & e.DataRow("物料编号") & "'"
        dr("库存数量") = e.DataTable.compute("sum(入库数量)", filter) +  e.DataTable.compute("sum(出库数量)", filter)
    End If
End If

 回到顶部
帅哥哟,离线,有人找我吗?
edisontsui
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1511 积分:9801 威望:0 精华:0 注册:2014/12/18 16:12:00
  发帖心情 Post By:2017/3/30 17:44:00 [只看该作者]

谢谢。

 回到顶部