以文本方式查看主题

-  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=29710)

--  作者:chenpan
--  发布时间:2013/3/12 11:35:00
--  [求助]组合两个统计表时出问题

我在组合两个统计报表时出现如下问题,请大侠给点帮助,谢谢!!

 

If s > ""  And  s1 > ""   Then
   
    Dim d1 As Date =Forms("月报表2").Controls("DateTimePicker1").value
    Dim d2 As Date =Forms("月报表2").Controls("DateTimePicker2").value
    Dim sql0 As String = "Select  * FROM {日常废品录入} where {日常废品录入}.录入时间 between \'"  & d1  & "\' and \'" & d2 & "\' and {日常废品录入}.生产线f in (" & s & ") and substring({日常废品录入}.材质规格f,1,2) in (" & s1 & ") and {日常废品录入}.发生工序 <> \'成工退废\' and {日常废品录入}.发生工序 <> \'长征退废\' "
   
    Dim b As New CrossTableBuilder("统计表1",sql0, "yun")
    b.HGroups.AddDef("货品编号")
    b.VGroups.AddDef("废品原因","内废原因_{0}")
    b.Totals.AddDef("废品数量")
    b.HorizontalTotal = True
    b.VerticalTotal = True
    b.Filter = "[废品原因]<> \'回用\'"
    Dim dt As fxDataSource
    b.FromServer = True
    dt=b.BuildDataSource()
    MessageBox.Show("1")
    Dim sql2 As String = "Select  * FROM {日常废品录入} where {日常废品录入}.录入时间 between \'"  & d1  & "\' and \'" & d2 & "\' and {日常废品录入}.生产线f in (" & s & ") and substring({日常废品录入}.材质规格f,1,2) in (" & s1 & ") and {日常废品录入}.发生工序 = \'成工退废\' or {日常废品录入}.发生工序 = \'长征退废\' "
    Dim e11 As New CrossTableBuilder("统计表5",sql2, "yun")
    e11.HGroups.AddDef("货品编号")
    e11.VGroups.AddDef("废品原因","外废原因_{0}")
    e11.Totals.AddDef("废品数量")
    e11.HorizontalTotal = True
    e11.VerticalTotal = True
    e11.Filter = "[废品原因] <> \'回用\'"
    Dim dt3 As fxDataSource
    e11.FromServer = True
    dt3=e11.BuildDataSource()
    MessageBox.Show("2")
  dt2.Combine("货品编号",dt3,"货品编号")


图片点击可在新窗口打开查看此主题相关图片如下:未命名.jpg
图片点击可在新窗口打开查看

--  作者:chenpan
--  发布时间:2013/3/12 11:36:00
--  

提示说是,列名重复,但是,我没有废品数量的列啊!


--  作者:狐狸爸爸
--  发布时间:2013/3/12 11:38:00
--  

你有两个:

 

   b.Totals.AddDef("废品数量")

 

其中一个改为:

 

   b.Totals.AddDef("废品数量2")

 

或其他名称


--  作者:chenpan
--  发布时间:2013/3/12 11:41:00
--  
我这是都同一个表按不同条件做的两个不同的统计,统计的都是废品数量一列
--  作者:狐狸爸爸
--  发布时间:2013/3/12 11:48:00
--  

可以改名:

 

 b.Totals.AddDef("废品数量","废品数量_A")

 

 

 b.Totals.AddDef("废品数量","废品数量_B")


--  作者:chenpan
--  发布时间:2013/3/12 11:51:00
--  
以下是引用狐狸爸爸在2013-3-12 11:48:00的发言:

可以改名:

 

 b.Totals.AddDef("废品数量","废品数量_A")

 

 

 b.Totals.AddDef("废品数量","废品数量_B")

已经如你所说,进行修改,依然出错

更改如下

e11.Totals.AddDef("废品数量","外废合计")

b.Totals.AddDef("废品数量","内废合计")

以下是帮助文件的说明,这样改只能改标题,没有改列名啊

添加统计列到Totals集合中的语法是: 

Totals.AddDef(Name)
Totals.AddDef(Name, Caption)
Totals.AddDef(Name, Aggregate)
Totals.AddDef(Name, Aggregate,Caption)

参数说明

Name:      字符型,指定统计列
Caption:  字符型,指定统计列的标题
Aggregate: AggregateEnum枚举型,用于指定统计类型,默认是求和。

 

[此贴子已经被作者于2013-3-12 11:52:03编辑过]

--  作者:chenpan
--  发布时间:2013/3/12 12:09:00
--  

并不是所有时候都出现,只在某些时候出现!


图片点击可在新窗口打开查看此主题相关图片如下:未命名1.jpg
图片点击可在新窗口打开查看

--  作者:狐狸爸爸
--  发布时间:2013/3/12 14:10:00
--  

换统计工具,用这个:

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

 

用表达式的形式加入例如:

 

VGroups.AddExp(Name, Expression)

 

例如:

 

b.Totals.AddDef("废品数量_A","废品数量")


--  作者:chenpan
--  发布时间:2013/3/12 14:30:00
--  
以下是引用狐狸爸爸在2013-3-12 14:10:00的发言:

换统计工具,用这个:

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

 

用表达式的形式加入例如:

 

VGroups.AddExp(Name, Expression)

 

例如:

 

b.Totals.AddDef("废品数量_A","废品数量")

我已经试过,不行的,合并后只见第一个表,第二个不显示

 

 


--  作者:狐狸爸爸
--  发布时间:2013/3/12 14:37:00
--  

这样就基本不用改代码:

Dim sql0 As String = "Select  *, 废品数量As 废品数量1 FROM {日常废品录入} where {日常废品录入}.录入时间 between \'"  & d1  & "\' and \'" & d2 & "\' and {日常废品录入}.生产线f in (" & s & ") and substring({日常废品录入}.材质规格f,1,2) in (" & s1 & ") and {日常废品录入}.发生工序 <> \'成工退废\' and {日常废品录入}.发生工序 <> \'长征退废\' "
   
    Dim b As New CrossTableBuilder("统计表1",sql0, "yun")
    b.HGroups.AddDef("货品编号")
    b.VGroups.AddDef("废品原因","内废原因_{0}")
    b.Totals.AddDef("废品数量1")
    b.HorizontalTotal = True
    b.VerticalTotal = True
    b.Filter = "[废品原因]<> \'回用\'"
    Dim dt As fxDataSource
    b.FromServer = True
    dt=b.BuildDataSource()

 

另一个改为2或其他名称