水晶报表问题汇总(水晶报表的使用与查询条件生成报表、注册码、打印问题、模式使用示例、C#.Net的WinForm中的使用、程序发布与部署)

Report Database 专栏收录该内容
13 篇文章 0 订阅

                                             水晶报表的使用

查询条件动态生成报表、注册码、打印问题、模式使用示例、C#.Net的WinForm以及Asp.Net中的使用、程序发布与部署
  1、水晶报表注册码  
  在使用Vs.net自带的水晶报表时,请注册,否则只能使用30次,水晶报表注册码如下:  
  注册号:6707437608  
  密码:AAP5GKS0000GDE100DS  
  2、Asp.Net中使用水晶报表  
  我们采用下面的几步使用Push模式执行水晶报表:  
  1)设计一个DataSet  
  右击“解决方案浏览器”,选择“添加”--“添加新项”-->“数据集”,从“服务器资源管理器”中的“SQL   Server”中拖放“Stores”表(位于PUBS数据库中)。再将此表拖入数据集中。而   .xsd文件中仅仅包含一个结构图,但是不会有任何数据在里面。  
  2)创建一个.rpt文件同时将其指定给上一步建立的DataSet。  
  使用上面的介绍过的方法创建此文件,唯一的不同就是使用数据集来代替前面的直接连接数据。建立.rpt文件之后,右击“详细资料”-->“添加/删除数据库”,在”数据库专家“窗口中,展开”项目数据“(代替以前的OleDb),展开“ADO.Net数据集”--“DataSet1”,选择“Stores”表。将“Stores”表添加到“选定的表”中,点击“OK”。  
  3)在aspx页面中拖放一个CrystalReportViewer控件同时将其与前面的rpt文件建立联系。  
  使用PULL模式下的方法,建立一个WebForm,添加一个Crystal   Report   Viewer   控件,并设定其属性,此处与PULL模式下是一致的。代码如下:  
  private   MyReport   oCR;//MyReport为MyReport.aspx.csk中的类名  
  private   void   Page_Load(object   sender,   System.EventArgs   e)  
  {  
  DataSet1   ds   =   new   DataSet1();  
  oCR   =   new   MyReport();  
  SqlConnection   MyConn   =   new   SqlConnection(ConfigurationSettings.AppSettings["SqlConn"]);  
  MyConn.Open();  
   
  //直接访问数据表  
  //string   strSel   =   "select   *   from   tbtree";  
  //SqlDataAdapter   MyAdapter   =   new   SqlDataAdapter(strSel,MyConn);  
  //MyAdapter.Fill(ds,"tbtree");  
   
  //使用存储过程  
  SqlCommand   cmd   =   new   SqlCommand("display",   MyConn);  
  cmd.CommandType   =   CommandType.StoredProcedure;  
  SqlDataAdapter   MyAdapter   =   new   SqlDataAdapter(cmd);  
  MyAdapter.Fill(ds,"tbtree");  
   
  oCR.SetDataSource(ds);  
  this.CrystalReportViewer1.ReportSource   =   oCR;  
  this.CrystalReportViewer1.DataBind();  
  }  
  注意:在上面的代码中,你得注意一下oRpt是"Strongly   Typed"的报表文件。如果你需要使用"UnTyped"报表,你得使用ReportDocument对象,然后再调用报表文件。  
  4)在代码中访问数据库并把数据存入DataSet  
  5)将报表文件导出成为其它格式  
  你能够将报表文件导出成为下列格式:  
  (1)   PDF   (Portable   Document   Format)    
  (2)   DOC   (MS   Word   Document)    
  (3)   XLS   (MS   Excel   Spreadsheet)    
  (4)   HTML   (Hyper   Text   Markup   Language   –   3.2   or   4.0   compliant)    
  (5)   RTF   (Rich   Text   Format)    
  使用Pull模式导出报表,当导出使用Pull模式创建的文件时,水晶报表准确地打开所需要的数据,首先在HTML中加入一个<DIV>元素和控件  
  <DIV   id="div_opt"   style="Z-INDEX:   102;   LEFT:   320px;   WIDTH:   360px;   POSITION:   absolute;   TOP:   24px;   HEIGHT:   32px"   ms_positioning="FlowLayout">  
  <asp:linkbutton   id="lbtn_IEPrint"   runat="server">IE打印预览</asp:linkbutton>&nbsp;格式转换  
  <asp:dropdownlist   id="ddl_FileFormat"   runat="server">  
  <asp:ListItem   Value="pdf">Pdf</asp:ListItem>  
  <asp:ListItem   Value="doc">Word</asp:ListItem>  
  </asp:dropdownlist>  
  <asp:button   id="btn_Change"   runat="server"   Text="转换"></asp:button>  
  </DIV>  
  下面是执行导出功能的代码:  
  private   void   lbtn_IEPrint_Click(object   sender,   System.EventArgs   e)  
  {  
  if(lbtn_IEPrint.Text   ==   "IE打印预览")  
  {  
  CrystalReportViewer1.SeparatePages   =   false;  
  CrystalReportViewer1.DisplayToolbar   =   false;  
  lbtn_IEPrint.Text   =   "取消IE打印预览";  
  }  
  else  
  {  
  CrystalReportViewer1.SeparatePages   =   true;  
  CrystalReportViewer1.DisplayToolbar   =   true;  
  lbtn_IEPrint.Text   =   "IE打印预览";  
  }  
  }  
  private   void   btn_Change_Click(object   sender,   System.EventArgs   e)  
  {  
  string   filetype   =   "";  
  filetype   =   ddl_FileFormat.SelectedValue;  
  string   contenttype   =   "";    
   
  string   myfilename   =   Request.MapPath(".//")+Session.SessionID+"."+filetype;  
  CrystalDecisions.Shared.DiskFileDestinationOptions   mydiskoptions   =   new   CrystalDecisions.Shared.DiskFileDestinationOptions();  
  mydiskoptions.DiskFileName   =   myfilename;  
  CrystalDecisions.Shared.ExportOptions   myExportOptions   =   oCR.ExportOptions;  
  myExportOptions.DestinationOptions   =   mydiskoptions;  
  myExportOptions.ExportDestinationType   =   CrystalDecisions.Shared.ExportDestinationType.DiskFile;  
   
  switch(ddl_FileFormat.SelectedItem.Value)  
  {  
  case   "pdf":  
  contenttype   =   "application/pdf";  
  myExportOptions.ExportFormatType   =   CrystalDecisions.Shared.ExportFormatType.PortableDocFormat;  
  break;  
  case   "doc":  
  contenttype   =   "application/msword";  
  myExportOptions.ExportFormatType   =   CrystalDecisions.Shared.ExportFormatType.WordForWindows;  
  break;  
  }  
   
  oCR.Export();  
   
  Response.ClearContent();  
  Response.ClearHeaders();  
  Response.ContentType   =   contenttype;  
  Response.WriteFile(myfilename);  
  Response.Flush();  
  Response.Close();  
   
  System.IO.File.Delete(myfilename);  
  }
