以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 谁能帮忙分析这代码,,,,, (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=11303) |
||||
-- 作者:jackshen888 -- 发布时间:2011/7/17 7:08:00 -- 谁能帮忙分析这代码,,,,, Dim t As Table
这段代码其中有一个我不太理解,,能否有朋友指导一下,,“”
For Each s1 In Ls
就是这部分了。谢谢请加注解。 |
||||
-- 作者:狐狸爸爸 -- 发布时间:2011/7/17 7:42:00 -- 我SQL不行,也难以理解,楼主最好问问代码的原作者。
其实统计的话,用foxtable自带的交叉统计、分组统计,更容易一点,不伤脑细胞。 |
||||
-- 作者:bjljb -- 发布时间:2011/7/17 10:20:00 -- 请把代码中提到的b表给个样子出来。
另外,s2+ =好像不是Foxtable的语法吧! |
||||
-- 作者:hhbb -- 发布时间: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 -- 发布时间: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编辑过]
|
||||
-- 作者:狐狸爸爸 -- 发布时间:2011/7/17 17:15:00 -- 呵呵,谢了,学习中ing. |
||||
-- 作者:jackshen888 -- 发布时间:2011/7/17 19:00:00 -- hhbb,, 在吗?
能不能帮我把之前的这个文件改个我现在传上来的效果,,,,,
谢谢了
|
||||
-- 作者:hhbb -- 发布时间: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
|