以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  生成的SQL语句出错,无法继续统计  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=59860)

--  作者:tina2012
--  发布时间:2014/11/12 14:17:00
--  生成的SQL语句出错,无法继续统计

在命令窗口执行以下代码出错,调试也没有发现问题,怎么回事


Dim b As New SQLGroupTableBuilder("统计表1","Sales_Order_List")

b.ConnectionName = "CRM2014"

b.AddTable("Sales_Order_Product","OrderId","Sales_Order_List","Id")

b.AddTable("Sales_Order_Product","ProductId","Sales_Product_List","Id")

b.AddTable("Sales_Order_List","CustomerId","Customer_List","Id")

b.Groups.AddDef("{Sales_Product_List}.Name")

b.Groups.AddDef("{Customer_List}.Name")

b.Groups.AddDef("SubmitDate")

b.Groups.AddDef("SubmitUserName")

b.Totals.AddDef("已交数量")

b.Build   \'生成统计表

MainTable = Tables("统计表1")


错误提示“生成的SQL语句出错,无法继续统计



--  作者:有点甜
--  发布时间:2014/11/12 14:23:00
--  
 例子发上来测试。
--  作者:tina2012
--  发布时间:2014/11/12 14:46:00
--  
先帮着看一下吧  是基于公司数据库做的,稍后做例子
--  作者:有点甜
--  发布时间:2014/11/12 14:54:00
--  
 代码看不出问题
--  作者:狐狸爸爸
--  发布时间:2014/11/12 14:59:00
--  

“已交数量”是表达式列吗?
表达式列不能直接这样引用的,需要用Addexp,例如:


Dim b As New SQLGroupTableBuilder("统计表1","订单")
b.Totals.AddExp("金额","数量 * 单价 * (1-折扣)")


--  作者:tina2012
--  发布时间:2014/11/12 16:29:00
--  

不是表达式列,是不是我设置的不对,我是把生成的统计表直接生成到table控件上去。属性怎么设置

 


此主题相关图片如下:4.jpg
按此在新窗口浏览图片

--  作者:有点甜
--  发布时间:2014/11/12 16:31:00
--  

不是,这个问题。具体请给例子

 

 参考

 

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

 


--  作者:tina2012
--  发布时间:2014/11/12 17:53:00
--  
我测试了一下,最简单的代码,从两个表里提取数据进行统计,也是弹出同样的错误,公司的数据库是基于SQLserver2005的,是不是数据库里的表有什么特殊要求

Dim b As New SQLGroupTableBuilder("统计表2","Sales_Order_Product")            
b.AddTable("Sales_Order_Product","OrderId","Sales_Order_List","Id")         \'表Sales_Order_Product"和表"OrderId","Sales_Order_List"是关联的
b.Groups.AddDef("ProductId")              \'ProductId是表Sales_Order_Product中的列,SubmitDate是表Sales_Order_List中的列
b.Groups.AddDef("SubmitDate")           \'SubmitDate是表Sales_Order_List中的列
b.Totals.AddDef("Amount")                  \'Amount是表Sales_Order_Product中的列
b.Build                                               \'生成统计表
MainTable = Tables("统计表2")               \'打开生成的统计表


--  作者:有点甜
--  发布时间:2014/11/12 17:54:00
--  

 你设置数据源了吗?

 

 

SQLGroupTableBuilder包括以下属性:

 

ConnectionName:  指定数据源名称,如果省略,表示使用内部数据表。


--  作者:tina2012
--  发布时间:2014/11/13 11:15:00
--  
谢谢,调试好了,忘记设置数据源了,


但是还有个问题,只要我添加Sales_Product_List这个统计表,就会出错,错误提示生成的SQL语句出错,无法继续统计”中

b.AddTable("Sales_Order_Product","ProductId","Sales_Product_List","Id")

也就是如下代码:

Dim b As New SQLGroupTableBuilder("统计表2","Sales_Order_Product")       

b.ConnectionName = "CRM2014"   

b.AddTable("Sales_Order_Product","OrderId","Sales_Order_List","Id")   \'Sales_Order_Product"和表"OrderId","Sales_Order_List"是关联的

b.AddTable("Sales_Order_Product","ProductId","Sales_Product_List","Id")

b.Groups.AddDef("ProductId")            \'ProductId是表Sales_Order_Product中的列,SubmitDate是表Sales_Order_List中的列

b.Groups.AddDef("SubmitDate")           \'SubmitDate是表Sales_Order_List中的列

b.Totals.AddDef("Amount")                \'Amount是表Sales_Order_Product中的列

b.Build   \'生成统计表

MainTable = Tables("统计表2")  \'打开生成的统计表


添加其他表就可以,例如

b.AddTable("Sales_Order_List","CustomerId","Customer_List","Id")

就是添加Sales_Product_List这个不可以,确认了关联列也没错