Foxtable(狐表)用户栏目专家坐堂 → [求助]怎么统计本行各符号的个数?


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

主题:[求助]怎么统计本行各符号的个数?

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


加好友 发短信
等级:幼狐 帖子:180 积分:1609 威望:0 精华:0 注册:2013/4/25 14:05:00
[求助]怎么统计本行各符号的个数?  发帖心情 Post By:2013/5/29 15:12:00 [显示全部帖子]


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

后面三列显示本行所对应符号出现的个数,怎么实现?


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


加好友 发短信
等级:幼狐 帖子:180 积分:1609 威望:0 精华:0 注册:2013/4/25 14:05:00
  发帖心情 Post By:2013/5/30 16:39:00 [显示全部帖子]

谢谢,问题已经可以实现,但是又有了一个新问题。我是想实现只要表有改动,就重新计算,但是我的代码平均计算一次需要1.5秒,批量计算起来太慢,有没有能提高计算速度的办法?

下面是我的表和代码:

 


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

这个表有几百条记录


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

这个表有2百条记录左右

 

我是在表1的AfterEdit 中添加的代码如下:

e.Row("项目_1") = 0
e.Row("项目_2") = 0
e.Row("项目_3") = 0
e.Row("项目_出差") = 0
e.Row("项目_休假") = 0
e.Row("项目_事假") = 0

For i As Integer = 3 To 33  '列范围 第一列为0
    If e.Row(i) = "1" Then
        e.Row("项目_1") + = 1
    ElseIf e.Row(i) = "2" Then
        e.Row("项目_2") + = 1
    ElseIf e.Row(i) = "3" Then
        e.Row("项目_3") + = 1
    ElseIf e.Row(i) = "○" Then
        e.Row("项目_事假") + = 1
    ElseIf e.Row(i) = "*" Then
        e.Row("项目_休假") + = 1
    ElseIf e.Row(i) = "√" Then
        e.Row("项目_出差") + = 1
    End If
Next

 

' 以下为项目补助计算
e.Row("合计_驻外补贴") = 0
e.Row("合计_餐补") = 0
e.Row("合计_通讯") = 0
e.Row("合计_交通") = 0
For Each dr As DataRow In DataTables("项目补助信息").DataRows
    For Each dr2 As DataRow In DataTables("项目补助信息").DataRows
        For Each dr3 As DataRow In DataTables("项目补助信息").DataRows
            If e.Row("项目名称") = dr("名称") Then
                If e.Row("项目名称2") = dr2("名称") Then
                    If e.Row("项目名称3") = dr3("名称") Then
                        e.Row("合计_驻外补贴") = e.Row("项目_1") * dr("驻外补贴") + e.Row("项目_2") * dr2("驻外补贴") +e.Row("项目_3") * dr3("驻外补贴")
                        e.Row("合计_餐补") = e.Row("项目_1") * dr("餐补") + e.Row("项目_2") * dr2("餐补") +e.Row("项目_3") * dr3("餐补")
                        e.Row("合计_通讯") = e.Row("项目_1") * dr("通讯")/30 + e.Row("项目_2") * dr2("通讯")/30 +e.Row("项目_3") * dr3("通讯")/30
                        e.Row("合计_交通") = e.Row("项目_1") * dr("交通")/30 + e.Row("项目_2") * dr2("交通")/30 +e.Row("项目_3") * dr3("交通")/30
                       
                    End If
                End If
            End If
        Next
    Next
Next

 

这个代码已经可以实现我的功能,但是缺点就是太慢太慢了,希望能帮我优化,谢谢。


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


加好友 发短信
等级:幼狐 帖子:180 积分:1609 威望:0 精华:0 注册:2013/4/25 14:05:00
  发帖心情 Post By:2013/5/30 16:49:00 [显示全部帖子]

我也觉得是那里的问题,应该怎么改呢?

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


加好友 发短信
等级:幼狐 帖子:180 积分:1609 威望:0 精华:0 注册:2013/4/25 14:05:00
  发帖心情 Post By:2013/5/30 16:59:00 [显示全部帖子]


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

 

出现了这个。

[此贴子已经被作者于2013-5-30 17:00:00编辑过]

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


加好友 发短信
等级:幼狐 帖子:180 积分:1609 威望:0 精华:0 注册:2013/4/25 14:05:00
  发帖心情 Post By:2013/5/30 17:04:00 [显示全部帖子]

我先研究一下BIN老师的代码,还没看明白。。。

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


加好友 发短信
等级:幼狐 帖子:180 积分:1609 威望:0 精华:0 注册:2013/4/25 14:05:00
  发帖心情 Post By:2013/5/30 17:09:00 [显示全部帖子]

每个人都有3个项目的可能,每个项目的标准又不一样,根据在每个项目的工作天数和项目补助标准,核算每个人的补助合计。
[此贴子已经被作者于2013-5-30 17:13:46编辑过]

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


加好友 发短信
等级:幼狐 帖子:180 积分:1609 威望:0 精华:0 注册:2013/4/25 14:05:00
  发帖心情 Post By:2013/5/30 17:12:00 [显示全部帖子]

没有明显的速度提升,估计关键还是要把那下半段的代码改一下。


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


加好友 发短信
等级:幼狐 帖子:180 积分:1609 威望:0 精华:0 注册:2013/4/25 14:05:00
  发帖心情 Post By:2013/5/30 17:28:00 [显示全部帖子]

表结构已经上传了,我就不说了,我的目的就是"项目名称","项目名称2","项目名称3"这3列,根据项目补助标准表计算出3个项目整体的结果。

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


加好友 发短信
等级:幼狐 帖子:180 积分:1609 威望:0 精华:0 注册:2013/4/25 14:05:00
  发帖心情 Post By:2013/5/30 18:26:00 [显示全部帖子]

表2项目标准中的驻外、餐补等信息都是按天计算的,也就是说在A项目工作1天,即得到相对应项目补助中一天的钱数,每个人都有概率在1个月内到A、B、C三个项目,我必须要计算出这个人到每个项目的天数(即第一段代码),然后还要用这个天数乘以想对应的项目补助,然后在将3个项目的计算结果相加到一起(即第二段代码),最后即得到结果。


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


加好友 发短信
等级:幼狐 帖子:180 积分:1609 威望:0 精华:0 注册:2013/4/25 14:05:00
  发帖心情 Post By:2013/5/30 21:19:00 [显示全部帖子]


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

上面的好想不行啊。


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