水晶报表编程及问题总结

1.怎么让组页眉,在同一组中每一页都显示
    
插入组的时候,在公用选项页面选中在每个页面上重复组页眉” 

   

2.如何向 CrystalReportViewer ReportDocument 传递参数…… 
    
一、CrystalReportViewer
            
通过 CrystalReportViewer.ParameterFieldInfo 属性
……
            1
crystalreportviewer 成员

                  
公共实例属性
                  ParameterFieldInfo
(从 CrystalReportViewerbase 继承) ParameterFields。获取或设置参数字段集合。
    
二、
reportdocument
            
通过 ReportDocument.DataDefinition.ParameterFields 属性
……
            1
reportdocument 成员

           
公共实例属性
            DataDefinition DataDefinition
。获取 DataDefinition 对象。
            2
datadefinition 成员

           
公共实例属性
            ParameterFields ParameterFieldDefinitions
。获取 ParameterFieldDefinitions 集合。
    
三、参数字段运行时自定义(crystalreportviewer

            
参考:
           
设置参数 | Windows 窗体查看器的绑定选项 | Web 窗体查看器的绑定选项
           
可支持用户在 Crystal 报表中通过参数进行输入。这种参数有多种用途。例如:

           
使参数基于数据库字段并允许用户指定该字段的值,以便对报表中的数据进行筛选。
 
            
使用参数字段将条件格式应用于报表。

           
使用参数字段来定义排序顺序。

           
下列示例说明如何在运行时通过代码设置参数字段值。此例解释了如何设置两个不同的参数:第一个是多值离散参数,第二个是区域值参数。

在运行时修改参数字段

[c#]
//
声明将参数传递给

//
查看器控件所需的变量。
ParameterFields paramFields = new ParameterFields ();
ParameterField paramField = new ParameterField ();
ParameterDiscreteValue discreteVal = new ParameterDiscreteValue ();
ParameterRangeValue rangeVal = new ParameterRangeValue ();

// 第一个参数是具有多个值的离散参数。

// 设置参数字段的名称,它必须
//
和报表中的参数相符。
paramField.ParameterFieldName = "
客户姓名";

// 设置第一个离散值并将其传递给该参数。
discreteVal.Value = "AIC Childrens";
paramField.CurrentValues.Add (discreteVal);

// 设置第二个离散值并将其传递给该参数。
// discreteVal
变量被设置为新值,这样,以前的设置
//
就不会被覆盖。
discreteVal = new ParameterDiscreteValue ();
discreteVal.Value = "Aruba Sport";
paramField.CurrentValues.Add (discreteVal);

// 将该参数添加到参数字段集合。
paramFields.Add (paramField);

// 第二个参数为区域值。paramField 变量
//
被设置为新值,这样,以前的设置就不会被覆盖。
paramField = new ParameterField ();

// 设置参数字段的名称,它必须
//
和报表中的参数相符。
paramField.ParameterFieldName = "
客户 ID";

// 设置范围的开始值和结束值并将该范围传递给
//
该参数。
rangeVal.StartValue = 42;
rangeVal.EndValue = 72;
paramField.CurrentValues.Add (rangeVal);

// 将第二个参数添加到参数字段集合。
paramFields.Add (paramField);

// 将参数字段集合放入查看器控件。
crystalReportViewer1.ParameterFieldInfo = paramFields;

更多资料请查看:http://www.devedu.com/develop/2005-4-8/12305/default.aspx

  

3.设置Crystal Report Viewer 的外观
    
设置 Crystal Report Viewer 的属性:
     BestFitPage
布尔值。获取或设置页面视图是大小合适还是用滚动条进行裁剪。
     
这个地方设为false后,设置Crystal Report Viewer 的宽度就可以去除滚动条了。
    
说明 :目前有两种情况,其中在从 Web 窗体查看器进行打印时会出现问题:
     BestFitPage
属性为默认值(即,没有垂直或水平滚动条),但PageZoomFactor大于 100
     BestFitPage
设置为Web 窗体查看器的高度小于报表页的高度(即,有垂直滚动条),而查看器的宽度大于或等于报表页的宽度(即,没有水平滚动条)。

    
配合设置 WidthHeight 来实现无空白和无滚动条的显示!
     DisplayGroupTree
布尔值。获取或设置树视图是可见还是隐藏。 
     DisplayPage
布尔值。获取或设置工具栏是可见还是隐藏。
 
     DisplayToolbar
布尔值。获取或设置工具栏上的转到页按钮是可见还是隐藏。
 
     PageZoomFactor Int32
。获取或设置报表的缩放因数。
 
     SeparatePages
布尔值。获取或设置报表页是分开还是连接。

     PageToTreeRatio Float64
。设置组树与报表视图之间的大小比例。

  

4.控制工具栏的按钮:
    
设置 Crystal Report Viewer 的属性:
     HasGotoPageButton
布尔值。获取或设置转到页按钮的可见性。 
     HasLevelUpButton
布尔值。获取或设置工具栏上的转到上一页按钮是可见还是隐藏。
 
     HasPageNavigationButtons
布尔值。获取或设置工具栏上的页面导航按钮是可见还是隐藏。
 
     HasRefreshButton
布尔值。获取或设置工具栏上的刷新按钮是可见还是隐藏。
 
     HasSearchButton
布尔值。获取或设置工具栏上的搜索按钮是可见还是隐藏。
 
     HasZoomFactorList
布尔值。获取或设置工具栏上的缩放因数列表是可见还是隐藏。

   

5. Web 页面里的布局:
    
设计视图,修改 CrystalReportViewer WidthHeight 属性。
    
切换到窗体的“HTML 视图,修改 style 属性。
<CR:CrystalReportViewer id="CrystalReportViewer1" style="Z-INDEX: 101; LEFT: 8px; POSITION: absolute; TOP: 8px" runat="server" Width="350px" Height="50px" EnableDrillDown="False" DisplayGroupTree="False"></CR:CrystalReportViewer>

  

6.除水晶报表的的公司LOGO
    
Crystal 公司的Logo 文件替换或删除……
     (1)
如果是用 VS.NET 里自带的水晶报表

C:/Program Files/Microsoft Visual Studio .NET/Crystal Reports/Viewers/images/ToolBar/logo.gif
     (2)
如果是用水晶报表 9.2
C:/Program Files/Common Files/Crystal Decisions/2.0/crystalreportviewers/images/toolbar/crlogo.gif

 

7.替换水晶报表里的各种图标和图片
     (1)
如果是用 VS.NET 里自带的水晶报表
C:/Program Files/Microsoft Visual Studio .NET/Crystal Reports/Viewers/images
     (2)
如果是用水晶报表 9.2
C:/Program Files/Common Files/Crystal Decisions/2.0/crystalreportviewers/images

 

8.关于打印的时候安装插件:

     Crystal Reports 的更新版本中,您可以使用新的 CrystalReportViewer.PrintMode 属性来指定打印模式。其中包含两个选择项:ActiveX PDF 
    
当属性设置为PrintMode.PDF 时,报表会在WEB服务器上导出为PDF,然后以数据流传送到浏览器,使用者可以利用选项,直接打印到打印机。这个选项是跨平台相容的。

当属性设置为PrintMode.ActiveX时,ActiveX 打印控制项允许使用者将报表直接打印到本地打印机

 

   先下载 http://support.businessobjects.com/CRforVS2005/PrintControl.cab,放到自已的服务器上。
若要在 Crystal Reports for Visual Studio 2005 网站显示 cab 包,需将下列 xml 语句加入网站的 web.config 文件(必须加到<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">之后,也就是最前面):
<configSections>
  <sectionGroup name="businessObjects">
   <sectionGroup name="crystalReports">
    <section name="printControl" type="System.Configuration.NameValueSectionHandler, System, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, Custom=null"/>
   </sectionGroup>
  </sectionGroup>
 </configSections>
 <businessObjects>
  <crystalReports>
   <printControl>
    <add key="url" value="http://192.168.88.91/PrintControl.cab"/>   --
这里改为.CAB包所在地址
   </printControl>
  </crystalReports>
 </businessObjects>

注意:只有 Internet Explorer 才会支持 ActiveX 模式。若从非 Internet Explorer 的浏览器 (FireFoxSafariMozilla ) 打印,将会恢复到 PDF 弹出对话框。

 

然后在打印的页面或直接在主窗体添加一个层,并在层中添加如下代码(可以采用其他方式)
<object id="CrystalPrintControl" classid="CLSID:BAEE131D-290A-4541-A50A-8936F159563A"
    codebase="http://192.168.88.91/printcontrol.cab" height="0px" version="10,2,0,1078"
    viewastext="" width="0px">
</object>
version
是版本号,如果你是其他的版本将版本号修改一下即可。

 

9.已达到系统管理员配置的最大报表处理作业数限制的处理
  
解决办法:
  
具体为修改下面两个键的值。

   HKEY_LOCAL_MACHINE;SOFTWARE;Crystal Decisions;10.0;Report Application
   Server;InprocServer;PrintJobLimit 
修改为1000
  
还有一个
HKEY_LOCAL_MACHINE;SOFTWARE;Crystal Decisions;10.0;Report Application
   Server;Server;PrintJobLimit
也修改为1000

   我发现在C:/WINDOWS/Temp这个临时文件里面有大量的水晶报表文件,每使用一次就会生成几个文件,在电脑没有重新启动的情况下它不会被删除,而出现大量的无用文件,google里面搜了一圈发现也有人碰到这样的情况但回答的很模糊只是说要将水晶报表装载的文档关闭掉,从这里可以看出出现这样的错误应该是程序员人为照成的.
   
具体解决如下
:
          1.ReportDocumen
实例必须为类成员   

             private ReportDocument prtp = new ReportDocument();  

          2.使用完水晶报表必须关闭文件,这样子就不会在windows的临时文件里面产生.
              private void Page_Unload(object sender, EventArgs e)
              {
                    prtp.Dispose();
              }
             Page_Unload
事件是在页面完全显示的时候运行,这样子就解决了.

 

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值