Foxtable(狐表)用户栏目专家坐堂 → [求助]分页流水账是否可按项目统计余额


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

主题:[求助]分页流水账是否可按项目统计余额

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/5/7 18:04:00 [显示全部帖子]

 加一列 产品 列,暂时这样做,其余事件代码,你照着思路改一下

 

 Datacolchanged事件

 

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("[_SortKey] < " & mr("_SortKey") & " And [产品] = '" & mr("产品") & "'", "[_SortKey] Desc")
        Dim jc As Double =  DataTables("例子一").SQLCompute("Sum(收入) - Sum(支出)","[_SortKey] < " & e.DataRow("_SortKey") & " And [产品] = '" & mr("产品") & "'")
        If dr Is Nothing Then
            mr("余额") = mr("收入") - mr("支出") + jc
            dr = mr
        End If
        drs = e.DataTable.Select("[_SortKey] >= " & dr("_SortKey") & " And [产品] = '" & dr("产品") & "'", "[_SortKey]")
        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("[_SortKey] < " & mr("_SortKey") & " And [产品] = '" & e.OldValue & "'", "[_SortKey] Desc")
            If dr Is Nothing Then
                dr = e.DataTable.Find("[产品] = '" & e.OldValue & "'", "[_SortKey]")
                If dr IsNot Nothing Then
                    jc =  DataTables("例子一").SQLCompute("Sum(收入) - Sum(支出)","[_SortKey] < " & mr("_SortKey") & " And [产品] = '" & e.OldValue & "'")
                    dr("余额") = dr("收入") - dr("支出") + jc
                End If
            End If
            If dr IsNot Nothing Then
                drs = e.DataTable.Select("[_SortKey] >= " & dr("_SortKey") & " And [产品] = '" & dr("产品") & "'", "[_SortKey]")
                jc =  DataTables("例子一").SQLCompute("Sum(收入) - Sum(支出)","[_SortKey] >= " & dr("_SortKey") & " And [产品] = '" & dr("产品") & "'")
                For i As Integer = 1 To drs.Count - 1
                    drs(i)("余额") = drs(i-1)("余额") + drs(i)("收入") - drs(i)("支出") + jc
                Next
            End If
        End If
End Select

 

Afterload事件

 

If e.DataTable.DataRows.count > 0 Then
   Dim cps As String = e.DataTable.GetComboListString("产品").Replace("|", "','")
   e.DataTable.DataCols("支出").RaiseDataColChanged("产品 in ('" & cps & "')")
End If


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/5/8 9:26:00 [显示全部帖子]

以下是引用乡里出城在2015/5/8 9:21:00的发言:

你好,我不是很明白,想请教一下,为什么下面Afterload事件里的第三条代码只需要e.DataTable.DataCols("支出").RaiseDataColChanged("产品 in ('" & cps & "')"),为什么不需要e.DataTable.DataCols("收入").RaiseDataColChanged("产品 in ('" & cps & "')"),谢谢


 

 

一样的意思,因为在Datacolchanged事件,触发任意一列,都能执行重新计算的代码,所以触发任意一个都可以。


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/5/8 10:37:00 [显示全部帖子]

 不,可能,测试没问题。不会做就请上传具体例子。

   

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:分页流水账.table


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/5/8 10:43:00 [显示全部帖子]

以下是引用乡里出城在2015/5/8 10:42:00的发言:
我用的是开发版,所以打不开这个商业版的,我再去另一台电脑上装一个试用版的打开来看看

 

1、你开发版可以去下载一个商业版的foxtable安装;

 

2、你事件的代码没有修改啊;

 

3、修改后测试正常。

[此贴子已经被作者于2015/5/8 10:44:45编辑过]

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/5/8 10:46:00 [显示全部帖子]

 代码参考7楼的代码修改。

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/5/8 12:53:00 [显示全部帖子]

 回复20楼,关闭项目,重新打开一次

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/5/8 16:51:00 [显示全部帖子]

 抱歉,现在才回复你。

 

 你去看Datacolchanged事件的代码,把msgbox()的代码去掉就行了。


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/5/28 17:00:00 [显示全部帖子]

 出什么问题?

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/5/29 10:40:00 [显示全部帖子]

1、你把Datacolchanged事件所有的_Sortkey全部改成_Identify;

 

2、把AfterLoad的也改;

 

3、原因应该是不同用户操作的时候,导致_sortkey值出现问题导致的,你把插入行标志列去掉 http://www.foxtable.com/help/topics/1797.htm

 


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/5/29 11:26:00 [显示全部帖子]

 不可能不行啊。内部和外部都是一样的情况啊。

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