2、C#.Net的WinForm中使用水晶报表  
  1)在使用自带的水晶报表时,请注册,否则只能使用30次  
  2)使用CrystalReportViewer进行预览  
  CrystalReportViewer控件允许在应用程序中查看   Crystal   Report。ReportSource   属性用于设置要查看哪个报表。该属性设置之后,报表显示在查看器中。报表源可以是ReportDocument、报表文件的路径,也可以是强类型报表。  
  (1)打开“工具箱”,并将一个   CrystalReportViewer   拖到窗体上,我们命名为rptVew。    
  (2)通过拖放操作将   Windows   窗体查看器调整到希望的大小并将其移动到所需位置。    
  (3)当运行应用程序时,报表将显示在查看器中。  
  3)创建新报表  
  (1)指向“添加”,单击“添加新项”。    
  (2)在“添加新项”对话框中,从“模板”区域选择   Crystal   Report,将报表命名为rptClient,单击“打开”。    
  (3)在   Crystal   Report   库中,选择下列选项之一:    
  A.使用报表专家   ->   指导您完成报表的创建过程,并将您的选择添加到   Crystal   Report   Designer。    
  B.作为空白报表   ->   打开   Crystal   Report   Designer。    
  C.来自于现有的报表   ->   创建新报表,它与指定的另一报表设计相同。    
  注意   Crystal   Report   库包含许多专家,可以指导您完成数个特定类型报表的创建工作。您可能希望使用专家来创建最初的报表,以确定哪种报表构造方法适合您的需要。  
  (4)单击“确定”按钮。    
  如果选择使用“报表专家”,便会出现“报表专家”对话框,并带有数据资源管理器。为每个文件夹选择所需数据,完成“报表专家”选项卡界面上的操作,然后单击“完成”来访问   Crystal   Report   Designer   和您的报表。  
  (5)是否需要动态设置数据源?  
  Crystal   Reports   通过数据库驱动程序与数据库连接。每个驱动程序都被编写为可处理特定数据库类型或数据库访问技术。拉和推模型,为了向开发人员提供最灵活的数据访问方法,Crystal   Reports   数据库驱动程序被设计为可同时提供数据访问的拉模型和推模型。    
  拉模型pull:在拉模型中,驱动程序将连接到数据库并根据需要将数据“拉”进来。使用这种模型时,与数据库的连接和为了获取数据而执行的   SQL   命令都同时由   Crystal   Reports   本身处理,不需要开发人员编写代码。如果在运行时无须编写任何特殊代码,则使用拉模型。  
  推模型push:相反,推模型需要开发人员编写代码以连接到数据库,执行   SQL   命令以创建与报表中的字段匹配的记录集或数据集,并且将该对象传递给报表。该方法使您可以将连接共享置入应用程序中,并在   Crystal   Reports   收到数据之前先将数据筛选出来。    
  4)从   ADO.NET   数据集制作报表  
  从数据库创建数据集对象  
  (1)在项目中新建一个架构文件:    
  在解决方案资源管理器中,右击项目名,指向“添加”,然后单击“添加新项”。在“添加新项”对话框的“类别”区域,展开文件夹,然后选择“数据”。   在“模板”区域选择“数据集”。   接受默认名称   Dataset1.xsd。   这就创建了一个新的架构文件   (Dataset1.xsd),以后将用它来生成强类型数据集。该架构文件将显示在   ADO.NET   数据集设计器中。    
  (2)指定数据库位置:    
  在服务器资源管理器中,右击“数据连接”并选择“添加连接”。在“数据链接属性”对话框中,单击“提供程序”选项卡,然后选择一个提供程序(例如   Microsoft   OLE   DB   Provider   for   SQL   Server)。   单击“连接”选项卡,然后指定您的数据库所在位置。在所需位置输入服务器和登录信息。   单击“确定”按钮。   此时,您的数据库及其表和字段就出现在服务器资源管理器的“数据连接”节点下面。    
  (3)在解决方案资源管理器中,双击   Dataset1.xsd   (如果它尚不是活动视图)。   Dataset1.xsd   现在应显示在“数据集”选项卡中。    
  (4)若要为数据集建立架构,请将需要的表从服务器资源管理器中拖动到   Dataset1.xsd   的“数据集”选项卡上。    
  (5)单击“保存   Dataset1.xsd”来保存“Dataset1.xsd”文件。    
  (6)在“生成”菜单上,单击“生成”为项目生成数据集对象。    
  ADO.NET   数据集对象提供数据的描述,从它可以向   Crystal   report   添加表。使用   Crystal   Report   Designer   中的“数据库专家”从   ADO.NET   数据集对象添加表。   请在使用“报表专家”创建新报表时调用“数据库专家”。或者,要从一个已经使用   ADO.NET   建立好的报表中访问“数据库专家”,请在   Report   Designer   中右击,指向“数据库”,然后单击“添加/删除数据库”。将报表连接到   ADO.NET   数据集对象    
  (1)在“数据库专家”中,展开“项目数据”文件夹。    
  (2)展开“ADO.NET   数据集”文件夹。    
  (3)选择所需数据集对象。    
  例如,如果当时使用的是从项目“WindowsApplication1”的架构文件“Dataset1.xsd”中生成的数据集对象,则应该选择“WindowsApplication1.Dataset1”。   选择要向报表中添加的表,和使用其他数据源一样。    
   
  5)动态改变数据源的代码  
  DataSet   dsdataSet   =   new   DataSet();  
  rptClient()   oRpt   =   new   rptClient();   //已建立的报表rptClient  
  OleDbDataAdapter   da=new   OleDbDataAdapter("select   *   from   TableName",conn);  
  da.Fill(dsdataSet,"TableName");  
  //使用“报表引擎”对象模型将填充的数据集,传递给报表  
  oRpt.SetDataSource(dsdataSet.Tables(0));  
  //将带有数据的报表对象绑定到   Windows   窗体查看器,rptVew(CrystalReportViewer控件)  
  rptVew.ReportSource   =   oRpt;  
  注意   FillDataSet   方法可连接到指定的数据库,提取数据,然后断开数据库连接。如果您希望将数据库中的多个表添加到报表中,请使用   SQL   JOIN   语句将这些表联接在一起;然后在   FillDataSet   方法中指定一个结果表。  
   
  6)创建主从报表  
  在报表中,有许多报表是主从表结构,比如订单与订单商品明细,订单是一个表中的一条记录,而分录是另一个表中的多条记录,两个表通过一个字段关联起来,这种报表可利用其分组功能实现。  
  (1)新建一个工程  
  (2)往FORM1中添加一个CrystalReportViewer控件  
  (3)在服务噐资源管理器中连接到SQL   SERVER   2000上的Northwind数据库  
  (4)添加一个数据集Dataset1,将服务器资源管理器中的Orders和   Order   Details加入到数据集中。  
  (5)添加一个水晶报表,使用报表专家,在项目数据中选择“ADO.NET数据集”,插入表Orders和   Order   Details,“链接”中是关联字段的链接,在“字段”中选择要显示的主表和明细表的字段,组中选择分组依据为Orders表OrdersID字段,总计,图表,选择(可进行筛选),样式(可设置报表标题),可自行设置。设置完后,点击完成。  
  (6)在报表设计器中调整需要显示的字段的位置、宽度等。  
  (7)在窗口中添加代码。  
  public   PrintForm()  
  {  
  InitializeComponent();  
   
  OleDbConnection   conn=new   OleDbConnection("data   source=PMSERVER;initial   catalog=Northwind;user   id=sa;password=sa");  
  Dataset1()   ds   =   new   Dataset1();  
   
  OleDbDataAdapter   da1=new   OleDbDataAdapter("select   *   from   orders",conn);  
  da1.Fill(ds,"orders");  
   
  OleDbDataAdapter   da2=new   OleDbDataAdapter("select   *   from   [Order   Details]",conn);  
  da2.Fill(ds,"Order   Details");  
   
  CrystalReport1   oCR=new   CrystalReport1();  
  oCR.SetDataSource(ds);  
  this.crystalReportViewer1.ReportSource   =   oCR;  
  }  
  (8)运行程序  
   
  3、水晶报表登陆失败  
  using   CrystalDecisions.Shared;  
  //声明所需变量。  
  TableLogOnInfo   logOnInfo   =   new   TableLogOnInfo();  
  //对报表中的每个表依次循环。  
  for   (int   i=0;i   <   Report.Database.Tables.Count-1;i++)  
  {  
  //设置当前表的连接信息。  
  logOnInfo.ConnectionInfo.ServerName   =   serverNameTxt.Text;  
  logOnInfo.ConnectionInfo.DatabaseName   =   dbNameTxt.Text;  
  logOnInfo.ConnectionInfo.UserID   =   userNameTxt.Text;  
  logOnInfo.ConnectionInfo.Password   =   passwordTxt.Text;  
  Report.Database.Tables   [i].ApplyLogOnInfo   (logOnInfo);  
  }  
  注意   受密码保护的   Microsoft   Access   和   Paradox   等   PC   数据库也使用该方法,但   LogOnInfo.ServerName为数据文件的路径,   LogOnInfo.DatabaseName   要保留为空。TableLogOnInfo   是属于CrystalDecisions.Shared   命名空间的成员。要添加引用:using   CrystalDecisions.Shared;。  
   
  4、水晶报表应用程序的发布  
  1)安装部署  
  安装部署时,把水晶报表的msm打进去,注册到服务器,要部署使用   Crystal   Reports   for   Visual   Studio   .NET   2003   的程序,首先,找到以下7个文件(你可以   'C:/Program   Files/Common   Files/Merge   Modules'   文件夹下找到):  
  Crystal_Database_Access2003.msm    
  Crystal_Database_Access2003_chs.msm    
  Crystal_Managed2003.msm  
  Crystal_Managed2003_chs.msm  
  Crystal_regwiz2003.msm    
  VC_User_CRT71_RTL_X86_---.msm    
  VC_User_STL71_RTL_X86_---.msm  
  接着,在解决方案资源管理器中,右击安装项目,指向“添加”,然后单击“合并模块”。在“添加模块”对话框中,选择上面的7个要添加到安装项目的合并模块,然后单击“打开”。  
  还有,打开解决方案-->右键点击   Crystal_regwiz2003.msm   的属性,在“MergeMouduleProperties”里的“License   Key”填入:AAP5GKS0000GDE100DS(这个是你生成Crystal   Report是用到的注册号的密码!)
