Foxtable(狐表)用户栏目专家坐堂 → 关于高效的流水帐设计,如果计算时考虑到到有未加载的数据时,应该如何处理?


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

主题:关于高效的流水帐设计,如果计算时考虑到到有未加载的数据时,应该如何处理?

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


加好友 发短信
等级:五尾狐 帖子:1033 积分:7258 威望:0 精华:0 注册:2008/9/1 22:34:00
关于高效的流水帐设计,如果计算时考虑到到有未加载的数据时,应该如何处理?  发帖心情 Post By:2016/6/1 9:48:00 [显示全部帖子]

         关于高效的流水帐设计,如果计算时考虑到到有未加载的数据时,应该如何处理?

         我用如下这样的代码,发现不行,请问应该要如何做才可以呢?求大家帮忙看看。

  

            Dim dr1 As DataRow
            Dim mr As DataRow = e.DataRow
            Dim drs As List(of DataRow)
           
            If mr.IsNull("盘点数") = False Then
                mr("物料需求结存数量") = mr("盘点数")+ mr("物料进货数量") - mr("物料需求数量")
                dr1 = mr
            Else
                dr1 = e.DataTable.SQLFind("[_SortKey] < " & mr("_SortKey") & " And [材料编码] = '" & mr("材料编码") & "'", "[_SortKey] Desc")
               
                If dr1 Is Nothing Then
                    mr("物料需求结存数量") = mr("物料进货数量") - mr("物料需求数量")
                    dr1 = mr
                   
                End If
            End If
            drs = e.DataTable.SQLSelect("[_SortKey] >= " & dr1("_SortKey") & " And [材料编码] = '" & dr1("材料编码") & "'", "[_SortKey]")
            For i As Integer = 1 To drs.Count - 1
                drs(i)("物料需求结存数量") = drs(i-1)("物料需求结存数量") + drs(i)("物料进货数量") - drs(i)("物料需求数量")
            Next
            e.DataTable.SQLUpdate(drs)
            e.DataTable.Load
           
            If e.DataCol.Name = "材料编码" AndAlso e.OldValue IsNot Nothing AndAlso e.OldValue <> e.NewValue Then
                dr1 = e.DataTable.SQLFind("[_SortKey] < " & mr("_SortKey") & " And [材料编码] = '" & e.OldValue & "'", "[_SortKey] Desc")
                If dr1 Is Nothing Then
                    dr1 = e.DataTable.SQLFind("[材料编码] = '" & e.OldValue & "'", "[_SortKey]")
                    If dr1 IsNot Nothing And dr1.IsNull("盘点数") = False Then
                        dr1("物料需求结存数量") = dr1("盘点数") + dr1("物料进货数量") - dr1("物料需求数量")
                    ElseIf dr1 IsNot Nothing And dr1.IsNull("盘点数") = True Then
                        dr1("物料需求结存数量") = dr1("物料进货数量") - dr1("物料需求数量")
                    End If
                End If
               
                If dr1 IsNot Nothing Then
                    drs = e.DataTable.SQLSelect("[_SortKey] >= " & dr1("_SortKey") & " And [材料编码] = '" & dr1("材料编码") & "'", "[_SortKey]")
                    For i As Integer = 1 To drs.Count - 1
                        drs(i)("物料需求结存数量") = drs(i-1)("物料需求结存数量") + drs(i)("物料进货数量") - drs(i)("物料需求数量")
                    Next
                    e.DataTable.SQLUpdate(drs)
                    e.DataTable.Load
                   
                End If
            End If


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


加好友 发短信
等级:五尾狐 帖子:1033 积分:7258 威望:0 精华:0 注册:2008/9/1 22:34:00
  发帖心情 Post By:2016/6/1 9:52:00 [显示全部帖子]

在重置“材料编码”时出现下列提示: 


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

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


加好友 发短信
等级:五尾狐 帖子:1033 积分:7258 威望:0 精华:0 注册:2008/9/1 22:34:00
  发帖心情 Post By:2016/6/1 10:16:00 [显示全部帖子]

以下是引用大红袍在2016/6/1 10:02:00的发言:

不是你那样写代码的啊。

 

看2楼,不会做,上传具体实例。

我的数据关系一时之间做不出完整的例子,能帮我远程看下吗?

 

且我没有考虑到到分页加载,我需要的是明细表里可以多人同时增加数据,他们在增加数据时,可能这个产品在明细表里之前就有保存了一些历史数据。

 

[此贴子已经被作者于2016/6/1 10:19:52编辑过]

 回到顶部