以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  求助:能否利用查询表和数据表进行组合?  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=69041)

--  作者:狐来江湖
--  发布时间:2015/5/29 12:03:00
--  求助:能否利用查询表和数据表进行组合?
我先利用grouptablebuild生成一个查询表,能再用soljointablebuild与另外一个数据表组合,生成我想要的另一个查询表吗?
--  作者:大红袍
--  发布时间:2015/5/29 13:04:00
--  

 不能直接用。

 

 你需要直接写sql语句了。 基础知识 http://www.foxtable.com/help/topics/0688.htm

 


--  作者:狐来江湖
--  发布时间:2015/5/29 13:31:00
--  
可是我需要用到的库存数量,是由4个表的数据计算得来的,也就是属于表达式列,在后台是不存在的,而编写SQL代码又相当复杂。怎么办呢?
--  作者:Bin
--  发布时间:2015/5/29 13:35:00
--  
一个个套进去就好了.写不出来,可以上例子.
--  作者:大红袍
--  发布时间:2015/5/29 14:28:00
--  
以下是引用狐来江湖在2015/5/29 13:31:00的发言:
可是我需要用到的库存数量,是由4个表的数据计算得来的,也就是属于表达式列,在后台是不存在的,而编写SQL代码又相当复杂。怎么办呢?

 

可以这样,做一个和 grouptablebuild 结构一致的表格。

 

生成表后,把数据填充到那个表里面去,保存数据,然后再用 soljointablebuild


--  作者:狐来江湖
--  发布时间:2015/5/29 14:41:00
--  

嗯,谢谢大红袍老师。

我刚才写了如下的代码:

Dim jb As New SQLJoinTableBuilder("统计表","kcmx")
Dim Cols1() As String = {"hh","ph"}
Dim Cols2() As String = {"hh","ph"}
Dim Cols3() As String = {"hh","ph"}
jb.AddTable("kcmx",Cols1,"xsdmx",Cols1)
jb.AddTable("kcmx",Cols1,"rkdmx",Cols2)
jb.AddTable("kcmx",Cols1,"qtck",Cols3)
jb.AddTable("kcmx","hh","sp","hh")
jb.AddCols("{kcmx}.hh","{kcmx}.pm","{kcmx}.sccj","{kcmx}.gg","{kcmx}.dw","{kcmx}.ph","{kcmx}.yxqz","qckc","rq","dflsx","splb","yxqx","clccsx1","xsglsx2")
jb.AddExp("销售数量", "Sum(xssl)")
jb.AddExp("入库数量",  "Sum(rksl)")
jb.AddExp("其他", "Sum(cksx)")
jb.AddExp("库存数量", "IsNull(qckc,0) + Sum(rksl) - Sum(xssl) - Sum(cksx)")
\'jb.AddExp("库存数量", " IsNull("qckc",0) + IsNull(Sum("rksl"),0) - ISNULL(sum("xssl"),0) - ISNULL(sum("cksx"),0)" )
jb.Filter = "库存数量 > 0.01"
jb.build()
MainTable = Tables("统计表")

 

但是提示:

Microsoft Jet 数据库引擎找不到输入表或查询 \'~TMPCLPkcmx\'。 确定它是否存在,以及它的名称的拼写是否正确。

 

是什么原因呢?

 

上述代码中一条库存对应着好几条入库记录,也对应着好几条销售记录。


--  作者:大红袍
--  发布时间:2015/5/29 14:47:00
--  

 说明你这个表 kcmx 是临时表或者查询表,不能直接用。

 

 或者说 kcmx 这个表跟 xsdmx 等表不在同一个数据源


--  作者:狐来江湖
--  发布时间:2015/5/29 14:53:00
--  

那下面的两条代码哪一条是正确的呢?

 

好像系统提示都有问题的。

第一条代码提示什么个数不对

第二条提示最后的)应该还有后续语句。

待该就是这个意思。

 

jb.AddExp("库存数量", "IsNull(qckc,0) + Sum(rksl) - Sum(xssl) - Sum(cksx)")
\'jb.AddExp("库存数量", " IsNull("qckc",0) + IsNull(Sum("rksl"),0) - ISNULL(sum("xssl"),0) - ISNULL(sum("cksx"),0)" )


--  作者:狐来江湖
--  发布时间:2015/5/29 14:54:00
--  

第一条提示

用于函数参数的个数不对 在查询表达式 \'IsNull(qckc,0) + Sum(rksl) - Sum(xssl) - Sum(cksx)\' 中。


--  作者:大红袍
--  发布时间:2015/5/29 14:57:00
--  
AddExp 中,不能用聚合函数。