以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  合并后汇总的代码疑问  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=8988)

--  作者:唐尸三摆手
--  发布时间:2011/1/11 16:30:00
--  合并后汇总的代码疑问
合并后统计的代码如下,为何不是完全合并呢,请看图片的部门为什么有不完全合并的情况呢,第二列的0148就是部门代码?
图片点击可在新窗口打开查看此主题相关图片如下:screenshot.jpg
图片点击可在新窗口打开查看

\'以下为合并后统计结果显示代码
With Tables("sos")
    .MergeMode = MergeModeEnum.Standard
    .MergeCols.Clear()
    .MergeCols.Add("排产日期")
    .MergeCols.Add("部门")
    .MergeCols.Add("班组")
    .MergeCols.Add("订单编号")
    .MergeSort = "排产日期,部门,班组,订单编号"
    .AllowMerge = True
End With
Dim t As Table = Tables("sos")
Dim g As Subtotalgroup
t.SubtotalGroups.Clear()
t.GroupAboveData = False
t.TreeVisible = False
g = New Subtotalgroup
g.Aggregate = AggregateEnum.Sum
g.GroupOn = "排产日期"
g.DateGroup = DateGroupEnum.day
g.Caption = "{0}"
t.SubtotalGroups.Add(g)
t.Subtotal()
Dim r As Row
Dim r1 As Row
For i As Integer = 1 To t.Rows.Count(True) - 1
    r = t.Rows(i,True)
    r1 = t.Rows(i-1,True)
    If r.IsGroup \'如果是分组行
        Dim f As String = "排产日期 = #" & r1("排产日期") & "#"
        Dim x1 As String = "排产日期 = #" & r1("排产日期") & "# and 大类 = \'分类一\'"
        Dim x2 As String = "排产日期 = #" & r1("排产日期") & "# and 大类 = \'分类二\'"
        Dim x3 As String = "排产日期 = #" & r1("排产日期") & "# and 大类 = \'分类三\'"
        Dim x4 As String = "排产日期 = #" & r1("排产日期") & "# and 大类 = \'\'分类四"
        Dim x5 As String = "排产日期 = #" & r1("排产日期") & "# and 大类 = \'\'分类五"
        Dim x6 As String = "排产日期 = #" & r1("排产日期") & "# and 大类 = \'\'分类六"
        Dim v As String =  "销售金额:" & t.Compute("Sum(销售)",f)
        v = v & " /产值:" & t.Compute("Sum(产值)",f)
        v = v & "/分类一:" & t.Compute("Sum(约当量)",x1)
        v = v & "/分类二:" & t.Compute("Sum(约当量)",x2)
        v = v & "/分类三:" & t.Compute("Sum(约当量)",x3)
        v = v & "/分类四:" & t.Compute("Sum(约当量)",x4)
        v = v & "/分类无:" & t.Compute("Sum(约当量)",x5)
        v = v & "/分类六:" & t.Compute("Sum(约当量)",x6)
        r("排产日期") = format(r1("排产日期"),"yyyy年MM月dd日") & "排产信息提示:" & v
        Tables("sos").AutoSizeRow(i)
    End If
Next

[此贴子已经被作者于2011-1-11 16:35:05编辑过]

--  作者:czy
--  发布时间:2011/1/11 16:48:00
--  
原来合并的效果被g.GroupOn = "排产日期" 干掉了。
--  作者:唐尸三摆手
--  发布时间:2011/1/11 16:57:00
--  合并后汇总的代码疑问
如何更改
--  作者:czy
--  发布时间:2011/1/11 17:04:00
--  

没办法。

除非汇总分组等于合并列。


--  作者:唐尸三摆手
--  发布时间:2011/1/11 17:14:00
--  合并后汇总的代码疑问
老大有无方法达到要求
--  作者:blackzhu
--  发布时间:2011/1/12 7:32:00
--  
好像合并要先排序的吧,就是把0148的先排好序,才会将同样内容的合并.
--  作者:狐狸爸爸
--  发布时间:2011/1/12 8:31:00
--  
g.DateGroup = DateGroupEnum.day
 
改为:
 
g.DateGroup = DateGroupEnum.None
 
看看

--  作者:唐尸三摆手
--  发布时间:2011/1/12 13:46:00
--  合并后汇总的代码疑问
老大,这个问题跟这个是一个例子:
http://www.foxtable.com/dispbbs.asp?boardid=2&Id=8941&page=2

--  作者:唐尸三摆手
--  发布时间:2011/1/12 16:24:00
--  合并后汇总的代码疑问
高手们请不吝赐教
--  作者:狐狸爸爸
--  发布时间:2011/1/12 16:51:00
--  
With Tables("sop")
    .MergeMode = MergeModeEnum.Standard
    .MergeCols.Clear()
    .MergeCols.Add("排产日期")
    .MergeCols.Add("部门")
    .MergeCols.Add("班组")
    .MergeCols.Add("订单编号")
    .MergeSort = "排产日期,部门,班组,订单编号"
    .AllowMerge = True
End With
Dim t As Table = Tables("sop")
Dim g As Subtotalgroup
t.SubtotalGroups.Clear()
t.GroupAboveData = False
t.TreeVisible = False
g = New Subtotalgroup
g.Aggregate = AggregateEnum.Sum
g.GroupOn = "排产日期"
g.DateGroup = DateGroupEnum.day
g.Caption = "{0}"
t.SubtotalGroups.Add(g)
t.Subtotal(True)
messagebox.show(CurrentTable.sort)