以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  请教excel报表关联表的细节区定义  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=23717)

--  作者:wjl-se
--  发布时间:2012/9/17 20:20:00
--  请教excel报表关联表的细节区定义

A(父表)-B(子表),excel报表需要定义子表两个细节区,

 

<表A>

<表B>

<表B>

<表A>

 

这种形式是否正确?

 

 


图片点击可在新窗口打开查看此主题相关图片如下:snap009.jpg
图片点击可在新窗口打开查看
[此贴子已经被作者于2012-9-17 20:23:06编辑过]

--  作者:paullqxp
--  发布时间:2012/9/17 20:28:00
--  
第五行至第八行,一共四行 都属于表C的细节区
--  作者:wjl-se
--  发布时间:2012/9/18 10:50:00
--  

请老师给看看

 


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

 

难道是一个关联表只能有一个细节区?

 

 例子:

 

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

[此贴子已经被作者于2012-9-18 11:42:00编辑过]

--  作者:lin_hailun
--  发布时间:2012/9/18 11:24:00
--  
 楼主,你这种需求用模板是实现不了的。

 只能通过写代码完成。上传个例子帮你弄一下。

 参考这个 http://www.foxtable.com/help/topics/1955.htm

--  作者:wjl-se
--  发布时间:2012/9/18 11:43:00
--  
以下是引用lin_hailun在2012-9-18 11:24:00的发言:
 楼主,你这种需求用模板是实现不了的。

 只能通过写代码完成。上传个例子帮你弄一下。

 参考这个 http://www.foxtable.com/help/topics/1955.htm

啊,太好了,谢谢!我看看先!!

例子在3楼!

[此贴子已经被作者于2012-9-18 11:44:30编辑过]

--  作者:lin_hailun
--  发布时间:2012/9/18 12:09:00
--  
代码在报表事件里,修改了模板。注意看。

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



--  作者:wjl-se
--  发布时间:2012/9/18 12:50:00
--  

好的,谢谢 lin_hailun !  问题解决了。

[此贴子已经被作者于2012-9-18 13:07:04编辑过]

--  作者:wjl-se
--  发布时间:2012/9/18 16:07:00
--  
以下是引用lin_hailun在2012-9-18 12:09:00的发言:
代码在报表事件里,修改了模板。注意看。

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


 

不好意思,我又回来了,代码似乎有点问题,结果是错乱的.我改成下面这样,还是错乱的。不知何故。。。

 

Select Case e.Book.TempLate
    Case "经销商调查表"
        Dim drs As List(Of DataRow) = e.DataRow.GetChildRows("附属信息")
        Dim i As Integer = 1
        Dim max As Integer = drs.Count
        For Each dr As DataRow In drs
            If i > max OrElse i > 3 Then
                Exit For
            End If
            e.Book.Marks("授权品牌" & i) = dr("授权品牌")
            e.Book.Marks("改装厂" & i) = dr("改装厂")
            i = i + 1
        Next
End Select

 


--  作者:lin_hailun
--  发布时间:2012/9/18 23:15:00
--  
 呵呵,不好意思,代码是有欠考虑。

Select Case e.Book.TempLate
    Case "经销商调查表"
        Dim drs As List(Of DataRow) = e.DataRow.GetChildRows("附属信息")
        For i As Integer = 1 To 3
            If i <= drs.Count Then
                e.Book.Marks("授权品牌" & i) = drs(i-1)("授权品牌")
                e.Book.Marks("改装厂" & i) = drs(i-1)("改装厂")
            Else
                e.Book.Marks("授权品牌" & i) = ""
                e.Book.Marks("改装厂" & i) = ""
            End If
        Next
End Select
[此贴子已经被作者于2012-9-18 23:15:26编辑过]

--  作者:lin_hailun
--  发布时间:2012/9/18 23:15:00
--  
这次代码测试可以。

Select Case e.Book.TempLate
    Case "经销商调查表"
        Dim drs As List(Of DataRow) = e.DataRow.GetChildRows("附属信息")
        For i As Integer = 1 To 3
            If i <= drs.Count Then
                e.Book.Marks("授权品牌" & i) = drs(i-1)("授权品牌")
                e.Book.Marks("改装厂" & i) = drs(i-1)("改装厂")
            Else
                e.Book.Marks("授权品牌" & i) = ""
                e.Book.Marks("改装厂" & i) = ""
            End If
        Next
End Select