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


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

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

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


加好友 发短信
等级:幼狐 帖子:168 积分:1956 威望:0 精华:0 注册:2015/5/8 1:17:00
  发帖心情 Post By:2017/2/15 11:39:00 [只看该作者]

如果默认,日期按大到小排列,在6楼的代码哪里加desc
[此贴子已经被作者于2017/2/15 11:40:29编辑过]

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


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

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

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


加好友 发短信
等级:幼狐 帖子:168 积分:1956 威望:0 精华:0 注册:2015/5/8 1:17:00
  发帖心情 Post By:2017/2/15 23:01:00 [只看该作者]

对高效率流水账,做了按日期来排序的代码,还是会有余额排序的问题。

这个问题真是没办法解决了?因为默认表格打开,就是按时间大小排列,最新日期的在最上面。不然几千行数据,最新一行最下面,用起来非常不方便


图片点击可在新窗口打开查看此主题相关图片如下:高效流水账 排序.jpg
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:高效流水账 排序2.jpg
图片点击可在新窗口打开查看
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:流水账2.table





[此贴子已经被作者于2017/2/16 1:42:17编辑过]

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


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

把 序号 列改成整数列。

 

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


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


加好友 发短信
等级:幼狐 帖子:168 积分:1956 威望:0 精华:0 注册:2015/5/8 1:17:00
  发帖心情 Post By:2017/2/16 8:10:00 [只看该作者]

序号其实是_sortkey列,我为了直观,做成序号。现在的想法是,倒叙时,日期从大到下,同一日期_sortkey也从大到小。现在同一日期_sortkey从小到大!能在下面代码,做修改,达到这样的要求吗

Select Case e.DataCol.Name
    Case "产品","入库","出库"
        Dim dr As DataRow
        Dim mr As DataRow = e.DataRow
        Dim drs As List(of DataRow)
        dr = e.DataTable.Find("[日期] < #" & mr("日期") & "# And [产品] = '" & mr("产品") & "'", "[日期] Desc")
        If dr Is Nothing Then
            mr("库存") = mr("入库") - mr("出库")
            dr = mr
        End If
        drs = e.DataTable.Select("[日期] >= #" & dr("日期") & "# And [产品] = '" & dr("产品") & "'", "[日期] " )
        For i As Integer = 1 To drs.Count - 1
            drs(i)("库存") = drs(i-1)("库存") + drs(i)("入库") - drs(i)("出库")
        Next
        If e.DataCol.Name = "产品" AndAlso e.OldValue IsNot Nothing AndAlso e.OldValue <> e.NewValue Then
            dr = e.DataTable.Find("[日期] < #" & mr("日期") & "# And [产品] = '" & e.OldValue & "'", "[日期] Desc")
            If dr Is Nothing Then
                dr = e.DataTable.Find("[产品] = '" & e.OldValue & "'", "[日期]")
                If dr IsNot Nothing Then
                    dr("库存") = dr("入库") - dr("出库")
                End If
            End If
            If dr IsNot Nothing Then
                drs = e.DataTable.Select("[日期] >= #" & dr("日期") & "# And [产品] = '" & dr("产品") & "'", "[日期]")
                For i As Integer = 1 To drs.Count - 1
                    drs(i)("库存") = drs(i-1)("库存") + drs(i)("入库") - drs(i)("出库")
                Next
            End If
        End If
End Select
[此贴子已经被作者于2017/2/16 8:10:26编辑过]

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


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

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

 

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

 

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


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


加好友 发短信
等级:幼狐 帖子:168 积分:1956 威望:0 精华:0 注册:2015/5/8 1:17:00
  发帖心情 Post By:2017/2/16 10:53:00 [只看该作者]

做了两个按钮,完美解决问题,之前自己想的太复杂了

升序:Tables("例子二").sort = "日期"
降序:Tables("例子二").sort = "日期 desc, 序号"


图片点击可在新窗口打开查看此主题相关图片如下:224.gif
图片点击可在新窗口打开查看


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


加好友 发短信
等级:幼狐 帖子:168 积分:1956 威望:0 精华:0 注册:2015/5/8 1:17:00
  发帖心情 Post By:2017/3/2 22:12:00 [只看该作者]

高效流水账,一按重置按钮,就会把余额按从小到大,重新计算。如图,正确余额顺序" 514 ->554 ->558 "。重置后," 514 ->558 ->554 ",明明558是后来才添加,反而余额计算在前。


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

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


图片点击可在新窗口打开查看此主题相关图片如下:311.gif
图片点击可在新窗口打开查看

DataColChanged,代码是按高效流水账,将[_sortkey]改为[日期]

Select Case e.DataCol.Name
    Case "科目","增","减"
        Dim dr As DataRow
        Dim mr As DataRow = e.DataRow
        Dim drs As List(of DataRow)
        
        dr = e.DataTable.Find("[日期] < #" & mr("日期") & "# And [科目] = '" & mr("科目") & "'", "[日期] Desc")
        If dr Is Nothing Then
            mr("余额") = mr("增") - mr("减")
            dr = mr
        End If
        
        drs = e.DataTable.Select("[日期] >= #" & dr("日期") & "# And [科目] = '" & dr("科目") & "'", "[日期]")
        For i As Integer = 1 To drs.Count - 1
            drs(i)("余额") = drs(i-1)("余额") + drs(i)("增") - drs(i)("减")
        Next
        
        If e.DataCol.Name = "科目" AndAlso e.OldValue IsNot Nothing AndAlso e.OldValue <> e.NewValue Then
            dr = e.DataTable.Find("[日期] < #" & mr("日期") & "# And [科目] = '" & e.OldValue & "'", "[日期] Desc")
            If dr Is Nothing Then
                dr = e.DataTable.Find("[科目] = '" & e.OldValue & "'", "[日期]")
                If dr IsNot Nothing Then
                    dr("余额") = dr("增") - dr("减")
                End If
            End If
            
            If dr IsNot Nothing Then
                drs = e.DataTable.Select("[日期] >= #" & dr("日期") & "# And [科目] = '" & dr("科目") & "'", "[日期]")
                For i As Integer = 1 To drs.Count - 1
                    drs(i)("余额") = drs(i-1)("余额") + drs(i)("增") - drs(i)("减")
                Next
            End If
        End If
End Select



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


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

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

 

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


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


加好友 发短信
等级:幼狐 帖子:168 积分:1956 威望:0 精华:0 注册:2015/5/8 1:17:00
  发帖心情 Post By:2017/3/3 10:07:00 [只看该作者]

请帮忙看一下

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:会计凭证.table



 回到顶部
总数 25 上一页 1 2 3 下一页