以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  希望大于0的,底纹显示为绿色,白色字体,这个是用交叉统计得的结果,结果入在窗口中  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=121854)

--  作者:y2287958
--  发布时间:2018/7/14 6:55:00
--  
参考drawcell
--  作者:有点蓝
--  发布时间:2018/7/14 9:13:00
--  
开启全局表drawcell事件,参考:http://www.foxtable.com/webhelp/scr/0671.htm

全局表drawcell事件写代码处理:http://www.foxtable.com/webhelp/scr/0656.htm

比如

If e.Table.name = "统计表1"
    If e.Col.name = "OP100" then
        If e.Row("OP100") = 0
            e.Style = "样式1"
        End If
    End If
End If

--  作者:有点蓝
--  发布时间:2018/7/14 15:10:00
--  
开启全局表drawcell事件,参考:http://www.foxtable.com/webhelp/scr/0671.htm
--  作者:有点蓝
--  发布时间:2018/7/14 15:53:00
--  
开启全局表drawcell事件的代码放到生成统计表之后
--  作者:有点蓝
--  发布时间:2018/7/14 16:19:00
--  
放到生成统计表之后,不是放到drawcell之后,难道你的统计表是在drawcell里生成的?

如果统计表是在菜单里生成的,做一个窗口按钮,或者到命令窗口执行GlobalHandler

如果通过按钮生成的

Dim b As New GroupTableBuilder("统计表1",DataTables("订单"))
b.Filter = "[客户] = \'CS01\'" \'仅统计客户为CS01的记录
b
.Groups.AddDef("产品") \'根据产品分组
b
.Totals.AddDef("数量") \'对数量进行统计
b
.Build \'生成统计表
MainTable
 = Tables("统计表1"\'打开生成的统计表
DataTables("统计表1").GlobalHandler.AfterEdit = True


--  作者:有点蓝
--  发布时间:2018/7/14 16:23:00
--  
Dim g As New CrossTableBuilder("统计表1", DataTables("毛坯工序状态表"))
g.HGroups.AddDef("毛坯编码")
g.HGroups.AddDef("生产批次")
g.HGroups.AddDef("批次序号")
g.HGroups.AddDef("成品编码")
g.HGroups.AddDef("成品描述")
g.VGroups.AddDef("加工工序")
g.Totals.AddDef("完成数量", "完成数量")
Tables("毛坯工序明细_Table1").DataSource = g.BuildDataSource()
Tables("毛坯工序明细_Table1").DataTable.GlobalHandler.DrawCell = True


--  作者:有点蓝
--  发布时间:2018/7/14 16:25:00
--  
Dim g As New CrossTableBuilder("统计表1", DataTables("毛坯工序状态表"))
g.HGroups.AddDef("毛坯编码")
g.HGroups.AddDef("生产批次")
g.HGroups.AddDef("批次序号")
g.HGroups.AddDef("成品编码")
g.HGroups.AddDef("成品描述")
g.VGroups.AddDef("加工工序")
g.Totals.AddDef("完成数量", "完成数量")
Tables("毛坯工序明细_Table1").DataSource = g.BuildDataSource()
Dim dr As DataTable = Tables("毛坯工序明细_Table1").DataTable
dt.AddUserStyle("空白", Color.Red, Color.White)
dt.GlobalHandler.DrawCell = True

--  作者:y2287958
--  发布时间:2018/7/14 17:26:00
--  
全局表事件代码:
Select Case e.Table.Name
    Case "毛坯工序明细_Table1"
        Select Case e.Col.name
            Case "完成数量_1","完成数量_2"
                If e.Row(e.Col) = 1
                    e.Style = "空白"
                End  If
        End Select
End Select

“刷新”按钮代码:
Dim g As New CrossTableBuilder("统计表1", DataTables("毛坯工序状态表"))
g.HGroups.AddDef("毛坯编码")
g.HGroups.AddDef("生产批次")
g.HGroups.AddDef("批次序号")
g.HGroups.AddDef("成品编码")
g.HGroups.AddDef("成品描述")
g.VGroups.AddDef("加工工序")
g.Totals.AddDef("完成数量", "完成数量")
Tables("毛坯工序明细_Table1").DataSource = g.BuildDataSource()
Dim dt As DataTable = Tables("毛坯工序明细_Table1").DataTable
dt.AddUserStyle("空白", Color.Green, Color.White)
dt.Styles("空白").FontBold = True
dt.GlobalHandler.DrawCell = True

--  作者:有点蓝
--  发布时间:2018/7/14 17:56:00
--  
统计后的结果只能筛选,不能做加载和分页

If Filter > "" Then
            e.Form.controls("Table1").Table.Filter  = Filter
        End If


--  作者:有点甜
--  发布时间:2018/7/15 15:26:00
--  

代码改成

 

        Dim g As New CrossTableBuilder("统计表1", DataTables("毛坯工序状态表"))
        g.HGroups.AddDef("毛坯编码")
        g.HGroups.AddDef("生产批次")
        g.HGroups.AddDef("批次序号")
        g.HGroups.AddDef("成品编码")
        g.HGroups.AddDef("成品描述")
        g.VGroups.AddDef("加工工序")
        g.Totals.AddDef("完成数量", "完成数量")
        g.FromServer = True
        Tables("毛坯工序明细_Table1").DataSource = g.BuildDataSource()
        Dim dt As DataTable = Tables("毛坯工序明细_Table1").DataTable
        dt.AddUserStyle("空白", Color.Green, Color.White)
        dt.Styles("空白").FontBold = True
        dt.GlobalHandler.DrawCell = True