Foxtable(狐表)用户栏目专家坐堂 → 高效流水账,补前几天的记录,如何从这个日期起重新计算


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

主题:高效流水账,补前几天的记录,如何从这个日期起重新计算

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/2/14 12:01:00 [显示全部帖子]

Select Case e.DataCol.Name
    Case "产品","入库","出库"
        Dim drs As List(of DataRow)
        Dim Filter As String
        Filter = "[日期] >= #" & e.DataRow("日期") & "# And [产品] = '" & e.DataRow("产品") & "'"
        drs = e.DataTable.Select(Filter)
        For Each dr As DataRow In drs
            Filter = "[日期] <= #" & dr("日期") & "# 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 = "[日期] > #" & e.DataRow("日期") & "# And [产品] = '" & e.OldValue & "'"
            drs = e.DataTable.Select(Filter)
            For Each dr As DataRow In drs
                Filter = "[日期] <= #" & dr("日期") & "# 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/2/14 12:01:13编辑过]

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/2/14 13:16:00 [显示全部帖子]

Select Case e.DataCol.Name
    Case "产品","入库","出库"
        Dim drs As List(of DataRow)
        Dim Filter As String
        Filter = "[日期] >= #" & e.DataRow("日期") & "# And [产品] = '" & e.DataRow("产品") & "'"
        drs = e.DataTable.Select(Filter)
        For Each dr As DataRow In drs
            Filter = "[日期] <= #" & dr("日期") & "# and _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 = "[日期] > #" & e.DataRow("日期") & "# And [产品] = '" & e.OldValue & "'"
            drs = e.DataTable.Select(Filter)
            For Each dr As DataRow In drs
                Filter = "[日期] <= #" & dr("日期") & "# and _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

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/2/14 17:21:00 [显示全部帖子]

Select Case e.DataCol.Name
    Case "产品","入库","出库"
        Dim drs As List(of DataRow)
        Dim Filter As String
        Filter = "[日期] >= #" & e.DataRow("日期") & "# And [产品] = '" & e.DataRow("产品") & "'"
        drs = e.DataTable.Select(Filter)
        For Each dr As DataRow In drs
            Filter = "iif([日期] < #" & dr("日期") & "#, [日期] < #" & dr("日期") & "# And [产品] = '" & dr("产品") & "', [日期] = #" & dr("日期") & "# and _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 = "[日期] > #" & e.DataRow("日期") & "# And [产品] = '" & e.OldValue & "'"
            drs = e.DataTable.Select(Filter)
            For Each dr As DataRow In drs
                Filter = "iif([日期] < #" & dr("日期") & "#, [日期] < #" & dr("日期") & "# And [产品] = '" & dr("产品") & "', [日期] = #" & dr("日期") & "# and _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

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/2/15 10:06:00 [显示全部帖子]

单独做一个按钮计算。或者写到AfterSort事件去

 

Dim t As Table = Tables("例子二")
For Each dr As Row In t.Rows  
    Dim Val1 As Double = 0
    Dim Val2 As Double = 0
    For i As Integer = 0 To dr.Index
        If t.Rows(i)("产品") = dr("产品") Then
            val1 += t.rows(i)("入库")
            val2 += t.rows(i)("出库")
        End If
    Next
    dr("库存") = Val1 - Val2
Next


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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/2/15 10:42:00 [显示全部帖子]

是累加的意思

 

等同于 val1 = val1 + t.rows(i)("入库")


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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/2/15 12:30:00 [显示全部帖子]

把6楼的>改成<,把<改成>即可。

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/2/16 1:49:00 [显示全部帖子]

把 序号 列改成整数列。

 

在打开项目的时候,设置排序,不就好了? Tables("例子二").sort = "日期 desc, 序号"


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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/2/16 9:53:00 [显示全部帖子]

看不懂你表达的意思,看6楼,看8楼代码啊。

 

余额的计算,保持不变啊,都是按照日期从小到大计算的啊,这样也符合逻辑。

 

你要把日期显示在前面不影响排序的啊,在打开项目的时候,设置排序,不就好了? Tables("例子二").sort = "日期 desc, 序号"


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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/3/3 0:45:00 [显示全部帖子]

你流水号或者_Sortkey或者_Identify都不体现在代码里面

 

参考6楼的代码修改,不会改,把你的项目发上来。


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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/3/3 10:49:00 [显示全部帖子]

Select Case e.DataCol.Name
    Case "科目","增","减"
Dim drs As List(of DataRow)
        Dim Filter As String
        Filter = "[日期] >= #" & e.DataRow("日期") & "# And [科目] = '" & e.DataRow("科目") & "'"
        drs = e.DataTable.Select(Filter)
        For Each dr As DataRow In drs
            Filter = "iif([日期] < #" & dr("日期") & "#, [日期] < #" & dr("日期") & "# And [科目] = '" & dr("科目") & "', [日期] = #" & dr("日期") & "# and 借贷号 <= " & dr("借贷号") & " 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 = "[日期] > #" & e.DataRow("日期") & "# And [科目] = '" & e.OldValue & "'"
            drs = e.DataTable.Select(Filter)
            For Each dr As DataRow In drs
                Filter = "iif([日期] < #" & dr("日期") & "#, [日期] < #" & dr("日期") & "# And [科目] = '" & dr("科目") & "', [日期] = #" & dr("日期") & "# and 借贷号 <= " & dr("借贷号") & " 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

 回到顶部
总数 13 1 2 下一页