Foxtable(狐表)用户栏目专家坐堂 → [求助]可否直接引用组合统计的结果?


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

主题:[求助]可否直接引用组合统计的结果?

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


加好友 发短信
等级:一尾狐 帖子:405 积分:4927 威望:0 精华:0 注册:2017/2/7 7:41:00
[求助]可否直接引用组合统计的结果?  发帖心情 Post By:2022/12/11 11:24:00 [只看该作者]

在帮助的“组合多个统计结果”中
http://www.foxtable.com/webhelp/topics/2305.htm
表达式列计算

Tables("窗口1_Table1").DataSource =   dt1  '将统计结果绑定到Table
 With  DataTables("窗口1_Table1").DataCols  '用表达式列计算库存数据
    .Add("库存_数量",Gettype(Integer),  "IsNull([进货_数量],0) - ISNULL([销售_数量],0) - ISNULL([退货_数量],0)")
      .Add("库存_金额",Gettype(Double),  "[库存_数量] /[进货_数量] * [进货_金额]") 
End With

这段代码可否直接放在dt1(或dt2、dt3)的统计计算中?

例子中,库存数据是用窗口表控件的列,用表达式列根据进货、销售、库存计算得出。
而且实际应用中,没有窗口表控件,需要直接在内部函数中计算,可否直接引用组合统计的结果?

帮助后面有提到
Dim tbl As DataTable = dt1.TodataTable() 
不过,不知道如何使用。
[此贴子已经被作者于2022/12/11 12:52:41编辑过]

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


加好友 发短信
等级:超级版主 帖子:111393 积分:567029 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/12/11 19:59:00 [只看该作者]

Dim tbl As DataTable = dt1.TodataTable() 
With  tbl .DataCols  '用表达式列计算库存数据
    .Add("库存_数量",Gettype(Integer),  "IsNull([进货_数量],0) - ISNULL([销售_数量],0) - ISNULL([退货_数量],0)")
      .Add("库存_金额",Gettype(Double),  "[库存_数量] /[进货_数量] * [进货_金额]") 
End With

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


加好友 发短信
等级:一尾狐 帖子:405 积分:4927 威望:0 精华:0 注册:2017/2/7 7:41:00
  发帖心情 Post By:2022/12/11 20:19:00 [只看该作者]

谢谢。还有,请问,如何把这个 tbl  数据库导出为XLS文件保存下来

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


加好友 发短信
等级:超级版主 帖子:111393 积分:567029 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/12/11 20:48:00 [只看该作者]


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


加好友 发短信
等级:一尾狐 帖子:405 积分:4927 威望:0 精华:0 注册:2017/2/7 7:41:00
  发帖心情 Post By:2022/12/11 21:02:00 [只看该作者]

这个帮助也看过,上面是 Table 类型
而组合统计产生的tbl 是Datatable 类型,tbl 没有具体的表名称,不知道如何引用。

改为这样,还是出错

Dim tbl As DataTable = dt1.TodataTable() 

Dim Book As New XLS.Book '定义一个Excel工作簿
Dim Sheet As XLS.Sheet = Book.Sheets(0) '引用工作簿的第一个工作表
For c As Integer = 0 To tbl.DataCols.Count - 1 '添加列标题
    Sheet(0, c).Value = tbl.DataCols(c).Name
Next
For r As Integer = 0 To tbl.DataRows.Count - 1 '填入数据
    For c As Integer = 0 To tbl.DataCols.Count - 1
        Sheet(r + 1, c).Value = tbl.DataRows(r)(c)
    Next
Next
'打开工作簿
Book.Save("c:\test.xls")
Dim Proc As New Process 
Proc.File = "c:\test.xls"
Proc.Start()

[此贴子已经被作者于2022/12/11 22:30:03编辑过]

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


加好友 发短信
等级:超级版主 帖子:111393 积分:567029 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/12/11 21:54:00 [只看该作者]

麻烦把帮助认真看完

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


加好友 发短信
等级:一尾狐 帖子:405 积分:4927 威望:0 精华:0 注册:2017/2/7 7:41:00
  发帖心情 Post By:2022/12/11 22:35:00 [只看该作者]

总算改出来了

Dim tbl As DataTable = dt1.TodataTable() 


Dim Nms(tbl.DataCols.Count) As String

Dim Book As New XLS.Book '定义一个Excel工作簿
Dim Sheet As XLS.Sheet = Book.Sheets(0) '引用工作簿的第一个工作表

For c As Integer = 0 To tbl.DataCols.Count - 1 '添加列标题
    Sheet(0, c).Value = tbl.DataCols(c).Name
    nms(c) = tbl.DataCols(c).Name
Next


For r As Integer = 0 To tbl.DataRows.Count - 1 '填入数据
    For c As Integer = 0 To tbl.DataCols.Count - 1
        Sheet(r + 1, c).Value = tbl.DataRows(r)(nms(c)) 
    Next
Next
'打开工作簿
Book.Save("c:\test.xls")
Dim Proc As New Process 
Proc.File = "c:\test.xls"
Proc.Start()

[此贴子已经被作者于2022/12/11 22:59:34编辑过]

 回到顶部