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


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

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

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


加好友 发短信
等级:婴狐 帖子:79 积分:850 威望:0 精华:0 注册:2011/5/21 20:19:00
谁能帮忙分析这代码,,,,,  发帖心情 Post By:2011/7/17 7:08:00 [只看该作者]

Dim t As Table
Dim s1,s2  As String
Dim Ls As List(Of String)
Ls = DataTables("b").GetUniqueValues("", "加工工艺")


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


t = Tables("窗口1_Table1")
t.FILL("Select [_Identify],订单号,颜色" & s2 & ",数量 as 订单数量 From{B}",True)
t.sort = "订单号"

 

 

这段代码其中有一个我不太理解,,能否有朋友指导一下,,“”

 

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

 

 

就是这部分了。谢谢请加注解。


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


加好友 发短信
等级:管理员 帖子:47449 积分:251065 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/7/17 7:42:00 [只看该作者]

我SQL不行,也难以理解,楼主最好问问代码的原作者。

 

其实统计的话,用foxtable自带的交叉统计、分组统计,更容易一点,不伤脑细胞。


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


加好友 发短信 三级勋章
等级:童狐 帖子:273 积分:2072 威望:0 精华:0 注册:2008/9/5 23:31:00
  发帖心情 Post By:2011/7/17 10:20:00 [只看该作者]

请把代码中提到的b表给个样子出来。

 

另外,s2+ =好像不是Foxtable的语法吧!


 回到顶部
帅哥哟,离线,有人找我吗?
hhbb
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | 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
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | 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编辑过]

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


加好友 发短信
等级:管理员 帖子:47449 积分:251065 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/7/17 17:15:00 [只看该作者]

呵呵,谢了,学习中ing.

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


加好友 发短信
等级:婴狐 帖子:79 积分:850 威望:0 精华:0 注册:2011/5/21 20:19:00
  发帖心情 Post By:2011/7/17 19:00:00 [只看该作者]

hhbb,,  在吗?

 

能不能帮我把之前的这个文件改个我现在传上来的效果,,,,,

 

谢谢了

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目105.table


 回到顶部
帅哥哟,离线,有人找我吗?
hhbb
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | 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

 回到顶部