以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]SQLGroupTableBuilder不知道哪里出的问题?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=33110)

--  作者:jiskin
--  发布时间:2013/5/14 9:34:00
--  [求助]SQLGroupTableBuilder不知道哪里出的问题?

Dim g As New SQLGroupTableBuilder("分组统计表","库存总表")
        g.C
Dim Cols1() As String = {"品名","规格","材质","零件号"}
Dim Cols2() As String = {"品名","规格","材质","零件号"}
Dim Cols3() As String = {"品名","规格","材质","零件号"}
g.AddTable("库存总表",Cols1,"入库表",Cols2,"出库表",Cols3)
        \'Dim y As Integer = e.Form.Controls("ComboBox1").text \'指定年份
        \'Dim m As Integer = e.Form.Controls("ComboBox2").text \'指定月份
        \'Dim dt1 As New Date(y, m, 1)
        \'Dim dt2 As New Date(y, m, Date.DaysInMonth(y,m)) \'获取该月的最后一天
        g.Groups.AddDef("库存类别")
        g.Groups.AddDef("品名")
        g.Groups.AddDef("规格")
        g.Groups.AddDef("材质")
        g.Groups.AddDef("零件号")
        g.Groups.AddDef("国标")
        g.Groups.AddDef("炉号")
        g.Groups.AddDef("等级")
        g.Groups.AddDef("品牌")
        g.Groups.AddDef("储位")
        g.Totals.AddDef("入库数量")
        g.Totals.AddDef("出库数量")
        g.Totals.AddExp("库存数量","入库数量 - 出库数量")
        \'g.Filter = "入库日期 >= #" & dt1 & "# And 入库日期 <= #" & dt2 & "#"
        \'g.Filter = "出库日期 >= #" & dt1 & "# And 出库日期 <= #" & dt2 & "#"
        g.Filter = "入库日期 >= # 2013,5,1 # And 入库日期 <= # 2013,5,31 #"
        g.Filter = "出库日期 >= # 2013,5,1 # And 出库日期 <= # 2013,5,31 #"
        g.Build()

 

 


图片点击可在新窗口打开查看此主题相关图片如下:qq截图20130514093146.png
图片点击可在新窗口打开查看

没弄明白哪里有问题,数据库里的表名也是对的呀~

[此贴子已经被作者于2013-5-14 10:03:15编辑过]

--  作者:Bin
--  发布时间:2013/5/14 9:36:00
--  
你怎么可以这么传,你传的是字符串数组啊,亲!  



g.AddTable("库存总表",Cols1(0),"入库表",Cols1(1),"出库表",Cols1(2))

这是不能那样传数组的 只能单个字符串




--  作者:jiskin
--  发布时间:2013/5/14 9:52:00
--  
以下是引用Bin在2013-5-14 9:36:00的发言:
你怎么可以这么传,你传的是字符串数组啊,亲!  



g.AddTable("库存总表",Cols1(0),"入库表",Cols1(1),"出库表",Cols1(2))

这是不能那样传数组的 只能单个字符串



 

如果要根据多列关联,请参考:

 

Dim b As New SQLGroupTableBuilder("统计表1","产品")
Dim 
Cols1() As String = {"型号","规格"}
Dim 
Cols2() As String = {"型号","规格"}
b.AddTable(
"产品",Cols1,"订单"
,Cols2)

 

帮助文档就是这么写的啊~亲~~

之前我用SQLJoinTableBuilder 写的时候 也是这么写的呀 难道错了?

 

 

 

 

g.AddTable("库存总表",Cols1,"入库表",Cols2)
g.AddTable("库存总表",Cols1,"出库表",Cols3)

 

刚改成这样了 貌似可行,但是又有新错误了

 

生成的SQL语句错误 无法继续统计

 


此主题相关图片如下:qq截图20130514100200.png
按此在新窗口浏览图片

我只是想统计5月份的入出库……

[此贴子已经被作者于2013-5-14 10:02:57编辑过]

