Foxtable(狐表)用户栏目专家坐堂 → 在交叉统计设置中复制代码 不能直接使用吗?


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

主题:在交叉统计设置中复制代码 不能直接使用吗?

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/10/13 8:48:00 [显示全部帖子]

1、贴出代码看看;

 

2、尽量做个实例发上来测试。


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/10/13 10:22:00 [显示全部帖子]

代码没问题。最后生成的表是【统计表2】,你还有其余的代码影响了?

 

做个出错的例子发上来测试。


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/10/13 10:50:00 [显示全部帖子]

Dim g As New sqlCrossTableBuilder("统计表2", "表A")
g.HGroups.AddExp("第一列","cstr(year(第一列)) + '年' + cstr(month(第一列)) + '月'")
g.VGroups.AddDef("第二列")
g.Totals.AddDef("第二列", AggregateEnum.Count, "第二列")
g.Build()
MainTable = Tables("统计表2")

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/10/16 10:55:00 [显示全部帖子]

以下是引用zchlln在2017/10/16 10:44:00的发言:
这个是外部数据源的 就不行 提示报错 计算错误 无法生成报表。 用户名是开发者 密码888
[此贴子已经被作者于2017/10/16 10:45:03编辑过]

 

加入代码

 

g.ConnectionName = "数据源名"


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/10/16 10:56:00 [显示全部帖子]

回复7楼,没看懂你第二个问题,请就例子具体说明那你要做什么。

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/10/16 12:22:00 [显示全部帖子]


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/10/17 13:24:00 [显示全部帖子]

 具体例子发生上来。


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/10/18 15:32:00 [显示全部帖子]

计算这样算。没看懂你使用数量怎么计算怎么显示,请举例说明。
 
Dim dtb As New DataTableBuilder("统计")
dtb.AddDef("日期", Gettype(String))
Dim str As String = "未领取,报废,返修A厂"
Dim prds As List(of String) = DataTables("订单").GetValues("领取人", "领取人 not in ('" & str.replace(",", "','") & "')")
prds.Insert(0, "返修A厂")
prds.Insert(0, "报废")
prds.Insert(0, "未领取")
For Each prd As String In prds
    dtb.AddDef(prd & "_领取数量", Gettype(Integer))
    dtb.AddDef(prd & "_使用数量", Gettype(Integer))
    dtb.AddDef(prd & "_剩余数量", Gettype(Integer))
Next
dtb.Build()
For Each cus As String In DataTables("订单").sqlGetValues("format(日期,'yyyy年MM月')")
    Dim dr As DataRow = DataTables("统计").AddNew()
    dr("日期") = cus
    Dim d As Date = new Date(cus.Substring(0,4), cus.SubString(5,2), 1)
    Dim filter As String = "日期 >= #" & d & "# and 日期 < #" & d.addMonths(1) & "#"
    For Each prd As String In prds
        Dim dt As DataTable =DataTables("登记表")
        dr(prd & "_领取数量") = DataTables("订单").Compute("Count(领取人)",filter & " And [领取人] = '" & prd & "'")
    Next
Next
MainTable= Tables("统计")

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/10/18 16:53:00 [显示全部帖子]

Dim dtb As New DataTableBuilder("统计")
dtb.AddDef("日期", Gettype(String))
Dim str As String = "未领取,报废,返修A厂"
Dim prds As List(of String) = DataTables("订单").GetValues("领取人", "领取人 not in ('" & str.replace(",", "','") & "')")
prds.Insert(0, "返修A厂")
prds.Insert(0, "报废")
prds.Insert(0, "未领取")
For Each prd As String In prds
    dtb.AddDef(prd & "_领取数量", Gettype(Integer))
    dtb.AddDef(prd & "_使用数量", Gettype(Integer))
    dtb.AddDef(prd & "_剩余数量", Gettype(Integer))
Next
dtb.Build()
Dim ids As String = DataTables("登记表").GetComboListString("产品id号").replace("|", "','")
For Each cus As String In DataTables("订单").sqlGetValues("format(日期,'yyyy年MM月')")
    Dim dr As DataRow = DataTables("统计").AddNew()
    dr("日期") = cus
    Dim d As Date = new Date(cus.Substring(0,4), cus.SubString(5,2), 1)
    Dim filter As String = "日期 >= #" & d & "# and 日期 < #" & d.addMonths(1) & "#"
    For Each prd As String In prds
        Dim dt As DataTable =DataTables("登记表")
        dr(prd & "_领取数量") = DataTables("订单").Compute("Count(领取人)",filter & " And [领取人] = '" & prd & "'")
        dr(prd & "_使用数量") = DataTables("订单").Compute("Count(领取人)",filter & " And [领取人] = '" & prd & "' and 产品id号 in ('" & ids & "')")
    Next
Next
MainTable= Tables("统计")

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/10/19 12:09:00 [显示全部帖子]

剩余数量,直接用【领用】-【使用】即可。

 

试试

 

Dim cmd As new SQLCommand
cmd.commandText = "Select  领取人, format(日期,'yyyy年MM月') as 日期, {登记表}.产品id号 As 产品id号 From {订单} Left JOIN {登记表} ON {登记表}.[产品ID号] = {订单}.[产品ID号]"
Dim dt As DataTable = cmd.ExecuteReader
Dim dtb As New DataTableBuilder("统计")
dtb.AddDef("日期", Gettype(String))
Dim str As String = "未领取,报废,返修A厂"
Dim prds As List(of String) = dt.GetValues("领取人", "领取人 not in ('" & str.replace(",", "','") & "')")
prds.Insert(0, "返修A厂")
prds.Insert(0, "报废")
prds.Insert(0, "未领取")
For Each prd As String In prds
    dtb.AddDef(prd & "_领取数量", Gettype(Integer))
    dtb.AddDef(prd & "_使用数量", Gettype(Integer))
    dtb.AddDef(prd & "_剩余数量", Gettype(Integer))
Next
dtb.Build()
For Each cus As String In dt.GetValues("日期")
    Dim dr As DataRow = DataTables("统计").AddNew()
    dr("日期") = cus
    Dim d As Date = new Date(cus.Substring(0,4), cus.SubString(5,2), 1)
    Dim filter As String = "日期 = '" & cus & "'"
    For Each prd As String In prds
        dr(prd & "_领取数量") = dt.Compute("Count(领取人)",filter & " And [领取人] = '" & prd & "'")
        dr(prd & "_使用数量") = dt.Compute("Count(领取人)",filter & " And [领取人] = '" & prd & "' and 产品id号 is not null")
    Next
Next
MainTable= Tables("统计")


 回到顶部
总数 23 1 2 3 下一页