以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  什么鬼,下面的代码在全局表事件中,菜单不能切换  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=77088)

--  作者:hbhb
--  发布时间:2015/11/10 21:26:00
--  什么鬼,下面的代码在全局表事件中,菜单不能切换
大师:什么代码耗时?
If e.Table.DataTable.Name.Contains("附注表")  Then
    Dim r As Row   \'---项目行---
    If Vars("fzToTal").count > 0 Then
        Dim d As Double                                     \'-----格式数据---
        If Double.TryParse(e.text.replace(",",""), d) Then
            e.text = format(d, "n")
        End If
        Dim sum(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
                        Dim  d1 As Double
                        \'If r.IsNull(Vars("fzToTal")(i)) = False  Then

                        If str(r(Vars("fzToTal")(i))).contains("%") = False  Then
                            If Double.TryParse(r(Vars("fzToTal")(i)),d1) Then
                                sum(i) += val(d1)
                                If Format(val(sum(i)),"n") <> 0 And Format(val(sum(i)),"n") <> "0" And Format(val(sum(i)),"n") IsNot Nothing  Then
                                    e.Row(Vars("fzToTal")(i)) = Format(val(sum(i)),"n")
                                Else
                                    e.Row(Vars("fzToTal")(i)) = Nothing
                                End If
                             Else   \'
                              e.Row(Vars("fzToTal")(i)) = Format(val(sum(i)),"n")  
                            End If
                        Else
                            If Double.TryParse(r(Vars("fzToTal")(i)).replace("%",""),d1) Then
                                sum(i) += val(d1)/100
                                If Format(val(sum(i)),"n") <> 0 And Format(val(sum(i)),"n") <> "0" And Format(val(sum(i)),"n") IsNot Nothing  Then
                                    
                                    e.Row(Vars("fzToTal")(i)) = Format(sum(i),"Percent")
                                Else
                                    e.Row(Vars("fzToTal")(i)) = Nothing
                                End If
                             Else
                              e.Row(Vars("fzToTal")(i)) = Format(sum(i),"Percent")
                            End If
                            
                        End If

                     \'End If
                    Next
                    
                End If
            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 = 1 To sum2.length - 1
                If str(e.Table.Rows(idx2)(Vars("fzToTal")(i))).contains("%") = False  Then
                    If val(str(e.Table.Rows(idx1)(Vars("fzToTal")(i))).replace(",","")) <> 0  Then
                        If format((val(str(e.Table.Rows(idx1)(Vars("fzToTal")(i))).replace(",","")) - e.Table.Rows(idx2)(Vars("fzToTal")(i))),"n") <> 0 And format((val(str(e.Table.Rows(idx1)(Vars("fzToTal")(i))).replace(",","")) - e.Table.Rows(idx2)(Vars("fzToTal")(i))),"n") <> "0"  Then
                            e.Row(Vars("fzToTal")(i)) = format((val(str(e.Table.Rows(idx1)(Vars("fzToTal")(i))).replace(",","")) - e.Table.Rows(idx2)(Vars("fzToTal")(i))),"n")
                        Else
                            e.Row(Vars("fzToTal")(i)) = Nothing
                        End If
                    End If
                End If
            Next
            
        End If
        
    End If
End If

--  作者:hbhb
--  发布时间:2015/11/10 21:44:00
--  
整整三天,就是以上的鸟代码搞得我头昏脑胀,一会儿死机,一会儿不能切换菜单。一个自动计算如此简单地功能,官方就不能来个成熟的实例?什么鸟玩意?
什么统计查询?刻板、死板!进销存的木乃伊!

--  作者:大红袍
--  发布时间:2015/11/10 21:46:00
--  

Dim r As Row
Vars("fzToTal") = new List(Of String)
Vars("fzToTal").add("第三列")
Vars("fzToTal").add("第二列")
Dim sum(Vars("fzToTal").Count-1) As Double

If e.Row(e.Table.Cols(0).name) = "合计" Then
    e.Style = "abc"
   
    For i As Integer = 0 To sum.length - 1
        Dim  d1 As Double
        Dim flag As Integer = 0
        For n As Integer = 0 To e.Row.Index -1
            r = e.Table.Rows(n)
           
            If Double.TryParse(r(Vars("fzToTal")(i)).replace("%", ""),d1) Then
                If cstr(r(Vars("fzToTal")(i))).contains("%") Then
                    flag = 1
                    sum(i) += val(d1)/100
                Else
                    sum(i) += val(d1)
                End If
               
            End If
        Next
       
        If flag = 0 Then
            If Format(val(sum(i)),"n") <> 0 And Format(val(sum(i)),"n") <> "0" And Format(val(sum(i)),"n") IsNot Nothing  Then
                e.Row(Vars("fzToTal")(i)) = Format(val(sum(i)),"n")
            Else
                e.Row(Vars("fzToTal")(i)) = Nothing
            End If
        Else
            If flag = 1 Then
                If Format(val(sum(i)),"n") <> 0 And Format(val(sum(i)),"n") <> "0" And Format(val(sum(i)),"n") IsNot Nothing  Then
                    e.Row(Vars("fzToTal")(i)) = Format(sum(i),"Percent")
                Else
                    e.Row(Vars("fzToTal")(i)) = Nothing
                End If
            End If
        End If
    Next
End If


--  作者:大红袍
--  发布时间:2015/11/10 21:47:00
--  
要改东西太多,做个简单例子上来吧。
--  作者:hbhb
--  发布时间:2015/11/10 22:10:00
--  
搞个什么鸟合计模式。用的多的的随意小计,合计,总计。加减运算等。你就不能告诉合计的设计是怎么搞的?
不在方便、快捷、实用的小模块上面下功夫,简直就是扯淡。
如果没有袍大师的指导,靠木乃伊的八股文帮助,能写出像样的实用的软件来?胡扯+胡闹。




--  作者:大红袍
--  发布时间:2015/11/10 22:11:00
--  
上传项目测试啊。
--  作者:hbhb
--  发布时间:2015/11/10 22:31:00
--  
如实例,就这么简单地要求:
1、自动计算出合计,如果输入的是%,合计自动合计为%
2、自动计算出差异
3、空及0不显示
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目42.zip

4、格式为保留小数位2位的带千位符的数字格式
5、如果是数字靠右停靠,如果不是靠左停靠
6、合计行颜色单独设置

--  作者:大红袍
--  发布时间:2015/11/10 23:04:00
--  

Dim r As Row
Vars("fzToTal") = new List(Of String)
Vars("fzToTal").add("数量")
Vars("fzToTal").add("金额")
Vars("fzToTal").add("比率")
Dim sum(Vars("fzToTal").Count-1) As Double
e.Table.DataTable.AddUserStyle("abc", Color.yellow, Color.Black)
Dim cs1 As C1.Win.C1FlexGrid.CellStyle = e.Table.grid.Styles.Add("cs1")
cs1.TextAlign = 7
Dim cs2 As C1.Win.C1FlexGrid.CellStyle = e.Table.grid.Styles.Add("cs2")
cs2.TextAlign = 1

Dim d As Double
If Double.TryParse(e.Text.replace("%", ""),d) Then
    If e.Table.Grid.GetCellRange(e.Row.Index+1, e.Col.Index+1).style.name <> cs1.name Then
        e.Table.grid.SetCellStyle(e.Row.Index+1, e.Col.Index+1, cs1)
    End If
Else
    If e.Table.Grid.GetCellRange(e.Row.Index+1, e.Col.Index+1).style.name <> cs2.name Then
        e.Table.grid.SetCellStyle(e.Row.Index+1, e.Col.Index+1, cs2)
    End If
End If

If e.Row(e.Table.Cols(0).name) = "合计" Then
    e.Style = "abc"
   
    For i As Integer = 0 To sum.length - 1
        Dim  d1 As Double
        Dim flag As Integer = 0
        For n As Integer = 0 To e.Row.Index -1
            r = e.Table.Rows(n)
           
            If Double.TryParse(r(Vars("fzToTal")(i)).replace("%", ""),d1) Then
                If cstr(r(Vars("fzToTal")(i))).contains("%") Then
                    flag = 1
                    sum(i) += val(d1)/100
                Else
                    sum(i) += val(d1)
                End If
               
            End If
        Next
       
        If flag = 0 Then
            If Format(val(sum(i)),"n") <> 0 And Format(val(sum(i)),"n") <> "0" And Format(val(sum(i)),"n") IsNot Nothing  Then
                e.Row(Vars("fzToTal")(i)) = Format(val(sum(i)),"n")
            Else
                e.Row(Vars("fzToTal")(i)) = Nothing
            End If
        Else
            If flag = 1 Then
                If Format(val(sum(i)),"n") <> 0 And Format(val(sum(i)),"n") <> "0" And Format(val(sum(i)),"n") IsNot Nothing  Then
                    e.Row(Vars("fzToTal")(i)) = Format(sum(i),"Percent")
                Else
                    e.Row(Vars("fzToTal")(i)) = Nothing
                End If
            End If
        End If
    Next
End If

If e.Row(e.Table.Cols(0).name) = "差异" Then
   
    Dim r1 As Row = e.Table.Rows(e.Row.Index-1)
    Dim r2 As Row = e.Table.Rows(e.Row.Index-2)
   
    For i As Integer = 0 To sum.length - 1
        Dim cname As String = Vars("fzToTal")(i)
        If cstr(r2(cname)).contains("%") Then
            e.Row(cname) = format(val(r1(cname)) - val(r2(cname).Replace("%", "")) / 100,"Percent")
        Else
            e.Row(cname) = Format(val(r1(cname)) - val(r2(cname).Replace(",", "")), "n")
           
        End If
    Next
   
End If


--  作者:hbhb
--  发布时间:2015/11/10 23:36:00
--  
放在表a的dracell事件中出错?
--  作者:hbhb
--  发布时间:2015/11/11 0:02:00
--  
图片点击可在新窗口打开查看图片点击可在新窗口打开查看