水晶报表,如何用代码实现添加子报表?请注意标题,是用代码添加,用代码添加

dtor 2008-11-28 05:40:53
水晶报表,用代码实现添加子报表?请注意看清楚,是用代码添加,用代码添加
请大牛出来!
...全文
208 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
dtor 2008-12-01
  • 打赏
  • 举报
回复
... 虽然问题还没解决,再开吧:)
阿泰 2008-12-01
  • 打赏
  • 举报
回复
顶一下,兄弟请把这个帖子结了吧
阿泰 2008-11-29
  • 打赏
  • 举报
回复
动态添加子报表还有RAS的WebForm实现
WEBForm的实现也有两种方式,对本地报表和BOE平台内报表的操作。

关于RAS我在这里做过一些说明
http://www.cnblogs.com/babyt/archive/2008/05/17/1201418.html
也可参考MSDN
http://msdn.microsoft.com/zh-cn/library/ms225325(VS.80).aspx
阿泰 2008-11-29
  • 打赏
  • 举报
回复
差点忘记了,呵呵。赶紧补一下。
本代码使用RAS的WinForm实现,所以前提是你的环境那个中安装了Crystatl Reports Server 或 BOE,其有RAS许可

代码很简单,新建立一个水晶报表WinForm工程(VB.Net),默认会增加一个报表CrystalReport1.rpt,再增加一个forSub1.rpt
因本代码只演示子报表的动态添加,所以两个报表里都只放了些文本,均未链接数据库

Imports CrystalDecisions.Shared
Imports CrystalDecisions.Windows.Forms
Imports CrystalDecisions.CrystalReports.Engine
Imports CrystalDecisions.ReportAppServer.ClientDoc
Imports CrystalDecisions.ReportAppServer.Controllers



Public Class Form1

Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

Dim boReportDocument As ReportDocument
Dim boReportClientDocument As ISCDReportClientDocument
Dim boSubreportClientDocument As CrystalDecisions.ReportAppServer.Controllers.SubreportClientDocument
Dim boArea As CrystalDecisions.ReportAppServer.ReportDefModel.Area
Dim boSection As CrystalDecisions.ReportAppServer.ReportDefModel.Section
Dim strSubRptFile As String

boReportDocument = New ReportDocument()
'加载主报表
boReportDocument.Load("E:\CRQuestions\AddSubReportRunTime\Crystalreport1.rpt")

'----------------------------------------
'如果要进行数据、参数、公式操作,请在此处对主报表boReportDocument进行操作
'----------------------------------------

boReportClientDocument = New ReportClientDocumentClass()
'由主报表返回待RAS操作的ReportClientDocument
boReportClientDocument = boReportDocument.ReportClientDocument


'设置待处理的报表区域(此处使用了报表页眉)
boArea = boReportClientDocument.ReportDefController.ReportDefinition.ReportHeaderArea

'创建一个新的section,用来放置子报表
boSection = New CrystalDecisions.ReportAppServer.ReportDefModel.Section

'设置新节的名称
boSection.Kind = CrystalDecisions.ReportAppServer.ReportDefModel.CrAreaSectionKindEnum.crAreaSectionKindReportHeader
boSection.Name = "ReportHeaderForSub1"
'设置节对象宽度。注意1cm=567缇,可自行调整,此处为20cm
boSection.Width = 567 * 20

'待加载的子报表
strSubRptFile = "E:\CRQuestions\AddSubReportRunTime\forSub1.rpt"

'将section加到ReportClientDocument
boReportClientDocument.ReportDefController.ReportSectionController.Add(boSection, boArea, -1)

'导入子报表,ss1是子报表对象在主报表上的名称
boSubreportClientDocument = boReportClientDocument.SubreportController.ImportSubreport("ss1", strSubRptFile, boSection)

'----------------------------------------
'如果要进行数据、参数、公式操作,请在此处对子报表boSubreportClientDocument 进行操作
'----------------------------------------


'刷新Viewer
CrystalReportViewer1.ReportSource = boReportDocument
End Sub
End Class



mjjzg 2008-11-29
  • 打赏
  • 举报
回复
或者去MSDN上看看,也是有解释和代码的
mjjzg 2008-11-29
  • 打赏
  • 举报
回复
看看这个帖子
http://topic.csdn.net/t/20031130/21/2511917.html
hm7921936 2008-11-29
  • 打赏
  • 举报
回复
up楼上
阿泰 2008-11-28
  • 打赏
  • 举报
回复
呵呵,你是那个“大魔王”吗?

等我明天写写吧

4,818

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 图表区
社区管理员
  • 图表区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