2)部署水晶报表时的常见问题及解决方案  
  (1)载入报表时报错  
  问题出在报表发布上。发布使用水晶报表的项目需要包含三种组件:报表(*.rpt)、模块(*.msm)、运行库(*.msm),这些模块文件是在   C:/Program   Files/Common   Files/Merge   Modules/   目录里面。  
  A.报表(*.rpt):用户编程时创建的水晶报表文件。  
  B.模块(*.msm):  
  Managed.msm   该模块包含了CR   for   VS   .NET   的管理模块,如   CrystalDecisions、CrystalReports.Engine.DLL、CrystalDecisions.Web.DLL,   和   CrystalDecisions.Windows.Forms.DLL……  
  Managed_chs.msm   是该模块的中文版语言支持。  
  Database_Access.msm   该模块包含了数据库的驱动、与不同数据库的联结、报表导出为   RTF   和   HTML   格式的文档和图表组件。    
  Database_Access_chs.msm   是此模块的中文版语言支持。  
  Regwiz.msm   注册信息模块,非常重要,必需在这个模块输入水晶报表的注册序列号,如果不填,编译的时候就无法通过  
  C:运行库(*.msm):  
  如果报表文件使用了   ADO.NET   的   dataset   数据集对象,那么   VC_CRT.msm   和   VC_STL.msm   模块也必须包含在安装工程中。而且这两个模块的文件安装属性的/Module   Retargetable   Folder/项必须修改成为系统目录。在VS.NET安装工程中,系统检测出来的依赖项只有   dotNETFXRedist_x86_chs.msm   和   Managed.msm这两个模块,其他的模块我们需要手动加入。  
   
  (2)部署到   Windows   98   /   ME   时,出错:/Load   Report   Failed/    
  这是因为查询引擎   DLL(CRQE.dll)在客户计算机上没有正确注册。要解决这个问题,可以在客户计算机上手动注册   CRQE.dll,使用下面的命令:  
  regsvr32   /C:/program   files/common   files/Crystal   Decisions/1.0/bin/CRQE.dll/  
  如果   CRQE.dll   没有成功注册,并且问题继续存在,在客户计算机上检查   ATL.dll   的版本。ATL.dll   for   Windows   98/ME   正确的版本是   3.0.8449。通过使用下面三种方法中的任意一种方法,可以找到并注册正确版本的   ATL.dll。  
  A.在客户计算机上装   IE6.0。  
  B.在客户计算机上,手动复制和注册   ATL.dll,然后运行用于   Crystal   Reports   分发的安装包。  
  C.将   ATL.msm   合并模块添加到安装工程,ATL.msm   是   Visual   Studio   installer   1.1   的一部分,可以去微软的网站http://msdn.microsoft.com/vstudio/downloads/tools/vsi11/download.aspx下载,   添加办法同上。  
   
  (3)在Win98的客户端运行提示/该字段名未知/  
  报表在Win2000的客户端一切正常,在Win98的客户端运行提示/该字段名未知/?是因为报表使用到的   sql   server   数据库中的字段名为中文的缘故,将其字段名改名为英文字段名。  
   
  (4)分发到客户机时“查询引擎出错”  
  “安装项目”要包含下列合并模块:VC_CRT.msm   ,VC_STL.msm   ;此外,确保   Msvcr70.dll   和   Msvcp70.dll   在客户计算机的“系统目录”里。  
   
  (5)load   crpe32.dll   failed  
  下面是cr9net_deployment.pdf说明中的部署Crystal   Report   9的步骤:  
  打开   Windows   应用程序。   在解决方案资源管理器中,右击   Windows   应用程序解决方案,指向“添加”,然后单击“新建项目”。在“添加新项目”对话框中,选择“项目类型”窗格中的“安装和部署项目”,然后选择“模板”窗格中的“安装项目”。单击“确定”按钮。    
  在解决方案资源管理中,右击安装项目,指向“添加”,然后单击“项目输出”。   在“添加项目输出组”中,选择“主输出”,然后单击“确定”。   将自动添加所有依赖项,如   dotnetfxredist_x86_enu.msm和dotnetcrystalreports.msm。需要将dotnetcrystalreports.msm排除在项目之外,在解决方案资源管理器中右击这个模块的右键,选择“排除”。   在解决方案资源管理器中,右击安装项目,指向“添加”,然后单击“合并模块”。   在“添加模块”对话框中,选择下列要添加到安装项目的合并模块,然后单击“打开”:    
  reportengine.msm,   crnetruntime.msm,   license.msm  
  mapping.msm   (可选,当在报表中使用了geographic   maps时)    
  VC_CRT.msm、VC_STL.msm(   如果您部署的   Windows   应用程序使用   ADO.NET   数据集,则还需要包括   VC_CRT   和   VC_STL   合并模块)  
  在解决方案资源管理器中,右击   license.msm   文件,然后选择“属性”。   在“属性”窗口中,展开   MergeModuleProperties,然后在“许可证密钥”属性框中输入一个有效的许可证密钥。   注意   每当部署   Crystal   Reports   应用程序时,必须提供许可证密钥。从“生成”菜单中,选择“生成解决方案”以生成应用程序。  
   
  (6)在   ASP.NET   程序中加载报表时,出错:/Load   Report   Failed/    
  确保   ASPNET   本地用户对报表所在的文件夹有“完全控制”的权限。  
   
  (7)部署   .NET   9.1   程序到   Windows   98   时,出错:/Load   Report   Failed/    
  是因为查询引擎   DLL(CRQE.dll)在客户计算机上没有正确注册。要解决这个问题,从开发计算机复制   Dbghelp.dll   到客户计算机的/C:Windows/system32/   文件夹。  
  在线支持:http://www.kpower.nease.net/main.html  
   
   
   
   
   
   
   
   
   
   
   
   
   
  可以通过单独用代码绑定子报表来解决这个问题。  
   
  string   sConnectionString   =   ConfigurationSettings.AppSettings["dbCommISMS"];  
   
  SqlConnection   sqlConn   =   new   SqlConnection(sConnectionString);  
  SqlCommand   sqlComm   =   new   SqlCommand();  
  SqlDataAdapter   dataAdapter   =   new   SqlDataAdapter();  
   
  sqlConn.Open();  
   
  sqlComm.Connection   =   sqlConn;  
  sqlComm.CommandType   =   CommandType.Text;  
   
  dataAdapter.SelectCommand   =   sqlComm;  
   
  Dataset1   dataSet   =   new   Dataset1();  
   
  string   sSQL   =   "SELECT   *   FROM   T_REQUEST   WHERE   APPLI_ID   =   ‘"   +   appli_id   +   "‘";  
   
  sqlComm.CommandText   =   sSQL;  
  dataAdapter.Fill(dataSet,   "T_REQUEST");  
   
  sSQL   =   "SELECT   *   FROM   T_REQUEST_INSPECTION   WHERE   APPLI_ID   =   ‘"   +   appli_id   +   "‘";  
   
  sqlComm.CommandText   =   sSQL;  
  dataAdapter.Fill(dataSet,   "T_REQUEST_INSPECTION");  
   
  sSQL   =   "SELECT   *   FROM   T_ACCEPT_INSPECTION   WHERE   APPLI_ID   =   ‘"   +   appli_id   +   "‘";  
   
  sqlComm.CommandText   =   sSQL;  
  dataAdapter.Fill(dataSet,   "T_ACCEPT_INSPECTION");  
   
  SubreportObject   oSubreport1   =   oRpt.ReportFooterSection1.ReportObjects["Subreport1"]   as   SubreportObject;  
  ReportDocument   oSub1   =   oSubreport1.OpenSubreport("Inspection");  
   
  oSub1.SetDataSource(dataSet);  
   
  SubreportObject   oSubreport2   =   oRpt.ReportFooterSection2.ReportObjects["Subreport2"]   as   SubreportObject;  
  ReportDocument   oSub2   =   oSubreport1.OpenSubreport("Survey");  
   
  oSub2.SetDataSource(dataSet);  
   
  SubreportObject   oSubreport3   =   oRpt.ReportFooterSection2.ReportObjects["Subreport3"]   as   SubreportObject;  
  ReportDocument   oSub3   =   oSubreport1.OpenSubreport("Allonge");  
   
  oSub3.SetDataSource(dataSet);  
   
  oRpt.SetDataSource(dataSet);  
   
  oViewer.ReportSource   =   oRpt;  
   
  oRpt   有三个字报表,dataSet   有三个表。  

  • 1
    点赞
  • 4
    评论
  • 1
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

评论 4 您还未登录,请先 登录 后发表或查看评论
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页

打赏作者

lfywy

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值