BO-NET资料.doc_第1页
BO-NET资料.doc_第2页
BO-NET资料.doc_第3页
BO-NET资料.doc_第4页
BO-NET资料.doc_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Crystal?Reports?for?Visual?Studio?2005使用 ReportDocument.FileName 属性绑定到托管 RAS注意?本页描述了在 Crystal Reports for Visual Studio 中未提供但在升级版本中提供的功能。若需更多有关 Crystal Reports for Visual Studio 的信息,请参阅什么是 Crystal Reports for Visual Studio? 有关升级版本的更多信息,请参阅升级选项.对象模型此报表绑定方案使用 ReportClientDocument(请参见通过 ReportClientDocument 对象模型进行报表绑定 (RAS))。报表的位置少数几个报表可被复制并存在于两个位置的方案之一,这两个位置分别是:Visual Studio 2005 项目中的嵌入式报表和 Crystal Reports Server 或 BusinessObjects Enterprise (BOE) 中的 Report Application Server (RAS) 公开的 Crystal Reports Server 或 BusinessObjects Enterprise 储备库。注意?因为报表最终从远程服务器显示,所以此报表绑定方案也可以成功用于非嵌入式报表(实现方式见绑定到已加载到 ReportDocument 中的非嵌入式报表类)。说明在 Crystal Reports for Visual Studio 2005 中,原来使用嵌入式报表和 ReportDocument 对象模型创建的 NET 项目现在可以轻松地被移植到托管 RAS 服务器中。在此方案中,通过使用发布向导在 Crystal Reports Server 或 BusinessObjects Enterprise 中放置一个报表副本,在运行时将嵌入式报表绑定到 Crystal Reports Server 或 BusinessObjects Enterprise 中的托管 RAS 服务器(请参见托管 RAS)。嵌入式报表的现有代码继续工作,但您通过执行以下操作,将该报表的源重定向到托管 RAS 服务器: 为项目添加 Crystal Reports Server 或 BusinessObjects Enterprise 登录功能并检索 EnterpriseSession 示例。 从 Crystal Reports Server 或 BusinessObjects Enterprise 中检索重复报表的 CUID 属性。 将 ReportDocument 的 EnterpriseSession 属性设置为 EnterpriseSession 实例。 将 ReportDocument 的 FileName 属性设置为嵌入式报表的 CUID 字符串。 有关代码示例,请参见下面的“实现”一节。此方案演示了在 Crystal Reports 开发人员版中,可以将使用 ReportDocument 对象模型的嵌入式或非嵌入式报表直接绑定到 RAS 服务器,该服务器使用 ReportClientDocument 对象模型。如何实现呢?在 Crystal Reports 10 中,ReportDocument 对象模型已被重写为可访问 ReportClientDocument 对象模型的代理层。有关更多信息,请参见结构中的 ReportClientDocument 对象模型。注意?FileName 属性引用托管 RAS 服务器中的报表。托管 RAS 服务器上的报表总是被显示,即使该报表与嵌入式报表不同版本或不同名。可以通过 ReportDocument.ReportClientDocument 属性直接访问基础 ReportClientDocument 对象模型,从而允许您在运行时修改使用 ReportClientDocument 对象模型的报表。优点 方便的可移植性:维护与使用 ReportDocument 对象模型的报表进行交互的所有原始代码,同时仍可以通过 ReportDocument.ReportClientDocument 属性完全访问基础 ReportClientDocument 对象模型。 注意?ReportClientDocument 对象模型允许您以编程的方式创建、修改报表定义文件并保存对报表定义文件的更改。有关更多信息,请参见结构中的 ReportClientDocument 对象模型。 优化的性能:由于 Report Application Server (RAS) 中报表引擎的优异性能使性能显著提高。请参见在所有 Crystal 解决方案间比较结构。 缺点 少量额外编码工作:项目必须登录并检索 EnterpriseSession 对象,然后将其存储在 ASP.NET Session 中。每次将报表绑定到使用 ReportDocument 的 CrystalReportViewer 控件时,都必须检索 CUID 并在 ReportDocument 的 FileName 属性中设置它。 增长的维护要求:在 Crystal Reports Server 或 BusinessObjects Enterprise 中创建嵌入式报表的副本将增加维护要求。如果需要对报表进行修改或将其删除,则必须将这些更改传播到 Visual Studio 2005 项目中的嵌入式报表和 Crystal Reports Server 或 BusinessObjects Enterprise 中的报表副本。 实现前提条件: 已安装 Crystal Reports Server 或 BusinessObjects Enterprise 并已验证其可以正常工作。 已安装 Crystal Reports Server 或 BusinessObjects Enterprise SDK(包括 .NET 程序集)并已验证其能正常工作。 注意?如果已在部署计算机上安装了 Crystal Reports Server 或 BusinessObjects Enterprise,SDK 将包含在该安装中。使用报表的 CUID 和 ReportDocument 的 FileName 属性显示在 Crystal Reports Server 或 BusinessObjects Enterprise 中存储的嵌入式报表的重复副本注意?此过程仅适用于已通过项目设置创建的项目。“项目设置”包含此过程需要的特定命名空间引用和代码配置,而没有该配置,您将无法完成此过程。因此,在开始此过程之前,您必须首先执行项目设置中的步骤。1. 确定并记录 Crystal Reports Server 或 BusinessObjects Enterprise 服务器的名称。为此示例,服务器名称为“BOE01”。 a. 若要查找服务器名称,请右击“我的电脑”图标,然后选择“属性”。 b. 在“系统属性”对话框上,单击“网络标识”选项卡。 c. 计算机名称就在“完整的计算机名称”字段中。 2. 使用发布向导将 Hierarchical Grouping.rpt 发布到 Crystal Reports Server 或 BusinessObjects Enterprise 服务器。 注意?若需了解如何使用发布向导,请参阅 Crystal Reports Server or BusinessObjects Enterprise 用户文档.有关示例报表的信息,请参见示例报表的目录。3. 在 ConfigureCrystalReports() 方法(您在项目设置中创建的)中,您具有以下报表绑定代码: Visual Basic Dim hierarchicalGroupingReport As Hierarchical_Grouping = New Hierarchical_Grouping()myCrystalReportViewer.ReportSource = hierarchicalGroupingReportC# Hierarchical_Grouping hierarchicalGroupingReport = new Hierarchical_Grouping();crystalReportViewer.ReportSource = hierarchicalGroupingReport;在这两行代码之间,您必须添加几行新代码(请参见步骤 3 到步骤 14),这几行新代码在将报表绑定到 CrystalReportViewer 控件之前执行以下操作: 由网络登录到 Crystal Reports Server 或 BusinessObjects Enterprise 服务器。 检索标识 Crystal Reports Server 或 BusinessObjects Enterprise 中存储的报表的 CUID。 通过其 CUID 调用该报表。 4. 将以下程序集引用添加到项目中: CrystalDecisions.Enterprise.Framework CrystalDecisions.Enterprise.InfoStore 5. 在代码隐藏页的顶部,为 CrystalDecisions.Enterprise 命名空间添加 Imports Visual Basic 或 using C# 语句。 Visual Basic Imports CrystalDecisions.EnterpriseC# using CrystalDecisions.Enterprise;现在,即可添加将嵌入式报表重定向到 Crystal Reports Server 或 BusinessObjects Enterprise 的代码。 6. 在实例化 hierarchicalGroupingReport 的那行代码之后,声明 serverName 字符串并将其设置为 Crystal Reports Server 或 BusinessObjects Enterprise 服务器的名称。 Visual Basic Dim serverName As String = BOE01C# string serverName = BOE01;7. 声明并实例化 SessionMgr 类。 Visual Basic Dim mySessionMgr As SessionMgr = New SessionMgr()C# SessionMgr sessionMgr = new SessionMgr();8. 将用户名 (Administrator)、密码(空白)、serverName 变量和登录类型 (secEnterprise) 传递给该 SessionMgr 实例的 Logon 方法,并用它检索 EnterpriseSession 的一个实例。 Visual Basic Dim myEnterpriseSession As EnterpriseSession = mySessionMgr.Logon( _Administrator, , serverName, secEnterprise)C# EnterpriseSession enterpriseSession = sessionMgr.Logon( Administrator, , serverName, secEnterprise);9. 从 EnterpriseSession 的 GetService 方法中检索 InfoStore 服务(作为 EnterpriseService)。 Visual Basic Dim myEnterpriseService As EnterpriseService = _myEnterpriseSession.GetService(InfoStore)C# EnterpriseService enterpriseService = enterpriseSession.GetService(InfoStore);10. 用检索的 InfoStore 服务声明并实例化 InfoStore。 Visual Basic Dim myInfoStore As InfoStore = New InfoStore(myEnterpriseService)C# InfoStore infoStore = new InfoStore(enterpriseService);现在,即可从 Crystal Reports Server 或 BusinessObjects Enterprise 检索 Hierarchical Grouping 报表的 CUID。 11. 输入下列查询字符串以向 Crystal Reports Server 或 BusinessObjects Enterprise 查询报表的 CUID。 Visual Basic Dim queryString As String = Select SI_CUID From CI_INFOOBJECTS _ & Where SI_PROGID=CrystalEnterprise.Report _ & And SI_NAME Like Hierarchical GroupingC# string queryString = Select SI_CUID From CI_INFOOBJECTS + Where SI_PROGID=CrystalEnterprise.Report + And SI_NAME Like Hierarchical Grouping;12. 通过将查询字符串传递到 InfoStore 的 Query 方法检索包含查询结果的 InfoObjects 索引类。 Visual Basic Dim myInfoObjects As InfoObjects = myInfoStore.Query(queryString)C# InfoObjects infoObjects = infoStore.Query(queryString);13. 从该 InfoObjects 索引类的第一列中检索 InfoObject。 注意?InfoObjects 索引类的索引从 1 开始,而不是从 0 开始。Visual Basic Dim myInfoObject As InfoObject = myInfoObjects(1)C# InfoObject infoObject = infoObjects1;现在已准备就绪,可以由 Crystal Reports Server 或 BusinessObjects Enterprise 加载嵌入式报表的副本。 14. 从 InfoObject 的 SI_CUID 属性将报表的 CUID 字符串检索到 reportCUID 字符串变量中。 Visual Basic Dim reportCUID As String = myInfoObject.CUIDC# string reportCUID = infoObject.CUID;15. 将嵌入式报表的 EnterpriseSession 属性设置为 EnterpriseSession 实例。 Visual Basic hierarchicalGroupingReport.EnterpriseSession = myEnterpriseSessionC# hierarchicalGroupingReport.EnterpriseSession = enterpriseSession;16. 将嵌入式报表的 FileName 属性设置为 reportCUID 变量,以 cecuid:/ 协议为前缀。 注意?使用三斜杠,而不是双斜杠。这表示主机名为空。Visual Basic hierarchicalGroupingReport.FileName = cecuid:/ & reportCUIDC# hierarchicalGroupingReport.FileName = cecuid:/ + reportCUID;现在,报表绑定代码在此行代码之后。 17. 若要查看该报表,请生成并运行您的项目。 现在,将从 Crystal Reports Server 或 BusinessObjects Enterprise 加载报表,并通过托管 RAS 服务器提供。 由 ReportDocument 对象模式中访问 ReportClientDocument 对象模式,请参阅使用 ReportDocument.Load() 方法绑定到非托管 RAS 服务器.Crystal?Reports?for?Visual?Studio?2005绑定到强制转换为 Report 的 InfoObject注意?本页描述了在 Crystal Reports for Visual Studio 中未提供但在升级版本中提供的功能。若需更多有关 Crystal Reports for Visual Studio 的信息,请参阅什么是 Crystal Reports for Visual Studio? 有关升级版本的更多信息,请参阅升级选项.对象模型此报表绑定方案使用 InfoObject(请参见通过 CrystalReportViewer 对象模型进行报表绑定 (BOE))。报表的位置存储在 Crystal Reports Server 或 BusinessObjects Enterprise 中的某个服务器上。说明InfoObject 对象模型随 Crystal Reports Server or BusinessObjects Enterprise 一同提供。它将系统中的所有 Enterprise 项(报表、用户、组、服务器、服务器组、文件夹)作为可以编程方式与之交互的信息对象对待。对象模型中的所有信息对象都由具有相同名称的相应类表示。这些类是从 InfoObject 继承的。若要使用此对象模型绑定报表,可以从 Crystal Reports Server 或 BusinessObjects Enterprise 中检索一个将包装为 InfoObject 实例的报表。若要绑定到此 InfoObject 实例,请将 CrystalReportViewer 控件的 ReportSource 属性分配到 InfoObject 实例。有关代码示例,请参见下面的“实现”一节。优点 可用于调度报表在特定时间运行,并使用特定的参数以输出到 FTP、SMTP、磁盘或打印机目标。 缺点 作为显示报表的方法使用时,不像使用 RAS 服务器或页面服务器时速度那么快。 如果要在运行时以编程方式修改报表,则必须使用通过 ReportClientDocument 对象模型进行报表绑定 (RAS) 中的绑定方案之一与 RAS 服务器进行交互。 如果要最大限度地提高速度并且只需显示报表,最好使用绑定到 ReportSource (BusinessObjects Enterprise 11) 中的报表绑定方案来访问用于报表绑定的页面服务器。 实现前提条件: Crystal Reports Server 或 BusinessObjects Enterprise SDK(包括 .NET 程序集)必须安装在您用于开发的计算机上。 注意?若已在部署机器上安装 Crystal Reports Server 或 BusinessObjects Enterprise,SDK 包含在该安装中。 确定并记录 Crystal Reports Server 或 BusinessObjects Enterprise 服务器的名称。对于此示例,服务器名称为 “BOE01”。 绑定到包装为 InfoObject 并强制转换为 Report 的报表注意?此过程仅适用于已通过项目设置创建的项目。“项目设置”包含此过程需要的特定命名空间引用和代码配置,而没有该配置,您将无法完成此过程。因此,在开始此过程之前,您必须首先执行项目设置中的步骤。1. 使用发布向导将 Chart.rpt 发布到 Crystal Reports Server 或 BusinessObjects Enterprise 服务器。 注意?若需了解如何使用发布向导,请参阅 Crystal Reports Server or BusinessObjects Enterprise 用户文档.有关示例报表的信息,请参见示例报表的目录。2. 将以下程序集引用添加到项目中: CrystalDecisions.Enterprise.Framework CrystalDecisions.Enterprise.InfoStore CrystalDecisions.Enterprise.Desktop.Report 3. 在代码隐藏页的顶部,为 CrystalDecisions.Enterprise 命名空间和 CrystalDecisions.Enterprise.Desktop 命名空间添加一条 Imports Visual Basic 或 using C# 语句。 Visual Basic Imports CrystalDecisions.EnterpriseImports CrystalDecisions.Enterprise.DesktopC# using CrystalDecisions.Enterprise;using CrystalDecisions.Enterprise.Desktop;现在,即可添加用于绑定到包含 Crystal Reports Server 或 BusinessObjects Enterprise 中某一报表的 InfoObject 实例的代码。 4. 在 ConfigureCrystalReports() 方法中,该方法是您在项目安装中创建的,申明 serverName 字符串并将其设定为 Crystal Reports Server 或 BusinessObjects Enterprise 服务器的名称。 Visual Basic Dim serverName As String = BOE01C# string serverName = BOE01;5. 声明并实例化 SessionMgr 类。 Visual Basic Dim mySessionMgr As SessionMgr = New SessionMgr()C# SessionMgr sessionMgr = new SessionMgr();6. 将用户名 (Administrator)、密码(空白)、serverName 变量和登录类型 (secEnterprise) 传递给该 SessionMgr 实例的 Logon 方法,并用它检索 EnterpriseSession 的一个实例。 Visual Basic Dim myEnterpriseSession As EnterpriseSession = mySessionMgr.Logon( _Administrator, , serverName, secEnterprise)C# EnterpriseSession enterpriseSession = sessionMgr.Logon( Administrator, , serverName, secEnterprise);7. 从 EnterpriseSession 的 GetService 方法中检索 InfoStore 服务(作为 EnterpriseService)。 Visual Basic Dim myEnterpriseService As EnterpriseService = _myEnterpriseSession.GetService(InfoStore)C# EnterpriseService enterpriseService = enterpriseSession.GetService(InfoStore);8. 通过使用检索的 InfoStore 服务声明并实例化 InfoStore。 Visual Basic Dim myInfoStore As InfoStore = New InfoStore(myEnterpriseService)C# InfoStore infoStore = new InfoStore(enterpriseService);9. 输入下列查询字符串以向 Crystal Reports Server 或 BusinessObjects Enterprise 查询报表。 Visual Basic Dim queryString As String = Select SI_ID, SI_NAME, SI_PARENTID From CI_INFOOBJECTS _& Where SI_PROGID=CrystalEnterprise.Report _& And SI_NAME Like ChartC# string queryString = Select SI_ID, SI_NAME, SI_PARENTID From CI_INFOOBJECTS + Where SI_PROGID=CrystalEnterprise.Report + And SI_NAME Like Chart;10. 通过将查询字符串传递到 InfoStore 的 Query 方法检索包含查询结果的 InfoObjects 索引类。 Visual Basic Dim myInfoObjects As InfoObjects = myInfoStore.Query(queryString)C# InfoObjects infoObjects = infoStore.Query(queryString);11. 从该 InfoObjects 索引类的第一列中检索 InfoObject。 注意?InfoObjects 索引类的索引从 1 开始,而不是从 0 开始。Visual Basic Dim myInfoObject As InfoObject = myInfoObjects(1)C# InfoObject infoObject = infoObjects1;12. 声明 Report 实例并将 InfoObject 强制转换为 Report。 Visual Basic Dim myReport As Report = CType(myInfoObject, Report)C# Report report = (Report)infoObject;13. 将 CrystalReportViewer 控件的 EnterpriseLogon 属性设置为 EnterpriseSession 实例。 Visual Basic myCrystalReportViewer.EnterpriseLogon = myEnterpriseSessionC# crystalReportViewer.EnterpriseLogon = enterpriseSession;14. 将 Report 实例绑定到 CrystalReportViewer 控件。 Visual Basic myCrystalReportViewer.ReportSource = myReportC# crystalReportViewer.ReportSource = report;关于BusinessObjects系统单点登录(SSO)解决办法(一) BusinessObjects支持单点登录(Single sign on 简称SSO)功能,但那是指的是使用Windows活动目录认证的一种方法。与目前我们常用的使用超链接进行的单点登录(登录在别系统中,使用别系统的当前用户来认证BusinessObjects进行登录)属于不同类型的单点登录类型。为此,我们只能另求他法。经过研究,下面两种方法满足我们目前的要求:a) 方法一使用openDocument方法。BusinessObjects在其网页目录: .BusinessObjects Enterprise 11.5Web ContentEnterprise115InfoViewscripts下面有一个网页openDocument.aspx,利用这个页面,我们可以从其他的网站链接到该页面打开一个报表,这种方法不仅可以直接打开一个报表,而且支持传递Token登录信息来进行单点登录。Token的产生。利用下面的代码我们可以生成一个Token:usingCrystalDecisions.Enterprise;privatestringGetToken(stringSystem,stringUserName,stringPassword)CrystalDecisions.Enterprise.Identityidentity=newCrystalDecisions.Enterprise.Identity();boolSuccess=false;Success=identity.Logon(UserName,Password,System,Enterprise);/或者使用WindowsNT认证方式/Success=identity.Logon(UserName,Password,System,WindowsNT);if(Success)returnidentity.GetToken();elsereturnnull;openDocument的Url格式:http:/:/businessobjects/enterprise115/InfoView/scripts/opendocument.aspx在上面的Url后面,可以传递openDocument的各种参数。openDocument的参数列表(本列表忽略了一些不常用的参数,仅仅列出了常用的参数):参数名称说 明是否强制值token包含用户Session认证的token文本否Token文本示例:openDocument.aspx?iDocID=342&token=(在此使用GetToken得到的文本)iDocID文档的ID是,但可以用sDocName来代替文档ID(InfoObjectID)sIDTypeCMS对象类型是。如果是默认对象(InfoObjectID)可以不用. CUID . GUID . RUID . InfoObjectID (默认)示例: openDocument.aspx?iDocID=342 openDocument.aspx?iDocID=AWimiw9StnhGm993evk.Amc&sIDType=CUIDsType目标是文档还是报表文件类型是。但对于未知的文件类型忽略(xls, doc, txt,等).wid .rpt .car .rep示例:openDocument.aspx?iDocID=342& sType=wid openDocument.aspx?iDocID=343& sType=rptsPath包含目标文档的目录和子目录本参数是与sDocName一起使用的否目录和子目录表示方法:folder,subfoldersDocName不带有扩展名的文档名称这个参数与sPath一起使用否myDocument示例:openDocument.aspx?sPath=reports&sDocName=Charting&sType=rpt openDocument.aspx?sPath=reports,finance&sDocName=Summary&sType=rptsReportName在一个文档中包含多个报表的时候决定那一个报表打开(默认的时候处于激活的报表优先打开)否文档中的子报表名字示例:openDocument.aspx?iDocID=342&sType=wid&sReportName=Report2sReportPart指定报表中的哪一块被打开报表中经常包含饼图和表格数据两种部分,每一块都有自己的名字,用这个参数可以指定打开的是哪块的内容否被打开的报表块名称sPartContext水晶报表中,报表的某一部分重视关联着数据范围是,如果使用了sReportPart指定报表的块报表块的数据范围sReportMode仅用于水晶报表。指定链接打开的是全部的报表还是sReportPart部分块否。默认是Full。仅仅在sReportPart指定为部分块的时候使用. Full . Part示例:在全球销售报表中,报表柱图块的名字叫做“Text2;Graph1” 并且默认的数据范围是 “/”(全部数据)openDocument.aspx?sType=rpt&sDocName=World+Sales+Report&sReportPart=Text2;Graph1&sPartContext=/如果仅仅显示英格兰这个国家的数据:openDocument.aspx?sType=rpt&sDocName=World+Sales+Report&sReportPart=Text2;Graph1&sPartContext=/CountryEngland&sReportMode=Part注意,在上面的Url 中,用加号(+)来表示报表中一个空格占位符sRefresh指定在打开报表是时候是否强制刷新报表的数据否. Y(刷新报表数据). N(不刷新数据)示例:openDocument.aspx?iDocID=342&sType=wid&sRefresh=YlsSNAME给报表的一个单值参数赋值NAME指参数变量的名称否一个单值参数的值示例:openDocument.aspx?iDocID=342&sType=wid&sRefresh=Y&lsSProductName=Cycle下列的示例给多个单值参数赋值并注意各种值的赋值形式:openDocument.aspx?sType=rpt&iDocID=858&sRefresh=Y& lsSparamString=h&lsSparamNumber=1& lsSparamCurrency=121&lsSparamDate=Date(2003,6,11)& lsSparamDateTime=DateTime(2003,6,11,14,38,37)&lsSparamBoolean=false& lsSparamTime=Time(12,39,2)&lsSparamStringDR=a&lsSparamDateDR=Date(2003,6,1)lsMNAME给报表的一个多值参数赋值NAME指

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论