Foxtable(狐表)用户栏目专家坐堂 → 请教代码


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

主题:请教代码

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


加好友 发短信
等级:狐神 帖子:5054 积分:13025 威望:0 精华:0 注册:2014/5/15 21:34:00
请教代码  发帖心情 Post By:2015/10/29 22:29:00 [只看该作者]

大师:drawcell事件中如下代码,错在哪里?为何差异行不计算?
Dim r As Row   '---项目行---
If e.Table.DataTable.Name.Contains("附注表")  Then
    If Vars("fzToTal").count > 0 Then
        Dim sum(Vars("fzToTal").count - 1) As object   '---合计数组
        Dim sum1(Vars("fzToTal").count - 1) As object   '----报表数组
        Dim sum2(Vars("fzToTal").count - 1) As object   '----差异数组
        e.Table.DataTable.AddUserStyle("abc",Color.LightBLue,Color.blue)
        If e.Row(e.Table.Cols(0).name) = "合计" Then           
            e.Style = "abc"           
            For n As Integer = 0 To e.Row.Index -1
                r = e.Table.Rows(n)
                If r(e.Table.Cols(0).name) <> "合计" Then
                    For i As Integer = 1 To sum.length - 1
                        sum(i) += val(r(Vars("fzToTal")(i)))
                    Next
                End If
            Next
            For i As Integer = 1 To sum.length - 1
                e.Row(Vars("fzToTal")(i)) = Format(val(sum(i)),"n")
            Next
            
        End If
        If e.Row(e.Table.Cols(0).name) = "报表数" Then
            For i As Integer = 1 To sum1.length - 1
                sum1(i) = val(e.Row(Vars("fzToTal")(i)))
            Next
        End If
        
        If e.Row(e.Table.Cols(0).name) = "差异" Then
            For i As Integer = 1 To sum2.length - 1
 
                e.Row(Vars("fzToTal")(i)) = Format(val(sum1(i)),"n") - Format(val(sum(i)),"n")
            Next
        End If
              
    End If
End If

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/10/29 22:35:00 [只看该作者]

e.Row(Vars("fzToTal")(i)) = Format(val(sum1(i)) - val(sum(i)),"n")

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


加好友 发短信
等级:狐神 帖子:5054 积分:13025 威望:0 精华:0 注册:2014/5/15 21:34:00
  发帖心情 Post By:2015/10/29 22:45:00 [只看该作者]

还是不计算,为何?
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目29.zip


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/10/29 23:04:00 [只看该作者]

Dim r As Row   '---项目行---
Vars("fzToTal") = new List(Of String)
Vars("fzToTal").add("数量")
Vars("fzToTal").add("金额")
If e.Table.DataTable.Name.Contains("统计")  Then
    If Vars("fzToTal").count > 0 Then
        Dim sum(Vars("fzToTal").count - 1) As object   '---合计数组
        Dim sum1(Vars("fzToTal").count - 1) As object   '----报表数组
        Dim sum2(Vars("fzToTal").count - 1) As object   '----差异数组
        e.Table.DataTable.AddUserStyle("abc",Color.LightBLue,Color.blue)
        If e.Row(e.Table.Cols(0).name) = "合计" Then
            e.Style = "abc"
            For n As Integer = 0 To e.Row.Index -1
                r = e.Table.Rows(n)
                If r(e.Table.Cols(0).name) <> "合计" Then
                    For i As Integer = 0 To sum.length - 1
                        sum(i) += val(r(Vars("fzToTal")(i)))
                    Next
                End If
            Next
            For i As Integer = 0 To sum.length - 1
                e.Row(Vars("fzToTal")(i)) = val(sum(i))
            Next
        End If
       
       
        If e.Row(e.Table.Cols(0).name) = "差异数" Then
            Dim idx1 As Integer = e.Table.FindRow(e.Table.Cols(0).name & " = '报表数'")
            Dim idx2 As Integer = e.Table.FindRow(e.Table.Cols(0).name & " = '合计'")
            For i As Integer = 0 To sum2.length - 1
                e.Row(Vars("fzToTal")(i)) = val(e.Table.Rows(idx1)(Vars("fzToTal")(i))) - val(e.Table.Rows(idx2)(Vars("fzToTal")(i)))
            Next
        End If
       
    End If
End If


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


加好友 发短信
等级:狐神 帖子:5054 积分:13025 威望:0 精华:0 注册:2014/5/15 21:34:00
  发帖心情 Post By:2015/10/29 23:27:00 [只看该作者]

始终不理解我写的代码错在哪里?通过e.row定位的index的行号与查找的行号是一样的?为何就不行?

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/10/30 10:12:00 [只看该作者]

drawcell执行的时候,一个单元格一个单元格运行的,也就是每次进入,e.Row都是不同,不可能获取多行的数据,必须用findrow查询

 回到顶部