--  作者:狐狸爸爸
--  发布时间:2013/5/14 10:08:00
--  
做简单例子发上来
--  作者:Bin
--  发布时间:2013/5/14 10:12:00
--  
确实是可以的,做个例子发出来看看.
--  作者:jiskin
--  发布时间:2013/5/14 10:21:00
--  
以下是引用狐狸爸爸在2013-5-14 10:08:00的发言:
做简单例子发上来

 

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:test2.zip


--  作者:Bin
--  发布时间:2013/5/14 11:14:00
--  
是因为同名列的原因, http://www.foxtable.com/help/index.html?n=1626.htm  最下面 "同名列处理"


[此贴子已经被作者于2013-5-14 11:32:25编辑过]

--  作者:jiskin
--  发布时间:2013/5/14 12:04:00
--  
以下是引用Bin在2013-5-14 11:14:00的发言:
是因为同名列的原因, http://www.foxtable.com/help/index.html?n=1626.htm  最下面 "同名列处理"


[此贴子已经被作者于2013-5-14 11:32:25编辑过]

 

Dim g As New SQLGroupTableBuilder("分组统计表","库存总表")
g.C
Dim Cols1() As String = {"品名","规格","材质","零件号"}
Dim Cols2() As String = {"品名","规格","材质","零件号"}
Dim Cols3() As String = {"品名","规格","材质","零件号"}
g.AddTable("库存总表",Cols1,"入库表",Cols2)
g.AddTable("库存总表",Cols1,"出库表",Cols3)
\'Dim y As Integer = e.Form.Controls("ComboBox1").text \'指定年份
\'Dim m As Integer = e.Form.Controls("ComboBox2").text \'指定月份
\'Dim dt1 As New Date(y, m, 1)
\'Dim dt2 As New Date(y, m, Date.DaysInMonth(y,m)) \'获取该月的最后一天
g.Groups.AddDef("库存类别")
g.Groups.AddDef("{库存总表}.品名")
g.Groups.AddDef("{库存总表}.规格")
g.Groups.AddDef("{库存总表}.材质")
g.Groups.AddDef("{库存总表}.零件号")
g.Groups.AddDef("{库存总表}.国标")
g.Groups.AddDef("{库存总表}.炉号")
g.Groups.AddDef("{库存总表}.等级")
g.Groups.AddDef("{库存总表}.品牌")
g.Groups.AddDef("{库存总表}.储位")
g.Totals.AddDef("入库数量")
g.Totals.AddDef("出库数量")
g.Totals.AddExp("库存数量","入库数量 - 出库数量")
\'g.Filter = "入库日期 >= #" & dt1 & "# And 入库日期 <= #" & dt2 & "#"
\'g.Filter = "出库日期 >= #" & dt1 & "# And 出库日期 <= #" & dt2 & "#"
g.Filter = "入库日期 >= # 2013,5,1 # And 入库日期 <= # 2013,5,31 #"
g.Filter = "出库日期 >= # 2013,5,1 # And 出库日期 <= # 2013,5,31 #"
g.Build()

 

不知道为何 我运行这个代码生成的表的内容 闪了一下 就变成空表了~~

还要继续请教Bin!


--  作者:Bin
--  发布时间:2013/5/14 12:07:00
--  
你检查一下筛选条件,统计条件吧.

最大可能性的原因就是
Dim Cols1() As String = {"品名","规格","材质","零件号"}
Dim Cols2() As String = {"品名","规格","材质","零件号"}
Dim Cols3() As String = {"品名","规格","材质","零件号"}
g.AddTable("库存总表",Cols1,"入库表",Cols2)
g.AddTable("库存总表",Cols1,"出库表",Cols3)
这里
和下面筛选条件导致的问题.

--  作者:Bin
--  发布时间:2013/5/14 12:09:00
--  
g.AddTable("库存总表",Cols1,"入库表",Cols2)
g.AddTable("库存总表",Cols1,"出库表",Cols3) 
很明显就是这里的问题. 改为

g.AddTable("库存总表","品名","入库表","品名")
g.AddTable("库存总表","品名","出库表","品名")
就好了.
或者任意正确的关联列.

否则他找不到关联列,因为不存在都相等的列.
[此贴子已经被作者于2013-5-14 12:10:06编辑过]