以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  请问如何在SQL语句中直接调用 GroupTableBuilder产生的临时表?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=53247)

--  作者:蓝色理想
--  发布时间:2014/7/3 14:29:00
--  请问如何在SQL语句中直接调用 GroupTableBuilder产生的临时表?
如题,请高手指点
--  作者:Bin
--  发布时间:2014/7/3 14:35:00
--  
不明白你的意思, 你是说自己编写SQL语句达到GroupTableBuilder的效果吗?
--  作者:蓝色理想
--  发布时间:2014/7/3 14:44:00
--  
我的意思是,用 GroupTableBuilder 生成了一个临时表
我想用 sql 语句把  一个表  和 这个 GroupTableBuilder生成的临时表  进行连接

实体表 可以用 from  tableA 取得数据
那 GroupTableBuilder生成的临时表,该如何from 呢?

--  作者:有点甜
--  发布时间:2014/7/3 14:46:00
--  

用 Group By 语法

 

http://www.foxtable.com/help/topics/0695.htm

 


--  作者:蓝色理想
--  发布时间:2014/7/3 15:45:00
--  

打开CaseStudy目录下的文件“组合结果.Table”,然后在命令窗口执行执行下面的代码:

Dim bd1 As New GroupTableBuilder("1",DataTables("进货单"))
Dim
 dt1 As fxDataSource
bd1
.Groups.AddDef("型号"\'根据型号分组
bd1
.Totals.AddDef("数量","进货_数量"\'对数量进行
bd1
.Totals.AddDef("金额","进货_金额"\'对金额进行
dt1
 = bd1.BuildDataSource() 


我想在代码中

通过 sql 的  select 语句,调用上面生成的表

如何弄?


--  作者:有点甜
--  发布时间:2014/7/3 15:48:00
--  
 不能直接调用。如果你要写sql语句,你必须先用sql语句得出上面的表。
--  作者:Bin
--  发布时间:2014/7/3 15:52:00
--  
select 型号,sum(数量) as 进货_数量,sum(单价*数量) as 进货_金额 from {进货单} group by 型号
--  作者:蓝色理想
--  发布时间:2014/7/3 16:12:00
--  
谢谢版主指点
--  作者:蓝色理想
--  发布时间:2014/7/3 16:14:00
--  
其实我不只是需要简单分组,还想引用交叉统计的临时表

 我看了狐狸爸爸的帮助中这样写


显示生成的表


以下所有的类型,都有一个Build方法

GroupTableBuilder
CrossTableBuilder
SQLGroupTableBuilder
SQLCrossTableBuilder
DataTableBuilder
SQLJoinTableBuilder

执行这些类型的Build方法,将生成一个临时表(包括DataTable和Table), 有的用于显示统计结果,有的用于显示查询结果,有的只是一个空白表。
在一些特殊的场合,可能只想在代码中使用这个临时表,而并不希望显示它。

Build方法有一个可选的逻辑参数,如果设置为True,将只生成一个DataTable,这个Datatable只能在代码中使用,而且代码运行结束后,会自动销毁。
由于没有生成Table,所以这个临时表并不会在界面中。

示例

Dim b As New GroupTableBuilder("统计表1",DataTables("订单"))
Dim 
t As DataTable
Dim 
s As Double
b
.Groups.AddDef("产品")
b.Totals.AddDef(
"数量")
t = b.Build(
True\'生成一个DataTable
For Each r As DataRow In t.DataRows
    Select
 Case r("产品"
)
        Case
 "PD01",
"PD02"
            s = s + r(
"数量")
        Case
 
Else
            s = s + r(
"数量") / 100
    
End Select
Next

Output.Show(s)

上述代码执行结束后,所生成的DataTable将自动销毁。


--  作者:蓝色理想
--  发布时间:2014/7/3 16:15:00
--  
是不是可以用SQL语句    Select * from t