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


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

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

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


加好友 发短信
等级:一尾狐 帖子:426 积分:3505 威望:0 精华:0 注册:2015/4/17 9:13:00
[求助]分页流水账是否可按项目统计余额  发帖心情 Post By:2015/5/7 16:59:00 [只看该作者]

1、参考Foxtable教程里的3.15.25.3非等于比较,写了以下代码


Dim drs As List(of DataRow) = DataTables("A").Select("", "付款银行,日期") '注意排序参数
drs(0)("
余额") = drs(0)("收入") - drs(0)("支出") '设置第一行的余额
For
i As Integer = 1 To drs.Count - 1  '从第二行开始逐行计算余额
    If
drs(i)(" 付款银行") = drs(i - 1)(" 付款银行") Then
        drs(i)("
余额") = drs(i-1)("余额") + drs(i)("收入") -  drs(i)("支出")
    Else

        drs(i)("
余额") = drs(i)("收入") -  drs(i)("支出")
    End
If
Next


现在我需要求助的是这个代码只能计算当页加载的数据,从加载的第一行算了,不能承接前面的余额,请问代码应该怎么写,虽然教程和foxtable\开发版\CaseStudy案例里有一个分页流水账案例,但它那里没有分那个项目或那个付款银行进行统计余额,如果参照分页流水账的那个案例,应该怎么修改其代码,才可以直接在后台按付款银行进统计余额,谢谢。

现在上传例子
 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:分页流水账(按项目统计).foxdb

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

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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2015/5/7 17:02:00 [只看该作者]


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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2015/5/7 17:02:00 [只看该作者]

注意表的AfterLoad事件也有关键代码,帮助没有提及。

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


加好友 发短信
等级:一尾狐 帖子:426 积分:3505 威望:0 精华:0 注册:2015/4/17 9:13:00
回复:(Bin)参考帮助 http://www.foxtable.com...  发帖心情 Post By:2015/5/7 17:26:00 [只看该作者]

我也看了,可是是刚学,不知道怎么去表达修改,想问
图片点击可在新窗口打开查看此主题相关图片如下:库存表.png
图片点击可在新窗口打开查看
一下有没在分页加载与流水账的例子一的基础上,加多一个例子二

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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2015/5/7 17:28:00 [只看该作者]

看2楼的帮助和3楼的提醒,如果搞不定.把例子发上来

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


加好友 发短信
等级:一尾狐 帖子:426 积分:3505 威望:0 精华:0 注册:2015/4/17 9:13:00
回复:(Bin)看2楼的帮助和3楼的提醒,如果搞不定.把例...  发帖心情 Post By:2015/5/7 17:42:00 [只看该作者]

我笨笨的问一句,上传例子?我现在所有的都是连接SQL服务器的数据,是不是把案例和SQL数据库一起上传?

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


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


加好友 发短信
等级:一尾狐 帖子:426 积分:3505 威望:0 精华:0 注册:2015/4/17 9:13:00
回复:(Bin)看2楼的帮助和3楼的提醒,如果搞不定.把例...  发帖心情 Post By:2015/5/7 18:13:00 [只看该作者]

上了例子 ,看怎么样才能按付款银行作为项目统计,每页正确显示每一个付款银行的结余,谢谢

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


加好友 发短信
等级:一尾狐 帖子:426 积分:3505 威望:0 精华:0 注册:2015/4/17 9:13:00
回复:(大红袍) 加一列 产品 列,暂时这样做,...  发帖心情 Post By:2015/5/7 18:14:00 [只看该作者]

好的,非常感谢,我先试一下,

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


加好友 发短信
等级:一尾狐 帖子:426 积分:3505 威望:0 精华:0 注册:2015/4/17 9:13:00
[讨论]回复:(大红袍) 加一列 产品 列,暂时这样做,...  发帖心情 Post By:2015/5/8 9:21:00 [只看该作者]

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



Afterload事件

 

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


 回到顶部
总数 48 1 2 3 4 5 下一页