Foxtable(狐表)用户栏目专家坐堂 → 多字段计算


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

主题:多字段计算

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


加好友 发短信
等级:九尾狐 帖子:2234 积分:15278 威望:0 精华:0 注册:2015/7/18 10:10:00
多字段计算  发帖心情 Post By:2016/2/13 7:01:00 [只看该作者]

在统计银行交易数据时,经常需要统计多对多转账交易数据的统计与查询,比如 需要统计 甲乙丙丁四个人对ABCD四个人的交易数据,为此我设计如下代码,但是运行速度非常慢,有没有更好的办法

'Select Case e.DataCol.Name
'Case "涉及人员","交易户名"
    'For Each dr1 As DataRow In DataTables("银行现金汇总").DataRows
        'If dr1.IsNull("交易户名") = False AndAlso dr1.IsNull("涉及人员") = False Then '如果工号列不为空
            'Dim nms1() As String = dr1("交易户名").Split(",") '将工号列内容拆分成数组
            'Dim nms2() As String = dr1("涉及人员").Split(",") '将工号列内容拆分成数组
            'Dim v1 As Double
            'Dim v2 As Double
            'For Each nm1 As String In nms1 '遍历参与加工此产品的每个工号
                'For Each nm2 As String In nms2 '遍历参与加工此产品的每个工号
                    'v1 = v1 + DataTables("银行明细").sqlCompute("sum(借方金额)","交易户名 = '"& nm1 & "'and 对方户名 = '" & nm2 & "'")
                    'v2 = v2 + DataTables("银行明细").sqlCompute("sum(贷方金额)","交易户名 = '"& nm1 & "'and 对方户名 = '" & nm2 & "'")
                'Next
            'Next
            'e.DataRow("银行交易_借方金额") = v1
            'e.DataRow("银行交易_贷方金额") = v2
        'End If
    'Next
'End Select


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


加好友 发短信
等级:狐神 帖子:5015 积分:25363 威望:0 精华:0 注册:2015/8/18 9:21:00
  发帖心情 Post By:2016/2/13 8:47:00 [只看该作者]


多值字段作为录入和展示的一种方式比较直观,操作方便。但是对于统计分析很不友好。

常见的作法是另外用一套表来存储多对多的关系。

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


加好友 发短信
等级:九尾狐 帖子:2234 积分:15278 威望:0 精华:0 注册:2015/7/18 10:10:00
  发帖心情 Post By:2016/2/13 9:10:00 [只看该作者]

Dim v1 As Double
Dim v2 As Double
Select Case e.DataCol.Name
    Case "涉及人员","交易户名"
        If e.DataRow.IsNull("交易户名") = False AndAlso e.DataRow.IsNull("涉及人员") = False Then '如果工号列不为空
            Dim nms1() As String = e.DataRow("交易户名").Split(",") '将工号列内容拆分成数组
            Dim nms2() As String = e.DataRow("涉及人员").Split(",") '将工号列内容拆分成数组
           
            For Each nm1 As String In nms1 '遍历参与加工此产品的每个工号
                For Each nm2 As String In nms2 '遍历参与加工此产品的每个工号
                    v1 = v1 + DataTables("银行明细").sqlCompute("sum(借方金额)","交易户名 = '"& nm1 & "'and 对方户名 = '" & nm2 & "'")
                    v2 = v2 + DataTables("银行明细").sqlCompute("sum(贷方金额)","交易户名 = '"& nm1 & "'and 对方户名 = '" & nm2 & "'")
                Next
            Next
        End If
e.DataRow("银行交易_借方金额") = v1
e.DataRow("银行交易_贷方金额") = v2
Case "银行交易_借方金额","现金交易_借方金额"
e.DataRow("交易合计_借方金额") = e.DataRow("银行交易_借方金额")+e.DataRow("现金交易_借方金额")
Case "银行交易_贷方金额","现金交易_贷方金额",
e.DataRow("交易合计_贷方金额")=e.DataRow("银行交易_贷方金额")+e.DataRow("现金交易_贷方金额")
End Select

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


加好友 发短信
等级:九尾狐 帖子:2234 积分:15278 威望:0 精华:0 注册:2015/7/18 10:10:00
  发帖心情 Post By:2016/2/13 9:11:00 [只看该作者]

常见的作法是另外用一套表来存储多对多的关系。具体怎么做能介绍的详细些吗?

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


加好友 发短信
等级:狐神 帖子:5015 积分:25363 威望:0 精华:0 注册:2015/8/18 9:21:00
  发帖心情 Post By:2016/2/13 9:31:00 [只看该作者]

比如把"交易户名"和"涉及人员",拆分成一一对应的关系,一个 "交易户名"的工号对应一个"涉及人员"的工号在一行记录中,如果 "交易户名"哟2个工号,"涉及人员"有3个工号,那么就有2X3行记录,这样会有数据冗余,但是统计分析就很方便。

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


加好友 发短信
等级:九尾狐 帖子:2234 积分:15278 威望:0 精华:0 注册:2015/7/18 10:10:00
  发帖心情 Post By:2016/2/13 10:20:00 [只看该作者]

这样太多了,比如10个对10个就需要100行,这样太多了,我的意思是是否有更好的办法或者能够优化代码,提高代码效率

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


加好友 发短信
等级:狐神 帖子:5015 积分:25363 威望:0 精华:0 注册:2015/8/18 9:21:00
  发帖心情 Post By:2016/2/13 10:51:00 [只看该作者]

代码效率有时候是基于底层设计的,问题不是在于 100行的数据多不多,而是用空间换时间是否值得,特别是现在存储不值钱的情况下。

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


加好友 发短信
等级:九尾狐 帖子:2234 积分:15278 威望:0 精华:0 注册:2015/7/18 10:10:00
  发帖心情 Post By:2016/2/13 11:22:00 [只看该作者]

我需要10对10计算时,先增加100行,再一一列出对应关系然后计算,但需要修改任何一个时就需要修改10个,增加、减少都会非常麻烦,这是多大的工作量呀?

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


加好友 发短信
等级:狐神 帖子:5015 积分:25363 威望:0 精华:0 注册:2015/8/18 9:21:00
  发帖心情 Post By:2016/2/13 14:17:00 [只看该作者]

没做过银行系统,所以想象不出来银行交易会有一笔交易是多对多进行的。如果多对多不是在一笔交易内完成的,那么就不存在多对多的关系。个人觉得是不是应该重新梳理一下这个的业务流程。



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


加好友 发短信
等级:九尾狐 帖子:2234 积分:15278 威望:0 精华:0 注册:2015/7/18 10:10:00
  发帖心情 Post By:2016/2/13 16:16:00 [只看该作者]

在做数据统计


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