Foxtable(狐表)用户栏目专家坐堂 → 谁能帮忙分析这代码,,,,,


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

主题:谁能帮忙分析这代码,,,,,

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


加好友 发短信
等级:等待验证 帖子:386 积分:2482 威望:0 精华:1 注册:2011/5/10 11:13:00
  发帖心情 Post By:2011/7/17 10:49:00 [显示全部帖子]

Dim g As New CrossTableBuilder("统计表1", DataTables("b"))

g.HGroups.AddDef("订单号")

g.HGroups.AddDef("颜色")

g.VGroups.AddDef("加工工艺")

g.Totals.AddDef("数量", "数量")

g.HorizontalTotal = True

g.Build()


Dim t As Table = Tables("统计表1")

Dim s As String


For Each c As Col In t.Cols

    If c.name.StartsWith("数量_") Then '如列名是以[数量_]开头则       

        c.Caption = c.name.Replace("数量_","加工工艺") '重新生成列标题 

    End If

Next

t.Cols("合计").Caption = "订单数量"

t.DataTable.BuildHeader()

MainTable = t


也还是要伤一点脑细胞的:

重新生成想要的列标题



[此贴子已经被作者于2011-7-17 11:04:23编辑过]

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


加好友 发短信
等级:等待验证 帖子:386 积分:2482 威望:0 精华:1 注册:2011/5/10 11:13:00
  发帖心情 Post By:2011/7/17 11:01:00 [显示全部帖子]

其实一楼的代码也不难理解:从 DataTables("b").GetUniqueValues("", "加工工艺")取得的不重复的记录是[1号工艺,2号工艺,3号工艺],以此生成水平交叉列(需改名为:加工工艺1,加工工艺2,加工工艺3)

For Each s1 In Ls
    s2+ =",iif(加工工艺 = '" & s1 & "',数量 ,Null) as 加工工艺" & s1.Replace("号工艺","")
Next

以上语句是为了动态生成下面sql语句中颜色(颜色对应)部位字符串

Select [_Identify],订单号,颜色,iif(加工工艺 = '1号工艺',数量 ,Null) as 加工工艺1,iif(加工工艺 = '2号工艺',数量 ,Null) as 加工工艺2,iif(加工工艺 = '3号工艺',数量 ,Null) as 加工工艺3,数量 as 订单数量 From{B}
[此贴子已经被作者于2011-7-17 14:35:28编辑过]

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


加好友 发短信
等级:等待验证 帖子:386 积分:2482 威望:0 精华:1 注册:2011/5/10 11:13:00
  发帖心情 Post By:2011/7/17 22:21:00 [显示全部帖子]

Dim t As Table = Tables("窗口1_Table1")
t.StopRedraw
Dim g As New CrossTableBuilder("统计表1", DataTables("b"))
g.HGroups.AddDef("订单号")
g.VGroups.AddDef("加工工艺")
g.Totals.AddDef("数量")
g.HorizontalTotal = True
t.DataSource =g.BuildDataSource()

t.DataTable.DataCols.Add("颜色",Gettype(String))
t.Cols("颜色").Move(1)
For Each r As Row In t.Rows
    r("颜色") = DataTables("b").GetComboListString("颜色","订单号='" & r("订单号") & "'").replace("|",",")
Next

For Each c As Col In t.Cols
    If c.name.StartsWith("数量_") Then 
        c.Caption = "已" & c.Caption & "数量"
    End If
Next

t.Cols("合计").Caption = "订单数量"
t.DataTable.BuildHeader()
t.AutoSizeCols
t.ResumeRedraw

 回到顶部