以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]怎么统计本行各符号的个数?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=34047)

--  作者:paniwangji
--  发布时间:2013/5/29 15:12:00
--  [求助]怎么统计本行各符号的个数?


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

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


--  作者:Bin
--  发布时间:2013/5/29 15:22:00
--  
If e.DataCol.name <> "圆圈" Then
    e.DataRow("圆圈")=0
    For i As Integer=0 To 6
        If e.DataRow(Tables("表C").Cols(i).Name)="圆" Then
            e.DataRow("圆圈")=e.DataRow("圆圈")+1
        End If
    Next
End If

--  作者:lsy
--  发布时间:2013/5/29 16:34:00
--  

表中Click事件:

e.Row("圆圈") = Nothing

e.Row("星号") = Nothing

e.Row("对勾") = Nothing

For i As Integer = 0 To 6
    If 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

[此贴子已经被作者于2013-5-29 16:56:21编辑过]

--  作者:paniwangji
--  发布时间: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

 

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


--  作者:fjlclxj
--  发布时间:2013/5/30 16:46:00
--  
三层嵌套循改改吧
--  作者:paniwangji
--  发布时间:2013/5/30 16:49:00
--  
我也觉得是那里的问题,应该怎么改呢?
--  作者:Bin
--  发布时间:2013/5/30 16:51:00
--  
If e.Col.name<>"项目_1" AndAlso e.Col.name<>"项目_2" AndAlso e.Col.name<>"项目_3" AndAlso e.Col.name<>"项目_出差" AndAlso e.Col.name<>"项目_休假" AndAlso e.Col.name<>"项目_事假" Then
Dim dic As new Dictionary(of String,Integer)
dic.Add("项目_1")
dic.Add("项目_2")
dic.Add("项目_3")
dic.Add("项目_事假")
dic.Add("项目_休假")
dic.Add("项目_出差")
For i As Integer = 3 To 33  \'列范围 第一列为0
    If e.Row(i) = "1" Then
        dic("项目_1") + = 1
    ElseIf e.Row(i) = "2" Then
        dic("项目_2") + = 1
    ElseIf e.Row(i) = "3" Then
        dic("项目_3") + = 1
    ElseIf e.Row(i) = "○" Then
        dic("项目_事假") + = 1
    ElseIf e.Row(i) = "*" Then
        dic("项目_休假") + = 1
    ElseIf e.Row(i) = "√" Then
        dic("项目_出差") + = 1
    End If
Next
e.Row("项目_1")=dic("项目_1")
e.Row("项目_2")=dic("项目_2")
e.Row("项目_3")=dic("项目_3")
e.Row("项目_事假")=dic("项目_事假")
e.Row("项目_休假")=dic("项目_休假")
e.Row("项目_出差")=dic("项目_出差")
End If



突然发现前面的清0是没有意义的代码可以删掉!
[此贴子已经被作者于2013-5-30 16:57:25编辑过]

--  作者:Bin
--  发布时间:2013/5/30 16:52:00
--  
试试效率如何 如果还是慢.我再修改一下.最后发例子出来 我能测试分析.
--  作者:Bin
--  发布时间:2013/5/30 16:59:00
--  
你下面那一段是在同一个事件里的啊?参考相同的处理方式优化一下吧.应该有很大的提升
--  作者:paniwangji
--  发布时间:2013/5/30 16:59:00
--  


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

 

出现了这个。

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