﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-点点滴滴-文章分类-Eclipse中水晶报表</title><link>http://www.blogjava.net/TonyZhang/category/30425.html</link><description /><language>zh-cn</language><lastBuildDate>Fri, 11 Apr 2008 19:15:21 GMT</lastBuildDate><pubDate>Fri, 11 Apr 2008 19:15:21 GMT</pubDate><ttl>60</ttl><item><title>如何向水晶报表传参数</title><link>http://www.blogjava.net/TonyZhang/articles/189053.html</link><dc:creator>张亦飞</dc:creator><author>张亦飞</author><pubDate>Thu, 27 Mar 2008 08:43:00 GMT</pubDate><guid>http://www.blogjava.net/TonyZhang/articles/189053.html</guid><wfw:comment>http://www.blogjava.net/TonyZhang/comments/189053.html</wfw:comment><comments>http://www.blogjava.net/TonyZhang/articles/189053.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/TonyZhang/comments/commentRss/189053.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/TonyZhang/services/trackbacks/189053.html</trackback:ping><description><![CDATA[<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img id="Codehighlighter1_0_44_Open_Image" onclick="this.style.display='none'; Codehighlighter1_0_44_Open_Text.style.display='none'; Codehighlighter1_0_44_Closed_Image.style.display='inline'; Codehighlighter1_0_44_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_0_44_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_0_44_Closed_Text.style.display='none'; Codehighlighter1_0_44_Open_Image.style.display='inline'; Codehighlighter1_0_44_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /><span id="Codehighlighter1_0_44_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">/**&nbsp;*/</span><span id="Codehighlighter1_0_44_Open_Text"><span style="color: #008000">/**</span><span style="color: #008000">*********&nbsp;&nbsp;加入参数字段&nbsp;**********************</span><span style="color: #008000">*/</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;Fields&nbsp;fields&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Fields();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;ParameterField&nbsp;parameterField&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;ParameterField();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;parameterField.setName(</span><span style="color: #000000">"</span><span style="color: #000000">parameter&nbsp;Name</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;Values&nbsp;values&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Values();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;ParameterFieldDiscreteValue&nbsp;parameterFieldDiscreteValue&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;ParameterFieldDiscreteValue();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;parameterFieldDiscreteValue.setValue(</span><span style="color: #000000">"</span><span style="color: #000000">parameter&nbsp;Value</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;parameterFieldDiscreteValue.setDescription(</span><span style="color: #000000">"</span><span style="color: #000000">Prompting&nbsp;text</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;values.add(parameterFieldDiscreteValue);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;parameterField.setCurrentValues(values);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;fields.add(parameterField);<br />
<img id="Codehighlighter1_534_599_Open_Image" onclick="this.style.display='none'; Codehighlighter1_534_599_Open_Text.style.display='none'; Codehighlighter1_534_599_Closed_Image.style.display='inline'; Codehighlighter1_534_599_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_534_599_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_534_599_Closed_Text.style.display='none'; Codehighlighter1_534_599_Open_Image.style.display='inline'; Codehighlighter1_534_599_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span id="Codehighlighter1_534_599_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">/**&nbsp;*/</span><span id="Codehighlighter1_534_599_Open_Text"><span style="color: #008000">/**</span><span style="color: #008000">*************************************************************</span><span style="color: #008000">*/</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;Create&nbsp;the&nbsp;CrystalReportViewer&nbsp;object</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;CrystalReportViewer&nbsp;crystalReportPageViewer&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;CrystalReportViewer();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;set&nbsp;the&nbsp;reportsource&nbsp;property&nbsp;of&nbsp;the&nbsp;viewer</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;IReportSource&nbsp;reportSource&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;clientDoc.getReportSource();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;crystalReportPageViewer.setReportSource(reportSource);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">set&nbsp;Fields<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;crystalReportPageViewer.setParameterFields(fields);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;set&nbsp;viewer&nbsp;attributes</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;crystalReportPageViewer.setOwnPage(</span><span style="color: #0000ff">true</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;crystalReportPageViewer.setOwnForm(</span><span style="color: #0000ff">true</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;crystalReportPageViewer.setLeft(</span><span style="color: #000000">100</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;Apply&nbsp;the&nbsp;viewer&nbsp;preference&nbsp;attributes</span></div>
<img src ="http://www.blogjava.net/TonyZhang/aggbug/189053.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/TonyZhang/" target="_blank">张亦飞</a> 2008-03-27 16:43 <a href="http://www.blogjava.net/TonyZhang/articles/189053.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>水晶报表系列文章--在Web 上打印水晶报表的四种方法( 转)</title><link>http://www.blogjava.net/TonyZhang/articles/189045.html</link><dc:creator>张亦飞</dc:creator><author>张亦飞</author><pubDate>Thu, 27 Mar 2008 08:17:00 GMT</pubDate><guid>http://www.blogjava.net/TonyZhang/articles/189045.html</guid><wfw:comment>http://www.blogjava.net/TonyZhang/comments/189045.html</wfw:comment><comments>http://www.blogjava.net/TonyZhang/articles/189045.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/TonyZhang/comments/commentRss/189045.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/TonyZhang/services/trackbacks/189045.html</trackback:ping><description><![CDATA[<p><span style="font-size: 10pt">在 Web 上打印水晶报表的四种方法</span></p>
<p><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;请参见：报表分发</span></p>
<p><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;如果想使用户能够打印在 Web 上访问的整个多页报表，您有下列选项： </span></p>
<p><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;1、使用Web 窗体 Viewer 工具栏上的&#8220;打印&#8221;按钮将报表导出为 PDF。 </span></p>
<p><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;2、使用Web 窗体 Viewer 工具栏上的&#8220;导出&#8221;按钮，导出报表为可以由客户端的现有应用程序打印的格式。 </span></p>
<p><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;3、使用PrintToPrinter 方法从服务器打印报表。 </span></p>
<p><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;4、将报表作为一个连续的页提供以通过 Internet Explorer 浏览器在客户端启用打印。 </span></p>
<p><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;如果用户无权访问打印导出的报表所需的应用程序，并且服务器端打印存在安全性或访问权限问题，您可能需要使用户能够从他们的浏览器打印报表。此方法将整个报表作为一个连续的页显示在 Web 窗体 Viewer 控件中，因而能够使用浏览器的打印功能。 </span></p>
<p><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;在应用程序中，可以在现有 Web 窗体 Viewer 旁边添加一个按钮，该按钮可以将客户端重定向到新的、在浏览器中将整个报表显示为一个连续页的 Web 窗体 Viewer。可以对第二个窗体上的查看器进行格式化，以便禁用组树和工具栏，并将查看器的 SeparatePages 属性设置为 False。 </span></p>
<p><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;注意&nbsp;&nbsp; 这种打印方法有一个局限，即无法控制页眉、页脚和分页符的定位。<br />
&nbsp;&nbsp;&nbsp;&nbsp;crReportDocument = New Income_Statement()<br />
&nbsp;&nbsp;&nbsp;&nbsp;CrystalReportViewer1.ReportSource = crReportDocument<br />
&nbsp;&nbsp;&nbsp;&nbsp;CrystalReportViewer1.SeparatePages = False<br />
&nbsp;&nbsp;&nbsp;&nbsp;CrystalReportViewer1.DisplayGroupTree = False<br />
&nbsp;&nbsp;&nbsp;&nbsp;CrystalReportViewer1.DisplayToolbar = False</span></p>
<img src ="http://www.blogjava.net/TonyZhang/aggbug/189045.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/TonyZhang/" target="_blank">张亦飞</a> 2008-03-27 16:17 <a href="http://www.blogjava.net/TonyZhang/articles/189045.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>水晶报表在网页中居中显示-----没解决</title><link>http://www.blogjava.net/TonyZhang/articles/189023.html</link><dc:creator>张亦飞</dc:creator><author>张亦飞</author><pubDate>Thu, 27 Mar 2008 07:32:00 GMT</pubDate><guid>http://www.blogjava.net/TonyZhang/articles/189023.html</guid><wfw:comment>http://www.blogjava.net/TonyZhang/comments/189023.html</wfw:comment><comments>http://www.blogjava.net/TonyZhang/articles/189023.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/TonyZhang/comments/commentRss/189023.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/TonyZhang/services/trackbacks/189023.html</trackback:ping><description><![CDATA[<span style="font-size: 10pt">默认情况下，水晶报表在网页中显示是居左对齐的．<br />
如果想居中对齐不知道怎么调整．<br />
目前我用的是：<br />
<font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;crystalReportPageViewer.setLeft(100);<br />
　　//设置报表到页面左边距为100.<br />
<br />
<br />
<p>1、报表样式字段意义</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;配合设置 Width、Height 来实现无空白和无滚动条的显示！<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DisplayGroupTree 布尔值。获取或设置树视图是可见还是隐藏。&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DisplayPage 布尔值。获取或设置工具栏是可见还是隐藏。&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DisplayToolbar 布尔值。获取或设置工具栏上的转到页按钮是可见还是隐藏。&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PageZoomFactor Int32。获取或设置报表的缩放因数。&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SeparatePages 布尔值。获取或设置报表页是分开还是连接。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PageToTreeRatio Float64。设置组树与报表视图之间的大小比例。</p>
<p>2、控制工具栏的按钮：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;设置 Crystal Report Viewer 的属性：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HasGotoPageButton 布尔值。获取或设置转到页按钮的可见性。&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HasLevelUpButton 布尔值。获取或设置工具栏上的转到上一页按钮是可见还是隐藏。&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HasPageNavigationButtons 布尔值。获取或设置工具栏上的页面导航按钮是可见还是隐藏。&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HasRefreshButton 布尔值。获取或设置工具栏上的刷新按钮是可见还是隐藏。&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HasSearchButton 布尔值。获取或设置工具栏上的搜索按钮是可见还是隐藏。&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HasZoomFactorList 布尔值。获取或设置工具栏上的缩放因数列表是可见还是隐藏。</p>
</font></span>
<img src ="http://www.blogjava.net/TonyZhang/aggbug/189023.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/TonyZhang/" target="_blank">张亦飞</a> 2008-03-27 15:32 <a href="http://www.blogjava.net/TonyZhang/articles/189023.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>水晶报表系列文章 -- 用Swing方式显示报表(转)</title><link>http://www.blogjava.net/TonyZhang/articles/189014.html</link><dc:creator>张亦飞</dc:creator><author>张亦飞</author><pubDate>Thu, 27 Mar 2008 07:18:00 GMT</pubDate><guid>http://www.blogjava.net/TonyZhang/articles/189014.html</guid><wfw:comment>http://www.blogjava.net/TonyZhang/comments/189014.html</wfw:comment><comments>http://www.blogjava.net/TonyZhang/articles/189014.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/TonyZhang/comments/commentRss/189014.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/TonyZhang/services/trackbacks/189014.html</trackback:ping><description><![CDATA[<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img id="Codehighlighter1_0_155_Open_Image" onclick="this.style.display='none'; Codehighlighter1_0_155_Open_Text.style.display='none'; Codehighlighter1_0_155_Closed_Image.style.display='inline'; Codehighlighter1_0_155_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_0_155_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_0_155_Closed_Text.style.display='none'; Codehighlighter1_0_155_Open_Image.style.display='inline'; Codehighlighter1_0_155_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /><span id="Codehighlighter1_0_155_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">/**/</span><span id="Codehighlighter1_0_155_Open_Text"><span style="color: #008000">/*</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;*&nbsp;Created&nbsp;on&nbsp;2005/12/12<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;*<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;*&nbsp;TODO&nbsp;To&nbsp;change&nbsp;the&nbsp;template&nbsp;for&nbsp;this&nbsp;generated&nbsp;file&nbsp;go&nbsp;to<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;*&nbsp;Window&nbsp;-&nbsp;Preferences&nbsp;-&nbsp;Java&nbsp;-&nbsp;Code&nbsp;Style&nbsp;-&nbsp;Code&nbsp;Templates<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />&nbsp;</span><span style="color: #008000">*/</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.awt.</span><span style="color: #000000">*</span><span style="color: #000000">;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.swing.</span><span style="color: #000000">*</span><span style="color: #000000">;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;com.crystaldecisions.ReportViewer.</span><span style="color: #000000">*</span><span style="color: #000000">;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #008000">//</span><span style="color: #008000">import&nbsp;com.crystaldecisions.reports.sdk.*;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #008000">//</span><span style="color: #008000">import&nbsp;com.crystaldecisions.sdk.occa.report.reportsource.IReportSource;</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;com.crystaldecisions.sdk.occa.report.application.</span><span style="color: #000000">*</span><span style="color: #000000">;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;com.crystaldecisions.sdk.occa.report.reportsource.</span><span style="color: #000000">*</span><span style="color: #000000">;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img id="Codehighlighter1_484_639_Open_Image" onclick="this.style.display='none'; Codehighlighter1_484_639_Open_Text.style.display='none'; Codehighlighter1_484_639_Closed_Image.style.display='inline'; Codehighlighter1_484_639_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_484_639_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_484_639_Closed_Text.style.display='none'; Codehighlighter1_484_639_Open_Image.style.display='inline'; Codehighlighter1_484_639_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span id="Codehighlighter1_484_639_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">/**&nbsp;*/</span><span id="Codehighlighter1_484_639_Open_Text"><span style="color: #008000">/**</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;*&nbsp;</span><span style="color: #808080">@author</span><span style="color: #008000">&nbsp;phss<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;*<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;*&nbsp;TODO&nbsp;To&nbsp;change&nbsp;the&nbsp;template&nbsp;for&nbsp;this&nbsp;generated&nbsp;type&nbsp;comment&nbsp;go&nbsp;to<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;*&nbsp;Window&nbsp;-&nbsp;Preferences&nbsp;-&nbsp;Java&nbsp;-&nbsp;Code&nbsp;Style&nbsp;-&nbsp;Code&nbsp;Templates<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />&nbsp;</span><span style="color: #008000">*/</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;TestSwing&nbsp;<br />
<img id="Codehighlighter1_665_1978_Open_Image" onclick="this.style.display='none'; Codehighlighter1_665_1978_Open_Text.style.display='none'; Codehighlighter1_665_1978_Closed_Image.style.display='inline'; Codehighlighter1_665_1978_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_665_1978_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_665_1978_Closed_Text.style.display='none'; Codehighlighter1_665_1978_Open_Image.style.display='inline'; Codehighlighter1_665_1978_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span id="Codehighlighter1_665_1978_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_665_1978_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;createAndShowGUI()&nbsp;<br />
<img id="Codehighlighter1_709_1817_Open_Image" onclick="this.style.display='none'; Codehighlighter1_709_1817_Open_Text.style.display='none'; Codehighlighter1_709_1817_Closed_Image.style.display='inline'; Codehighlighter1_709_1817_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_709_1817_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_709_1817_Closed_Text.style.display='none'; Codehighlighter1_709_1817_Open_Image.style.display='inline'; Codehighlighter1_709_1817_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_709_1817_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_709_1817_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">try</span><span style="color: #000000">&nbsp;<br />
<img id="Codehighlighter1_720_1759_Open_Image" onclick="this.style.display='none'; Codehighlighter1_720_1759_Open_Text.style.display='none'; Codehighlighter1_720_1759_Closed_Image.style.display='inline'; Codehighlighter1_720_1759_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_720_1759_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_720_1759_Closed_Text.style.display='none'; Codehighlighter1_720_1759_Open_Image.style.display='inline'; Codehighlighter1_720_1759_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_720_1759_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_720_1759_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JFrame.setDefaultLookAndFeelDecorated(</span><span style="color: #0000ff">false</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JFrame&nbsp;frame&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;JFrame(</span><span style="color: #000000">"</span><span style="color: #000000">TestSwing</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;frame.setTitle(</span><span style="color: #000000">"</span><span style="color: #000000">Testing&nbsp;CRX1<img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ReportViewerBean&nbsp;viewer&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;ReportViewerBean();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;viewer.init(</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;String[</span><span style="color: #000000">0</span><span style="color: #000000">],&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.err.println(</span><span style="color: #000000">"</span><span style="color: #000000">--------------1----------</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ReportClientDocument&nbsp;rpt&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;ReportClientDocument();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.err.println(</span><span style="color: #000000">"</span><span style="color: #000000">-------------2-----------</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rpt.setReportAppServer(</span><span style="color: #000000">"</span><span style="color: #000000">crmboe.mds-sn.com</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">rpt.setReportAppServer("crmboe.ras.rptappserver");</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.err.println(</span><span style="color: #000000">"</span><span style="color: #000000">-------------3-----------</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rpt.open(</span><span style="color: #000000">"</span><span style="color: #000000">crmboe.ras.rptappserver://c:\\reports\\aa.rpt</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">rpt.open("aa.rpt",0);</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.err.println(</span><span style="color: #000000">"</span><span style="color: #000000">--------------4----------</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IReportSource&nbsp;rptSource&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;rpt.getReportSource();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;viewer.setReportSource(rptSource);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.err.println(</span><span style="color: #000000">"</span><span style="color: #000000">--------------5----------</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;frame.getContentPane().add(viewer,&nbsp;BorderLayout.CENTER);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;frame.setSize(</span><span style="color: #000000">700</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">500</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;frame.setVisible(</span><span style="color: #0000ff">true</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;viewer.start();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">catch</span><span style="color: #000000">&nbsp;(Exception&nbsp;e)&nbsp;<br />
<img id="Codehighlighter1_1786_1814_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1786_1814_Open_Text.style.display='none'; Codehighlighter1_1786_1814_Closed_Image.style.display='inline'; Codehighlighter1_1786_1814_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_1786_1814_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1786_1814_Closed_Text.style.display='none'; Codehighlighter1_1786_1814_Open_Image.style.display='inline'; Codehighlighter1_1786_1814_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_1786_1814_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_1786_1814_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;main(String[]&nbsp;args)&nbsp;<br />
<img id="Codehighlighter1_1862_1976_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1862_1976_Open_Text.style.display='none'; Codehighlighter1_1862_1976_Closed_Image.style.display='inline'; Codehighlighter1_1862_1976_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_1862_1976_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1862_1976_Closed_Text.style.display='none'; Codehighlighter1_1862_1976_Open_Image.style.display='inline'; Codehighlighter1_1862_1976_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_1862_1976_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_1862_1976_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SwingUtilities.invokeLater(</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Runnable()&nbsp;<br />
<img id="Codehighlighter1_1911_1971_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1911_1971_Open_Text.style.display='none'; Codehighlighter1_1911_1971_Closed_Image.style.display='inline'; Codehighlighter1_1911_1971_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_1911_1971_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1911_1971_Closed_Text.style.display='none'; Codehighlighter1_1911_1971_Open_Image.style.display='inline'; Codehighlighter1_1911_1971_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_1911_1971_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_1911_1971_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;run()&nbsp;<br />
<img id="Codehighlighter1_1938_1967_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1938_1967_Open_Text.style.display='none'; Codehighlighter1_1938_1967_Closed_Image.style.display='inline'; Codehighlighter1_1938_1967_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_1938_1967_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1938_1967_Closed_Text.style.display='none'; Codehighlighter1_1938_1967_Open_Image.style.display='inline'; Codehighlighter1_1938_1967_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_1938_1967_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_1938_1967_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;createAndShowGUI();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span></div>
<img src ="http://www.blogjava.net/TonyZhang/aggbug/189014.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/TonyZhang/" target="_blank">张亦飞</a> 2008-03-27 15:18 <a href="http://www.blogjava.net/TonyZhang/articles/189014.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>水晶报表系列文章--优化策略笔记（转载）</title><link>http://www.blogjava.net/TonyZhang/articles/189011.html</link><dc:creator>张亦飞</dc:creator><author>张亦飞</author><pubDate>Thu, 27 Mar 2008 07:09:00 GMT</pubDate><guid>http://www.blogjava.net/TonyZhang/articles/189011.html</guid><wfw:comment>http://www.blogjava.net/TonyZhang/comments/189011.html</wfw:comment><comments>http://www.blogjava.net/TonyZhang/articles/189011.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/TonyZhang/comments/commentRss/189011.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/TonyZhang/services/trackbacks/189011.html</trackback:ping><description><![CDATA[<p style="margin: 0cm 0cm 0pt; line-height: 18pt; text-align: center" align="center"><span style="font-family: 宋体">设计优化的 Web 报表</span></p>
<h2 style="margin: 0cm 0cm 0pt"><font face="宋体">Crystal Reports 本身的性能优点：</font></h2>
<ul style="margin-top: 0cm" type="disc">
    <li style="margin: 0cm 0cm 0pt; line-height: 18pt; tab-stops: list 36.0pt"><strong><span style="font-family: 宋体">按需分配页技术</span></strong></li>
</ul>
<p style="margin: 0cm 0cm 0pt 18pt; line-height: 18pt"><span style="font-family: 宋体">按需分配页的报表访问允许用户只下载需要查看的特定报表页，从而缩短了响应时间，减少了 Web 流量。不仅如此，占位符和部分页技术还使您无须等待图形和子报表等大对象的处理，就能立即查看 Web 上的报表页和数据。</span></p>
<ul style="margin-top: 0cm" type="disc">
    <li style="margin: 0cm 0cm 0pt; line-height: 18pt; tab-stops: list 36.0pt"><strong><span style="font-family: 宋体">优化的多线程报表引擎</span></strong></li>
</ul>
<p style="margin: 0cm 0cm 0pt 36pt; line-height: 18pt"><span style="font-family: 宋体">Crystal Report 引擎的多线程能力及线程安全数据库驱动程序使您能够在许多其他操作在后台进行的同时，继续执行您自己的重要任务。此外，报表引擎减少了数据传递次数，通过改善的内存管理来加快处理速度，尽可能高效处理子报表和参数。</span></p>
<h2 style="margin: 0cm 0cm 0pt"><font face="宋体">优化 Web 报表的关键策略</font></h2>
<h3 style="margin: 0cm 0cm 0pt"><span style="font-family: 宋体"><a href="http://www.blogjava.net/bibi/admin/Performance4.html#918725"><font size="5">通过 BusinessObjects Enterprise 缩放</font></a><font size="5">。 </font></span></h3>
<h4 style="margin: 0cm 0cm 0pt"><span style="font-family: 宋体">计划</span></h4>
<p style="margin: 0cm 0cm 0pt 36pt; line-height: 18pt"><span style="font-family: 宋体">BusinessObjects Enterprise 包含一个灵活的基于时间和事件的调度系统，使您可以在工余时间处理大的报表，从而避免不必要的数据库访问。（Report Application Server 提供按需制表功能，每个查看请求都会产生一个单独的数据库查询）。</span></p>
<h4 style="margin: 0cm 0cm 0pt"><span style="font-family: 宋体">版本管理</span></h4>
<p style="margin: 0cm 0cm 0pt 36pt; line-height: 18pt"><span style="font-family: 宋体">版本管理和调度功能紧密配合，共同实现报表实例的存储。版本管理不仅可以降低为服务用户而造访数据库的次数，而且可以保留报表实例的档案作为历史参考。</span></p>
<h4 style="margin: 0cm 0cm 0pt"><span style="font-family: 宋体">集群</span></h4>
<p style="margin: 0cm 0cm 0pt 36pt; line-height: 18pt"><span style="font-family: 宋体">BusinessObjects Enterprise 整合了成熟的集群和负载平衡技术，可帮助您实现一个高度易用、性能可靠的信息传送系统。</span></p>
<h4 style="margin: auto 0cm"><span style="font-family: 宋体">可伸缩性</span></h4>
<p style="margin: 0cm 0cm 0pt 36pt; line-height: 18pt"><span style="font-family: 宋体">BusinessObjects Enterprise 建立在分布式多服务器结构的基础上，可使您通过单机扩容（添加处理器）或多机扩展来处理较重的用户负载。</span></p>
<h4 style="margin: auto 0cm"><span style="font-family: 宋体">管理</span></h4>
<p style="margin: 0cm 0cm 0pt 36pt; line-height: 18pt"><span style="font-family: 宋体">BusinessObjects Enterprise 包含大量的管理控件，可用来组织内容，设置复杂的调度和安全性，并调节系统达到最佳性能。</span></p>
<h4 style="margin: auto 0cm"><span style="font-family: 宋体">外部（第三方）身份验证</span></h4>
<p style="margin: 0cm 0cm 0pt 36pt; line-height: 18pt"><span style="font-family: 宋体">BusinessObjects Enterprise 允许您利用现有安全系统来管理用户和组。所有身份验证工作都可委托给第三方 NT 或 LDAP 系统。</span></p>
<h4 style="margin: auto 0cm"><span style="font-family: 宋体">BusinessObjects Enterprise 中日期函数的求值时间</span></h4>
<p style="margin: 0cm 0cm 0pt; line-height: 18pt"><span style="font-family: 宋体">Crystal Reports 中可用的不同日期和时间函数是在报表处理的不同阶段求值的。某些函数是在处理预定的报表或刷新报表实例时求值的：该求值时间称为&#8220;WhileReadingRecords&#8221;。其他函数是在每次格式化报表页以在报表查看器或浏览器中显示时求值的：该求值时间称为&#8220;WhilePrintingRecords&#8221;。</span></p>
<p style="margin: 0cm 0cm 0pt; line-height: 18pt"><span style="font-family: 宋体">如果使用 BusinessObjects Enterprise 生成报表实例，并且注意到所求出的日期或时间函数值不是预期值，请考虑以下因素：</span></p>
<ul style="margin-top: 0cm" type="disc">
    <li style="margin: 0cm 0cm 0pt; line-height: 18pt; tab-stops: list 36.0pt"><span style="font-family: 宋体">当前日期和时间始终是从报表引擎可以在本地访问的时钟（即处理报表的计算机上的时钟）中读取的。在 BusinessObjects Enterprise 中，&#8220;作业服务器&#8221;依据数据库处理预定报表，而&#8220;页面服务器&#8221;依据数据库处理按需要显示的报表。Page Server 还在用户查看报表实例的个别页面时对页面进行格式化。 </span>
    <li style="margin: 0cm 0cm 0pt; line-height: 18pt; tab-stops: list 36.0pt"><span style="font-family: 宋体">在处理预定报表时，Job Server 将对所有日期和时间公式进行求值，以便生成报表实例。如果只是查看生成的报表实例，则不会对任何公式重新求值。 </span>
    <li style="margin: 0cm 0cm 0pt; line-height: 18pt; tab-stops: list 36.0pt"><span style="font-family: 宋体">当您查看缓存的报表页时，不会对任何日期函数重新求值，原因是记录已被读取并且页面已被格式化。</span>
    <li style="margin: 0cm 0cm 0pt; line-height: 18pt; tab-stops: list 36.0pt"><span style="font-family: 宋体">如果在报表的选定公式中使用日期和/或时间函数，则报表数据依赖于这些公式的返回值。因此，在以后某个日期查看报表实例时，函数可能会导致系统依据数据库对报表数据进行更新。 </span>
    <li style="margin: 0cm 0cm 0pt; line-height: 18pt; tab-stops: list 36.0pt"><span style="font-family: 宋体">若要确保日期和时间函数返回预期的值，可以通过使用 WhileReadingRecords 和 WhilePrintingRecords 函数来强制确定求值时间。</span></li>
</ul>
<h3 style="margin: 13pt 0cm"><a href="http://www.blogjava.net/bibi/admin/Performance6.html#918821"><span style="font-family: 宋体"><font size="5">作出正确的设计选择</font></a></span><font size="5"><span style="font-family: 宋体">。</span> </font></h3>
<p style="margin: 0cm 0cm 0pt; line-height: 18pt"><span style="font-family: 宋体">在设计报表，尤其是设计用于 Web 的报表时，应该允许报表用户操纵其所查看的数据。即，显示汇总信息，以便每个用户可以快速地浏览报表，然后深化以访问其他数据。采用此方法，由于仅从数据库服务器传输用户所请求的数据，所以最大限度地降低了 Web 流量并缩短了响应时间。</span></p>
<p style="margin: 0cm 0cm 0pt; line-height: 18pt"><span style="font-family: 宋体">下面只是设计用户驱动报表的几点优势：</span></p>
<ul style="margin-top: 0cm" type="disc">
    <li style="margin: 0cm 0cm 0pt; line-height: 18pt; tab-stops: list 36.0pt"><span style="font-family: 宋体">报表用户可以对其在 Web 上查看的信息类型和数量进行交互控制。 </span>
    <li style="margin: 0cm 0cm 0pt; line-height: 18pt; tab-stops: list 36.0pt"><span style="font-family: 宋体">因为只从数据库服务器返回用户所请求的信息，所以数据传输和网络流量减少。</span>
    <li style="margin: 0cm 0cm 0pt; line-height: 18pt; tab-stops: list 36.0pt"><span style="font-family: 宋体">当用户需要通过 Web 根据实时数据制作报表时，面向用户的报表响应迅速，并能有效地与数据库服务器通讯。 </span>
    <li style="margin: 0cm 0cm 0pt; line-height: 18pt; tab-stops: list 36.0pt"><span style="font-family: 宋体">报表变得更有用，原因在于每个用户均可自定义报表的内容，从而创建针对其特定决策问题的报表解决方案。 </span></li>
</ul>
<h4 style="margin: auto 0cm"><span style="font-family: 宋体">使用更快的报表格式</span></h4>
<p style="margin: 0cm 0cm 0pt; line-height: 18pt"><span style="font-family: 宋体">要提高在 Crystal Reports 旧版本中创建的报表的性能，最快速的方法是将其以最新的 Crystal Reports 格式保存。Crystal Reports 在经过改进后，已能较以往更快地处理报表：更新旧报表可利用这些改进功能。</span></p>
<p style="margin: 0cm 0cm 0pt; line-height: 18pt"><span style="font-family: 宋体">若要更新旧报表的格式，只需用 Crystal Reports 将其打开，然后从&#8220;文件&#8221;菜单中选择&#8220;保存&#8221;。旧版本的报表将被替换为版本 11 的报表。</span></p>
<h4 style="margin: auto 0cm"><font face="Arial Unicode MS">在实时数据和已保存数据之间选择</font></h4>
<h4 style="margin: auto 0cm"><font face="Arial Unicode MS">设计汇总报表</font></h4>
<p style="margin: 0cm 0cm 0pt"><span style="font-size: 12pt; color: windowtext; font-family: 宋体; text-decoration: none; text-underline: none"><u>设计和分发摘要报表是确保用户可以在 Web 上快速查找所需数据的一种相对简便的方法。摘要报表可以包含的数据与其他任何报表一样多。但是，通过隐藏汇总报表的&#8220;详细资料&#8221;节，可以避免用户陷入他们可能并不直接需要的数据中。 </u></span></p>
<p style="margin: 0cm 0cm 0pt"><span style="font-size: 12pt; font-family: 宋体">在 Crystal Reports 中打开报表。 </span></p>
<p style="margin: 0cm 0cm 0pt"><span style="font-size: 12pt; font-family: 宋体">如果尚未创建分组及汇总的报表，则从&#8220;Feature Examples&#8221;样本文件夹中打开&#8220;Group.rpt&#8221;。</span></p>
<p style="margin: 0cm 0cm 0pt"><span style="font-size: 12pt; font-family: 宋体">在<strong>&#8220;报表&#8221;</strong>菜单上，单击<strong>&#8220;节专家&#8221;</strong>打开&#8220;节专家&#8221;。 </span></p>
<p style="margin: 0cm 0cm 0pt"><span style="font-size: 12pt; font-family: 宋体">在<strong>&#8220;节&#8221;</strong>列表中，单击<strong>&#8220;详细资料&#8221;</strong>。</span></p>
<p style="margin: 0cm 0cm 0pt"><span style="font-size: 12pt; font-family: 宋体">在&#8220;节专家&#8221;的<strong>&#8220;公用&#8221;</strong>选项卡上，选中<strong>&#8220;隐藏（深化完成）&#8221;</strong>复选框。 </span></p>
<p style="margin: 0cm 0cm 0pt"><span style="font-size: 12pt; font-family: 宋体">单击<strong>&#8220;确定&#8221;</strong>。</span></p>
<h4 style="margin: auto 0cm"><font face="Arial Unicode MS">慎用子报表</font></h4>
<h6><span style="font-weight: normal; font-size: 12pt"><font face="Arial Unicode MS">利用按需分配子报表</font></span></h6>
<p style="margin: 0cm 0cm 0pt"><span style="font-family: 宋体">如果报表有处理大量记录的节，则可以将该节放入按需分配子报表中。按需分配子报表在主报表中以超级链接的形式出现。在打开主报表时，不会检索按需分配子报表的任何数据，直到深化相应的超级链接为止。</span></p>
<h6><span style="font-weight: normal; font-size: 12pt; font-family: 宋体">使用链接子报表</span></h6>
<p style="margin: 0cm 0cm 0pt"><span style="font-family: 宋体">当链接子报表时，</span>Crystal Reports <span style="font-family: 宋体">会根据主报表中的匹配记录协调子报表中的数据。</span></p>
<h6><span style="font-weight: normal; font-size: 12pt; font-family: 宋体">链接表而不是链接子报表</span></h6>
<p style="margin: 0cm 0cm 0pt; line-height: 18pt"><span style="font-size: 10.5pt; font-family: 宋体">只要可能，就应采用以下方法协调报表数据：将</span><span style="font-size: 10.5pt; font-family: 'Times New Roman'">&#8220;</span><span style="font-size: 10.5pt; font-family: 宋体">数据库专家</span><span style="font-size: 10.5pt; font-family: 'Times New Roman'">&#8221;</span><span style="font-size: 10.5pt; font-family: 宋体">中</span><span style="font-size: 10.5pt; font-family: 'Times New Roman'">&#8220;</span><span style="font-size: 10.5pt; font-family: 宋体">链接</span><span style="font-size: 10.5pt; font-family: 'Times New Roman'">&#8221;</span><span style="font-size: 10.5pt; font-family: 宋体">选项卡上的数据库表链接到主报表，而不是将常规子报表（即非按需分配子报表）链接到主报表。因为每个子报表都是作为单独的报表运行，所以链接的表常常有性能优势</span><font face="Arial Unicode MS">。</font></p>
<h4 style="margin: auto 0cm"><span style="font-family: 宋体">有效地使用其他设计元素</span></h4>
<h5 style="margin: auto 0cm"><span style="font-family: 宋体">映射</span></h5>
<p style="margin: 0cm 0cm 0pt; line-height: 18pt"><font face="Arial Unicode MS">映射呈现是一种单线程操作，它的缩放性能并不好。尽管支持映射，但您仍然需要仔细考虑报表中的映射将对性能产生的总体影响。</font></p>
<h5 style="margin: auto 0cm"><span style="font-family: 宋体">报表模板</span></h5>
<p style="margin: 0cm 0cm 0pt; line-height: 18pt"><font face="Arial Unicode MS">如果将对多个报表应用同一模板，最好将报表模板打开一次，然后将其保存在缓存中，这是因为模板只需要为只读。</font></p>
<h5 style="margin: auto 0cm"><span style="font-family: 宋体">包括&#8220;第 N 页，共 M 页&#8221;或&#8220;总页数&#8221;</span></h5>
<p style="margin: 0cm 0cm 0pt; line-height: 18pt"><font face="Arial Unicode MS">如果在报表中包括特殊字段&#8220;第 N 页，共 M 页&#8221;或&#8220;总页数&#8221;，则报表需要先完成处理，然后才能计算此值。除非报表非常小或者的确需要此值，否则，请避免使用这些特殊字段。</font></p>
<h4 style="margin: auto 0cm"><span style="font-family: 宋体">设计报表以最大程度地利用数据共享</span></h4>
<p style="margin: 0cm 0cm 0pt; line-height: 18pt"><font face="Arial Unicode MS">BusinessObjects Enterprise 具有数据共享功能，通过减少具有多个用户的系统中进行的数据库调用次数来提高性能。</font></p>
<p style="margin: 0cm 0cm 0pt; line-height: 18pt"><font face="Arial Unicode MS">只有在满足某些条件时，才能在报表对象的用户之间共享数据。在不损害用户的报表信息需求的情况下，尝试通过设计尽可能满足数据共享条件的报表来最大程度地利用数据共享。</font></p>
<p style="margin: 0cm 0cm 0pt; line-height: 18pt"><font face="Arial Unicode MS">如果报表由页面服务器处理，则在满足以下条件时将会在报表用户之间共享数据：</font></p>
<ul style="margin-top: 0cm" type="disc">
    <li style="margin: 0cm 0cm 0pt; line-height: 18pt; tab-stops: list 36.0pt"><span style="font-family: 宋体">用户使用相同数据库登录信息查看报表时。</span>
    <li style="margin: 0cm 0cm 0pt; line-height: 18pt; tab-stops: list 36.0pt"><span style="font-family: 宋体">用户使用相同参数查看报表时。</span>
    <li style="margin: 0cm 0cm 0pt; line-height: 18pt; tab-stops: list 36.0pt"><span style="font-family: 宋体">用户使用相同页面布局选项查看报表时。</span>
    <li style="margin: 0cm 0cm 0pt; line-height: 18pt; tab-stops: list 36.0pt"><span style="font-family: 宋体">用户使用相同区域设置查看报表时。</span></li>
</ul>
<p style="margin: 0cm 0cm 0pt; line-height: 18pt"><font face="Arial Unicode MS">使用 DHTML 查看器、ActiveX 查看器或 Java 查看器查看的报表是使用页面服务器处理的。这些查看器不允许用户更改报表的页面布局或区域设置。但是，可以开发提供此功能的自定义查看器应用程序。</font></p>
<p style="margin: 0cm 0cm 0pt; line-height: 18pt"><font face="Arial Unicode MS">如果报表由报表应用程序服务器 (RAS) 处理，则在满足以下条件时将会在报表用户之间共享数据：</font></p>
<ul style="margin-top: 0cm" type="disc">
    <li style="margin: 0cm 0cm 0pt; line-height: 18pt; tab-stops: list 36.0pt"><span style="font-family: 宋体">用户使用相同数据库登录信息查看报表时。</span>
    <li style="margin: 0cm 0cm 0pt; line-height: 18pt; tab-stops: list 36.0pt"><span style="font-family: 宋体">用户使用相同参数查看报表时。</span>
    <li style="margin: 0cm 0cm 0pt; line-height: 18pt; tab-stops: list 36.0pt"><span style="font-family: 宋体">用户使用相同区域设置查看报表时。</span>
    <li style="margin: 0cm 0cm 0pt; line-height: 18pt; tab-stops: list 36.0pt"><span style="font-family: 宋体">用户不修改报表时。</span></li>
</ul>
<p style="margin: 0cm 0cm 0pt; line-height: 18pt"><font face="Arial Unicode MS">使用高级 DHTML 查看器（或允许查看或修改报表的自定义应用程序）查看的报表是使用报表应用程序服务器处理的。</font></p>
<h3 style="margin: 13pt 0cm"><span style="font-family: 宋体"><font size="5">优化您的制表环境</font></span></h3>
<h4 style="margin: auto 0cm"><span style="font-family: 宋体">选择最快的数据库和连接</span></h4>
<p><span style="font-family: 宋体">若要提高制表性能，应充分利用数据库进行大部分报表处理工作。理想情况下，结构化查询语言 (SQL) 数据库是执行这类任务最有效的数据库。</span></p>
<h4 style="margin: auto 0cm"><span style="font-family: 宋体">使用表索引</span></h4>
<p style="margin: 0cm 0cm 0pt"><span style="font-size: 12pt; font-family: 宋体">要使处理速度达到最快，可基于 SQL 数据库中带索引的字段创建报表。使用表索引很容易提高数据的访问速度，减少 Crystal Reports 计算数据所花的时间。</span></p>
<h4 style="margin: auto 0cm"><span style="font-family: 宋体">改进表链接选择</span></h4>
<p style="margin: 0cm 0cm 0pt 35.7pt; text-indent: -17.85pt; line-height: 18pt; text-align: left; tab-stops: list 36.0pt" align="left"><span style="font-size: 12pt; font-family: 'Arial Unicode MS'">1.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: 宋体">确保每个数据库表在要使用的字段上编制了索引。</span> </p>
<p style="margin: 0cm 0cm 0pt 35.7pt; text-indent: -17.85pt; line-height: 18pt; tab-stops: list 36.0pt">2.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">将数据库表添加到您的报表，然后在公用字段上链接主表和查阅表，而不要插入链接子报表再将其绑定到主报表的数据。</span></p>
<p style="margin: 0cm 0cm 0pt 35.7pt; text-indent: -17.85pt; line-height: 18pt; tab-stops: list 36.0pt">3.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">在主表中，使用对索引字段设置了范围限制的记录选定公式。这样可以减少</span> Crystal Reports <span style="font-family: 宋体">必须在查阅表中找到的与主表中记录相匹配的记录的数目。</span></p>
<h4 style="margin: auto 0cm"><span style="font-family: 宋体">使用线程安全数据库驱动程序</span></h4>
<h4 style="margin: auto 0cm"><span style="font-family: 宋体">使用存储过程进行更快的处理</span></h4>
<h3 style="margin: 13pt 0cm"><span style="font-family: 宋体"><font size="5">使用增强的记录选定公式</font></span></h3>
<h4 style="margin: auto 0cm"><span style="font-family: 宋体">下推记录选定</span></h4>
<p style="margin: 0cm 0cm 0pt; line-height: 18pt"><font face="Arial Unicode MS">Year ({订单.订单日期}) &lt; 2001 返回所有DB记录；{订单.订单日期} &lt; #Jan 1, 2001# 只返回所需记录</font></p>
<h4 style="margin: auto 0cm"><span style="font-family: 宋体">记录选定性能提示</span></h4>
<p style="margin: 0cm 0cm 0pt"><font face="Arial Unicode MS">在设置记录选定请求时，请考虑下列与性能相关的项目：</font></p>
<h5 style="margin: 0cm 0cm 0pt; line-height: 18pt"><span style="font-size: 12pt; font-family: 宋体">常规</span></h5>
<ul style="margin-top: 0cm" type="disc">
    <li style="margin: 0cm 0cm 0pt; line-height: 18pt; tab-stops: list 36.0pt"><span style="font-family: 宋体">要下推记录选定，必须在&#8220;报表选项&#8221;对话框（从&#8220;文件&#8221;菜单打开）中选中&#8220;为提高速度而使用索引或服务器&#8221;。 </span>
    <li style="margin: 0cm 0cm 0pt; line-height: 18pt; tab-stops: list 36.0pt"><span style="font-family: 宋体">在记录选定公式中，避免在非参数字段的字段上进行数据类型转换。</span></li>
</ul>
<p style="margin: 0cm 0cm 0pt 36pt; line-height: 18pt"><span style="font-family: 宋体">例如，避免使用 ToText( ) 将某数值数据库字段转换为字符串数据库字段。</span></p>
<ul style="margin-top: 0cm" type="disc">
    <li style="margin: 0cm 0cm 0pt; line-height: 18pt; tab-stops: list 36.0pt"><span style="font-family: 宋体">能够下推一些使用常量表达式的记录选定公式。</span></li>
</ul>
<h5 style="margin: 0cm 0cm 0pt; line-height: 18pt"><span style="font-size: 12pt; font-family: 宋体">PC 数据库</span></h5>
<ul style="margin-top: 0cm" type="disc">
    <li style="margin: 0cm 0cm 0pt; line-height: 18pt; tab-stops: list 36.0pt"><span style="font-family: 宋体">只能下推编有索引的字段上的记录选定。</span>
    <li style="margin: 0cm 0cm 0pt; line-height: 18pt; tab-stops: list 36.0pt"><span style="font-family: 宋体">只能下推 AND 子句（非 OR）。 </span></li>
</ul>
<h5 style="margin: 0cm 0cm 0pt; line-height: 18pt"><span style="font-size: 12pt; font-family: 宋体">SQL 数据库</span></h5>
<ul style="margin-top: 0cm" type="disc">
    <li style="margin: 0cm 0cm 0pt; line-height: 18pt; tab-stops: list 36.0pt"><span style="font-family: 宋体">能够下推索引字段或非索引字段上的记录选定。</span>
    <li style="margin: 0cm 0cm 0pt; line-height: 18pt; tab-stops: list 36.0pt"><span style="font-family: 宋体">如果使用索引字段，SQL 服务器响应速度将加快。 </span>
    <li style="margin: 0cm 0cm 0pt; line-height: 18pt; tab-stops: list 36.0pt"><span style="font-family: 宋体">能够下推 AND 和 OR 子句。 </span>
    <li style="margin: 0cm 0cm 0pt; line-height: 18pt; tab-stops: list 36.0pt"><span style="font-family: 宋体">可以下推包含某些类型的嵌入公式的记录选定公式。</span>
    <li style="margin: 0cm 0cm 0pt; line-height: 18pt; tab-stops: list 36.0pt"><span style="font-family: 宋体">应该合并 SQL 表达式字段以下推进行记录选定所需的公式计算。 </span>
    <li style="margin: 0cm 0cm 0pt; line-height: 18pt; tab-stops: list 36.0pt"><span style="font-family: 宋体">在&#8220;数据库&#8221;菜单上单击&#8220;显示 SQL 查询&#8221;，以查看将要发送到数据库服务器的 SQL。 </span></li>
</ul>
<h4 style="margin: auto 0cm"><span style="font-family: 宋体">编写高效记录选定公式的策略</span></h4>
<h5 style="margin: auto 0cm"><span style="font-size: 12pt; font-family: 宋体">考虑 1</span></h5>
<p style="margin: 0cm 0cm 0pt; line-height: 18pt"><span style="font-family: 宋体">任何完全用&#8220;选择专家&#8221;生成、而不是自己编写的记录选定公式，都可以下推。</span></p>
<h5 style="margin: auto 0cm"><span style="font-size: 12pt; font-family: 宋体">考虑 2</span></h5>
<p style="margin: 0cm 0cm 0pt; line-height: 18pt"><span style="font-family: 宋体">任何具有 <em>DataBaseField SupportedOperator ConstantOrParameterExpression</em> 形式的选定公式均可下推。</span></p>
<p style="margin: 0cm 0cm 0pt; line-height: 18pt"><span style="font-family: 宋体">当然，<em>DataBaseField</em> 只是一个数据库字段。<em>SupportedOperator</em> 是 =、&lt;&gt;、&lt;、&lt;=、&gt;、&gt;=、StartsWith、Like 或 In 之中的任何一个。</span></p>
<p style="margin: 0cm 0cm 0pt; line-height: 18pt"><em><span style="font-family: 宋体">ConstantOrParameterExpression </span></em><span style="font-family: 宋体">是涉及常量值、运算符、函数和参数字段的任何表达式。它不能包含变量、控制结构或参数字段以外的字段。根据其本身定义，常量表达式和参数表达式可以无须访问数据库而求得。</span></p>
<p style="margin: 0cm 0cm 0pt; line-height: 18pt"><em><span style="font-family: 宋体">注意： &nbsp;&nbsp;&nbsp;</span></em><span style="font-family: 宋体">常量或参数表达式的求值结果可以是简单值、区域值、数组值或一个区域值数组。这类表达式的举例如下：</span></p>
<p style="margin: 0cm 0cm 0pt; line-height: 18pt"><span style="font-family: 宋体">{?number parameter} - 3</span></p>
<p style="margin: 0cm 0cm 0pt; line-height: 18pt"><span style="font-family: 宋体">Year ({?run date})</span></p>
<p style="margin: 0cm 0cm 0pt; line-height: 18pt"><span style="font-family: 宋体">CurrentDate + 5</span></p>
<p style="margin: 0cm 0cm 0pt; line-height: 18pt"><span style="font-family: 宋体">DateDiff ("q", CurrentDate, CDate("Jan 1, 1996"))</span></p>
<p style="margin: 0cm 0cm 0pt; line-height: 18pt"><span style="font-family: 宋体">Month (Maximum ({?date range parameter}) + 15)</span></p>
<p style="margin: 0cm 0cm 0pt; line-height: 18pt"><span style="font-family: 宋体">["Canada", "Mexico", "USA", {?enter a country}]</span></p>
<p style="margin: 0cm 0cm 0pt; line-height: 18pt"><span style="font-family: 宋体">1000 To 5000</span></p>
<p style="margin: 0cm 0cm 0pt; line-height: 18pt"><span style="font-family: 宋体">[5000 To 10000, 20000 To 30000, 50000 To 60000]</span></p>
<p style="margin: 0cm 0cm 0pt; line-height: 18pt"><span style="font-family: 宋体">一个完整的示例：</span></p>
<p style="margin: 0cm 0cm 0pt; line-height: 18pt"><span style="font-family: 宋体">{订单.订单日期} &gt;= CurrentDate - 3</span></p>
<p style="margin: 0cm 0cm 0pt; line-height: 18pt"><span style="font-family: 宋体">该程序还可下推只包含布尔字段（不包含运算符和常量部分）的表达式。</span></p>
<p style="margin: 0cm 0cm 0pt; line-height: 18pt"><span style="font-family: 宋体">{订单.已发货}</span></p>
<p style="margin: 0cm 0cm 0pt; line-height: 18pt"><span style="font-family: 宋体">Not {订单.已发货}</span></p>
<h5 style="margin: auto 0cm"><span style="font-family: 宋体">考虑 3</span></h5>
<p style="margin: 0cm 0cm 0pt"><font face="Arial Unicode MS">IsNull (DataBaseField) 可以下推。</font></p>
<h5 style="margin: auto 0cm"><span style="font-family: 宋体">考虑 4</span></h5>
<p style="margin: 0cm 0cm 0pt; line-height: 18pt"><span style="font-family: 宋体">SqlExpression SupportedOperator ConstantOrParameterExpression 可以下推。例如，如果 </span><code><span style="font-size: 10pt; font-family: 宋体">{@ExtendedPrice} = (Quantity * Price)</span></code><span style="font-family: 宋体">，则选定公式 </span><code><span style="font-size: 10pt; font-family: 宋体">{@ExtendedPrice} &gt; 1000</span></code><span style="font-family: 宋体"> 不能下推。但是，如果用等价的 SQL 表达式代替 </span><code><span style="font-size: 10pt; font-family: 宋体">@ExtendedPrice</span></code><span style="font-family: 宋体">，则该选定公式可以下推。</span></p>
<h5 style="margin: auto 0cm"><span style="font-family: 宋体">考虑 5</span></h5>
<p style="margin: 0cm 0cm 0pt"><span style="font-family: 宋体">当使用遵循上述考虑因素编写的多个表达式时，将其用 AND 和 OR 分开，也可以使用 NOT。每种表达式可以有多个，并用括号确定优先级。例如：</span></p>
<p style="margin: 0cm 0cm 0pt"><span style="font-family: 宋体">{Orders.Order ID} &lt; Minimum({?number range}) Or</span></p>
<p style="margin: 0cm 0cm 0pt"><span style="font-family: 宋体">{订单.订单金额} &gt;= 1000</span></p>
<p style="margin: 0cm 0cm 0pt"><span style="font-family: 宋体">(IsNull({客户.地区}) Or</span></p>
<p style="margin: 0cm 0cm 0pt"><span style="font-family: 宋体">{客户.地区} = "BC") And</span></p>
<p style="margin: 0cm 0cm 0pt"><span style="font-family: 宋体">{客户.去年销售额} &gt; 2000</span></p>
<h4 style="margin: auto 0cm"><span style="font-family: 宋体">将参数字段合并到记录选定公式中</span></h4>
<p style="margin: 0cm 0cm 0pt; line-height: 18pt"><span style="font-family: 宋体">不要在每次打开报表时均显示报表的所有数据，可以创建参数字段提示用户指定希望查看的数据。为了减少从数据库服务器传输的数据量，请将这些参数字段直接合并到记录选定公式中。</span></p>
<p style="margin: 0cm 0cm 0pt; line-height: 18pt"><span style="font-family: 宋体">一般情况下，参数字段为用户提供交互性，用户响应参数提示以指定希望查看的数据。但是，通过将参数字段直接合并到记录选定公式中，将不仅提供交互性，而且减少了数据传输并改善了性能。</span></p>
<p style="margin: 0cm 0cm 0pt; line-height: 18pt"><span style="font-family: 宋体">可以通过&#8220;选择专家&#8221;或&#8220;记录选定公式工作室&#8221;向记录选定公式添加参数字段。当使用&#8220;记录选定公式工作室&#8221;时，可将参数字段和其他任何字段一样对待。</span></p>
<h4 style="margin: auto 0cm"><span style="font-family: 宋体">适时使用 SQL 表达式</span></h4>
<p style="margin: 0cm 0cm 0pt; text-indent: 24pt"><span style="font-size: 12pt; font-family: 宋体">为了维持最佳的报表处理速度，请避免在记录选定公式中使用公式（不管是 Crystal 语法还是 Basic 语法）。而应该用等效的 SQL 表达式字段替换原公式，然后将 SQL 表达式字段合并到记录选定公式中。这样做将大大提高您的记录选定被下推到服务器的机会。</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 24pt"><span style="font-size: 12pt; font-family: 宋体">另外，应避免对公式字段进行排序、分组或总计（不管是 Crystal 语法还是 Basic 语法）。而应该用等效的 SQL 表达式字段替换原公式字段，然后在 SQL 表达式字段上进行排序、分组或总计。这样做也将大大提高在服务器上执行处理的机会。</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 24pt"><span style="font-size: 12pt; font-family: 宋体">最后，如果数据库支持 Case 逻辑，并且报表需要摘要 If-Then-Else 公式计算，请用 SQL 表达式字段替换该公式。</span></p>
<h3 style="margin: 13pt 0cm"><span style="font-family: 宋体"><font size="5">改进分组、排序和总计</font></span></h3>
<h4 style="margin: auto 0cm"><font face="Arial Unicode MS">在服务器上执行分组</font></h4>
<p style="margin: 0cm 0cm 0pt"><span style="font-family: 宋体">当通过 Web 从活动数据中进行实时制表时，使用选项&#8220;在服务器上执行分组&#8221;可减少从数据库服务器传输的数据量。使用此选项后，大部分数据处理工作都卸载到数据库服务器，并且开始时仅读入一个数据子集。仅当您在报表中进行深化时才从数据库返回详细数据。</span></p>
<p style="margin: 0cm 0cm 0pt"><em><span style="font-family: 宋体">注意： &nbsp;&nbsp;&nbsp;</span></em><span style="font-family: 宋体">服务器端处理仅适用于那些基于 SQL 数据源的经过排序和分组的报表。</span></p>
<h6><span style="font-weight: normal; font-size: 12pt; color: red; font-family: 宋体">启用服务器端处理</span></h6>
<ol type="1">
    <li style="margin: 0cm 0cm 0pt; tab-stops: list 36.0pt"><span style="font-size: 12pt; font-family: 宋体">在<strong>&#8220;文件&#8221;</strong>菜单中，单击<strong>&#8220;报表选项&#8221;</strong>。</span></li>
</ol>
<ol type="1" start="2">
    <li style="margin: 0cm 0cm 0pt; tab-stops: list 36.0pt"><span style="font-size: 12pt; font-family: 宋体">选择&#8220;报表选项&#8221;对话框中的<strong>&#8220;在服务器上执行分组&#8221;</strong>。 </span></li>
</ol>
<p style="margin: auto 0cm auto 36pt"><span style="font-family: 宋体">如果没有选择&#8220;为提高速度而使用索引或服务器&#8221;，则该复选框是不活动的。</span></p>
<p style="margin: auto 0cm auto 36pt"><em><span style="font-family: 宋体">提示： &nbsp;&nbsp;&nbsp;</span></em><span style="font-family: 宋体">当选中&#8220;为提高速度而使用索引或服务器&#8221;后，您可以迅速从&#8220;数据库&#8221;菜单启用&#8220;在服务器上执行分组&#8221;。</span></p>
<ol type="1" start="3">
    <li style="margin: 0cm 0cm 0pt; tab-stops: list 36.0pt"><span style="font-size: 12pt; font-family: 宋体">单击<strong>&#8220;确定&#8221;</strong>。</span></li>
</ol>
<h4 style="margin: auto 0cm"><span style="font-family: 宋体">将 SQL 表达式用于分组、排序和总计</span></h4>
<h4 style="margin: auto 0cm"><span style="font-family: 宋体">将 SQL 表达式用于 Case 逻辑</span></h4>
<p style="margin: 0cm 0cm 0pt"><span style="font-family: 宋体">如果数据库支持 Case 逻辑，并且报表需要对 If-Then-Else 公式计算进行汇总，请用 SQL 表达式字段替换该公式。在此类情况下，SQL 表达式字段使 Crystal Reports 可以在服务器上执行报表的分组。</span></p>
<p style="margin: 0cm 0cm 0pt"><span style="font-family: 宋体">例如，假设您正在从支持 Case 逻辑的 MS SQL Server 7 数据库中制作报表。您需要在报表中包含一个 If-Then-Else 计算，并且对报表中每个组的计算进行汇总。通过使用如下形式的 SQL 表达式字段执行计算，您就利用了数据库的能力来处理 Case 逻辑：</span></p>
<p style="margin: 0cm 0cm 0pt"><span style="font-family: 宋体">CASE DatabaseTable."DatabaseField"</span></p>
<p style="margin: 0cm 0cm 0pt"><span style="font-family: 宋体">WHEN 'SpecifiedValue' THEN Calculation1</span></p>
<p style="margin: 0cm 0cm 0pt"><span style="font-family: 宋体">ELSE Calculation2</span></p>
<p style="margin: 0cm 0cm 0pt"><span style="font-family: 宋体">END</span></p>
<p style="margin: 0cm 0cm 0pt"><span style="font-family: 宋体">如果记录的 DatabaseField 值等于 SpecifiedValue 值，则执行 Calculation1；对于所有其他记录则执行 Calculation2。通过包含 SQL 表达式字段，您利用了数据库服务器的能力来处理 Case 逻辑。甚至当您在报表的其他地方对该 SQL 表达式字段进行汇总时，报表的分组也将随之在服务器上进行。</span></p>
<h4 style="margin: auto 0cm"><span style="font-family: 宋体">在可能的位置插入汇总和运行总计字段</span></h4>
<p style="margin: 0cm 0cm 0pt"><span style="font-family: 宋体">可能的情况下，应避免创建包含全局变量的公式来计算汇总或运行总计。</span></p>
<p style="margin: 0cm 0cm 0pt"><span style="font-family: 宋体">相反，应通过单击&#8220;插入&#8221;菜单然后选择相应的命令（小计、总计和汇总）来创建汇总。通过打开&#8220;字段资源管理器&#8221;，右击&#8220;运行总计字段&#8221;，然后从快捷菜单中选择&#8220;新建&#8221;来创建运行总计字段。</span></p>
<p style="margin: 0cm 0cm 0pt 18pt; line-height: 18pt"><span style="font-family: 宋体">&nbsp;</span></p>
<img src ="http://www.blogjava.net/TonyZhang/aggbug/189011.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/TonyZhang/" target="_blank">张亦飞</a> 2008-03-27 15:09 <a href="http://www.blogjava.net/TonyZhang/articles/189011.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于在水晶报表中用JDBC方式连接MySQL数据库</title><link>http://www.blogjava.net/TonyZhang/articles/189000.html</link><dc:creator>张亦飞</dc:creator><author>张亦飞</author><pubDate>Thu, 27 Mar 2008 06:34:00 GMT</pubDate><guid>http://www.blogjava.net/TonyZhang/articles/189000.html</guid><wfw:comment>http://www.blogjava.net/TonyZhang/comments/189000.html</wfw:comment><comments>http://www.blogjava.net/TonyZhang/articles/189000.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/TonyZhang/comments/commentRss/189000.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/TonyZhang/services/trackbacks/189000.html</trackback:ping><description><![CDATA[在水晶报表11中用JDBC方式连接MySQL数据库时,<br />
提示:JDBC驱动程序包找不到.<br />
解决方法:<br />
&nbsp;&nbsp;&nbsp;&nbsp;1、把驱动程序包拷贝到C:\Program Files\Common Files\Business Objects\3.0\java\lib目录下<br />
&nbsp;&nbsp;&nbsp;&nbsp;2、修改C:\Program Files\Common Files\Business Objects\3.0\java\CRConfig.xml文件.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 将此驱动程序包的全路径名添加到&lt;Classpath&gt;&lt;/Classpath&gt;标记项中.<br />
<br />
附:<br />
&nbsp;&nbsp;&nbsp;&nbsp;CRConfig.xml文件中各标记的作用.<br />
<table class="content" cellspacing="0" border="1">
    <tbody>
        <tr>
            <th class="content"><a name="60063"></a><strong class="cellheading">Tag Name</strong></th>
            <th class="content"><a name="60065"></a><strong class="cellheading">Description</strong></th>
        </tr>
        <tr>
            <td class="content" valign="top" align="left">
            <p><a name="67983"></a>reportlocation</p>
            </td>
            <td class="content" valign="top" align="left">
            <p><a name="67997"></a>When creating a report source using the Java Reporting Component, the report's path can be specified by using either a relative or absolute path.</p>
            <p><a name="67999"></a>When using relative paths, the path is specified relative to the location of the Java Reporting Component on the web server. For example, <code>../reports/sample.rpt resolves to /WEB<nobr><nobr>-I</nobr></nobr>NF/reports/sample.rpt</code> where the Java Reporting Component JAR file is in /WEB<nobr><nobr>-I</nobr></nobr>NF/lib. The value of the <var>reportlocation</var> tag becomes the new root directory that is used to determine the location of a report. If the <var>reportlocation</var> tag is not present, the Java Reporting Component uses absolute paths.</p>
            <p><a name="68001"></a>When using absolute paths, the Java Reporting Component will also look in the location of your web application's resources. For example, you can place your report into the classes folder and then specify the name of the report directly in your JSP file (with no path). In this case, the Java Reporting Component will find the report.</p>
            <p><a name="68003"></a>To use absolute paths, ensure that the <code><font style="background-color: #335ea8" color="#ffffff">CRConfig</font>.xml</code> file does not contain a <var>reportlocation</var> tag.</p>
            </td>
        </tr>
        <tr>
            <td class="content" valign="top" align="left">
            <p><a name="67987"></a>timeout</p>
            </td>
            <td class="content" valign="top" align="left">
            <p><a name="68080"></a>The time out interval determines (in minutes) when inactive report sources are disposed. By default, the <var>timeout</var> interval is 10 minutes. You can configure the Java Reporting Component to have no <var>timeout</var> by setting the value to 0.</p>
            <p><a name="68082"></a>The <var>timeout</var> interval only applies to inactive reports—reports that are being processed are not timed out as a result of exceeding this value. Each time a report source request is successfully completed, the <var>timeout</var> timer is reset. If a report source is not used within the <var>timeout</var> interval, it is disposed and its resources are made available to other processes.</p>
            </td>
        </tr>
        <tr>
            <td class="content" colspan="2">
            <p><a name="68160"></a><strong class="bold">ExternalFunctionLibraryClassNames</strong></p>
            </td>
        </tr>
        <tr>
            <td class="content" valign="top" align="left">
            <p><a name="68173"></a>classname</p>
            </td>
            <td class="content" valign="top" align="left">
            <p><a name="68175"></a>The <var>classname</var> tag value is the fully qualified classname to the first Java function library.</p>
            <p><a name="68188"></a>Repeat this tag for each Java function library that you want to reference.</p>
            </td>
        </tr>
        <tr>
            <td class="content" valign="top" align="left">
            <p><a name="68247"></a>keycode</p>
            </td>
            <td class="content" valign="top" align="left">
            <p><a name="68183"></a>The <var>keycode</var> tag specifies the key code used when running the Java Reporting Component.</p>
            </td>
        </tr>
        <tr>
            <td class="content" colspan="2">
            <p><a name="68256"></a><strong class="bold">DataDriverCommon</strong></p>
            </td>
        </tr>
        <tr>
            <td class="content" valign="top" align="left">
            <p><a name="60067"></a>JavaDir</p>
            </td>
            <td class="content" valign="top" align="left">
            <p><a name="60069"></a>The <var>JavaDir</var> tag contains the directory of your Java executable. If you have multiple versions of the Java Runtime Environment installed, this tag points to the version that you want to use; for example:</p>
            <p><a name="60070"></a><code>&lt;JavaDir&gt;C:\apps\j2sdk1.4.2\bin&lt;/JavaDir&gt;</code></p>
            <p><a name="60071"></a>Alternatively, the path information may be configured as a user or system environment variable. In this case, if JAVA_HOME is defined as a variable, you can use <code>${JAVA_HOME}</code> as in this example:</p>
            <p><a name="60072"></a><code>&lt;JavaDir&gt;${JAVA_HOME}\bin&lt;/JavaDir&gt;</code></p>
            </td>
        </tr>
        <tr>
            <td class="content" valign="top" align="left">
            <p><a name="60074"></a>Classpath</p>
            </td>
            <td class="content" valign="top" align="left">
            <p><a name="60076"></a>The <var>Classpath</var> tag contains a list of the classpaths to the following .jar files:</p>
            <p><a name="60077"></a><code>CRDBJavaServer.jar</code></p>
            <p><a name="60078"></a>All database<nobr><nobr>-s</nobr></nobr>pecific JDBC driver .jar files</p>
            <p><a name="60079"></a>For the Oracle JDBC driver, for example, classpath to <code>ojdbc14.jar</code> is required.</p>
            <p><a name="60080"></a>Alternatively, the classpath information may be configured as a user or system environment variable. If this variable is not defined, it is equivalent to <code>&lt;Classpath&gt;${CLASSPATH}&lt;/Classpath&gt;</code>.</p>
            <p><a name="60081"></a>Environment variables can also be included in a mixed path, as shown in this example:</p>
            <p><a name="60082"></a><code>&lt;Classpath&gt;c:\java\lib\xerces.jar;${CommonProgramFiles}"/Crystal Decisions/2.5/bin/CRDBJavaServer.jar";${CLASSPATH}&lt;/Classpath&gt;</code></p>
            <p><a name="60083"></a>When using classpaths with long folder and/or file names that contain spaces, ensure that they are enclosed within quotation marks. For example, <code>"C:\Program Files\Common Files\Crystal Decisions\2.5\bin\CRDBJavaServer.jar"</code>.</p>
            </td>
        </tr>
        <tr>
            <td class="content" valign="top" align="left">
            <p><a name="60085"></a>IORFileLocation</p>
            </td>
            <td class="content" valign="top" align="left">
            <p><a name="60087"></a>The <var>IORFileLocation</var> tag provides a temporary directory for use by the JDBC driver. This location must exist and be accessible by the system; otherwise, the driver will fail to work.</p>
            </td>
        </tr>
        <tr>
            <td class="content" valign="top" align="left">
            <p><a name="60089"></a>JavaServerTimeout</p>
            </td>
            <td class="content" valign="top" align="left">
            <p><a name="60091"></a>The <var>JavaServerTimeout</var> tag specifies the maximum amount of time your Java server will continue processing your request until it shuts itself down. The default value is 1800 seconds (30 minutes).</p>
            </td>
        </tr>
        <tr>
            <td class="content" valign="top" align="left">
            <p><a name="60093"></a>JVMMaxHeap</p>
            </td>
            <td class="content" valign="top" align="left">
            <p><a name="60095"></a>The <var>JVMMaxHeap</var> tag specifies the maximum amount of heap space that the JVM can allocate for running the Java server. This tag is set to 64 MB of heap by default. Change this number to a higher value if you need to process a large amount of data.</p>
            </td>
        </tr>
        <tr>
            <td class="content" valign="top" align="left">
            <p><a name="60097"></a>JVMMinHeap</p>
            </td>
            <td class="content" valign="top" align="left">
            <p><a name="60099"></a>The <var>JVMMinHeap</var> tag specifies the minimum amount of heap space that the JVM can allocate for running the Java server. This tag is set to 32 MB of heap by default.</p>
            </td>
        </tr>
        <tr>
            <td class="content" valign="top" align="left">
            <p><a name="68423"></a>NumberOfThreads</p>
            </td>
            <td class="content" valign="top" align="left">
            <p><a name="68425"></a>The <var>NumberOfThreads</var> tag specifies the number of concurrent instances that can be run. This tag is set to 50 by default.</p>
            </td>
        </tr>
        <tr>
            <td class="content" colspan="2">
            <p><a name="68427"></a><strong class="bold">JDBC</strong></p>
            </td>
        </tr>
        <tr>
            <td class="content" valign="top" align="left">
            <p><a name="60101"></a>CacheRowSetSize</p>
            </td>
            <td class="content" valign="top" align="left">
            <p><a name="60103"></a>The <var>CacheRowSetSize</var> tag specifies the number of rows to cache in memory. This tag is set to 100 rows by default.</p>
            </td>
        </tr>
        <tr>
            <td class="content" valign="top" align="left">
            <p><a name="60105"></a>JDBCURL</p>
            </td>
            <td class="content" valign="top" align="left">
            <p><a name="60107"></a>The <var>JDBCURL</var> tag is the default JDBC connection URL that will be displayed in Crystal Reports when you create a new JDBC data connection. The exact format of the connection URL is specific to the database driver and is provided by the database driver vendor.</p>
            <p><a name="60111"></a>For example, the connection URL for the Oracle JDBC driver is:</p>
            <p><a name="60112"></a><code>jdbc:oracle:thin:@&lt;hostname&gt;:&lt;port&gt;:&lt;sid&gt;</code></p>
            <p><a name="60113"></a>Where:</p>
            <ul type="disc">
                <li><code>&lt;hostname&gt;</code> is the TCP/IP address or TCP/IP host name of the server to which you are connecting.
                <li><code>&lt;port&gt;</code> is the number of the TCP/IP port.
                <li><code>&lt;sid&gt;</code> is the Oracle database ID.</li>
            </ul>
            </td>
        </tr>
        <tr>
            <td class="content" valign="top" align="left">
            <p><a name="68479"></a>JDBCClassName</p>
            </td>
            <td class="content" valign="top" align="left">
            <p><a name="68525"></a>The <var>JDBCClassName</var> is the default full classname of the JDBC driver that will be displayed in Crystal Reports when creating a new JDBC data connection.</p>
            <p><a name="68529"></a>For example, the full classname of the Oracle JDBC driver is:</p>
            <p><a name="68530"></a><code>oracle.jdbc.driver.OracleDriver</code></p>
            </td>
        </tr>
        <tr>
            <td class="content" valign="top" align="left">
            <p><a name="60125"></a>JDBCUserName</p>
            </td>
            <td class="content" valign="top" align="left">
            <p><a name="60127"></a>The <var>JDBCUserName</var> is the default user ID that will be displayed in Crystal Reports when creating a new JDBC data connection. The JDBC driver uses the user ID to connect to the database.</p>
            </td>
        </tr>
        <tr>
            <td class="content" valign="top" align="left">
            <p><a name="68489"></a>JNDIURL</p>
            </td>
            <td class="content" valign="top" align="left">
            <p><a name="68491"></a>The <var>JNDIURL</var> tag is the default JNDI connection URL that will be displayed in Crystal Reports when you create a new JNDI data connection. The exact format of the connection URL is specific to the database driver and is provided by the database driver vendor.</p>
            </td>
        </tr>
        <tr>
            <td class="content" valign="top" align="left">
            <p><a name="60148"></a>JNDIConnectionFactory</p>
            </td>
            <td class="content" valign="top" align="left">
            <p><a name="60150"></a>The <var>JNDIConnectionFactory</var> tag is the name of the connection factory of the JNDI server. For WebLogic, it is <code>weblogic.jndi.WLInitialContextFactory</code>. For WebSphere, it is <code>com.ibm.websphere.naming.WsnInitialContextFactory</code>.</p>
            </td>
        </tr>
        <tr>
            <td class="content" valign="top" align="left">
            <p><a name="60152"></a>JNDIInitContext</p>
            </td>
            <td class="content" valign="top" align="left">
            <p><a name="60154"></a>The <var>JNDIInitContext</var> tag is the starting point for where to look for JNDI context on the JNDI server. For example, you can set <code>JNDIInitContext=/</code> for WebLogic. The tag starts to search from the top of the tree. You can set this tag to cell/nodes/localhost/servers/server1/jdbc for WebSphere if you created the connection in this node.</p>
            </td>
        </tr>
        <tr>
            <td class="content" valign="top" align="left">
            <p><a name="68548"></a>JNDIUserName</p>
            </td>
            <td class="content" valign="top" align="left">
            <p><a name="68550"></a>The <var>JNDIUserName</var> is the default user ID that will be displayed in Crystal Reports when creating a new JNDI data connection. The JDBC driver uses the user ID to connect to the database.</p>
            </td>
        </tr>
        <tr>
            <td class="content" colspan="2">
            <p><a name="68581"></a><strong class="bold">GenericJDBCDriver</strong></p>
            </td>
        </tr>
        <tr>
            <td class="content" valign="top" align="left">
            <p><a name="68588"></a>Option</p>
            </td>
            <td class="content" valign="top" align="left">
            <p><a name="68590"></a>The <var>Option</var> tag specifies whether a generic driver is used. Valid values are Yes and No.</p>
            </td>
        </tr>
        <tr>
            <td class="content" valign="top" align="left">
            <p><a name="68592"></a>DatabaseStructure</p>
            </td>
            <td class="content" valign="top" align="left">
            <p><a name="68594"></a>The <var>DatabaseStructure</var> tag describes the data structure of the specific database whose driver is being emulated.</p>
            </td>
        </tr>
        <tr>
            <td class="content" valign="top" align="left">
            <p><a name="68596"></a>StoredProcType</p>
            </td>
            <td class="content" valign="top" align="left">
            <p><a name="68598"></a>The <var>StoredProcType</var> tag describes the type of Stored Procedure that the database uses.</p>
            </td>
        </tr>
        <tr>
            <td class="content" valign="top" align="left">
            <p><a name="60156"></a>LogonStyle</p>
            </td>
            <td class="content" valign="top" align="left">
            <p><a name="60158"></a>If you are using a generic JDBC driver instead of a specific driver, the <var>LogonStyle</var> tag specifies the driver whose logon style you want to emulate. Valid values are <code>DB2</code>, <code>SQLServer</code>, and <code>Oracle</code>.</p>
            </td>
        </tr>
        <tr>
            <td class="content" colspan="2">
            <p><a name="68634"></a><strong class="bold">XML</strong></p>
            </td>
        </tr>
        <tr>
            <td class="content" valign="top" align="left">
            <p><a name="68638"></a>CacheRowSetSize</p>
            </td>
            <td class="content" valign="top" align="left">
            <p><a name="69062"></a>The <var>CacheRowSetSize</var> tag specifies the number of rows to cache in memory. This tag is set to 100 rows by default.</p>
            </td>
        </tr>
        <tr>
            <td class="content" valign="top" align="left">
            <p><a name="60160"></a>PreReadNBytes</p>
            </td>
            <td class="content" valign="top" align="left">
            <p><a name="60162"></a>The <var>PreReadNBytes</var> tag determines the number of bytes to read from the XML doc for each logical read. This parameter is used to improve efficiency and to avoid reading one byte at a time; it is equivalent to block read size. The size should not be too small (at least 4096). Setting the value too high affects memory usage. This parameter is set to 4096 by default.</p>
            </td>
        </tr>
        <tr>
            <td class="content" valign="top" align="left">
            <p><a name="60164"></a>XMLLocalURL</p>
            </td>
            <td class="content" valign="top" align="left">
            <p><a name="60166"></a>The <var>XMLLocalURL</var> tag is the default connection URL for a local XML file. This default will be displayed in Crystal Reports when you create a new XML data connection.</p>
            </td>
        </tr>
        <tr>
            <td class="content" valign="top" align="left">
            <p><a name="60171"></a>SchemaLocalURL</p>
            </td>
            <td class="content" valign="top" align="left">
            <p><a name="60173"></a>The <var>SchemaLocalURL</var> tag is the default connection URL for a local schema file. This default will be displayed in Crystal Reports when you create a new XML data connection.</p>
            </td>
        </tr>
        <tr>
            <td class="content" valign="top" align="left">
            <p><a name="60178"></a>XMLHttpURL</p>
            </td>
            <td class="content" valign="top" align="left">
            <p><a name="60180"></a>The <var>XMLHttpURL</var> tag is the default connection URL for an HTTP XML file. This default will be displayed in Crystal Reports when you create a new XML data connection using HTTP(S).</p>
            </td>
        </tr>
        <tr>
            <td class="content" valign="top" align="left">
            <p><a name="60185"></a>SchemaHttpURL</p>
            </td>
            <td class="content" valign="top" align="left">
            <p><a name="60187"></a>The <var>SchemaHttpURL</var> tag is the default connection URL for an HTTP schema file. This default will be displayed in Crystal Reports when you create a new XML data connection using HTTP(S).</p>
            </td>
        </tr>
        <tr>
            <td class="content" colspan="2">
            <p><a name="68742"></a><strong class="bold">JavaBeans</strong></p>
            </td>
        </tr>
        <tr>
            <td class="content" valign="top" align="left">
            <p><a name="68749"></a>CacheRowSetSize</p>
            </td>
            <td class="content" valign="top" align="left">
            <p><a name="69068"></a>The <var>CacheRowSetSize</var> tag specifies the number of rows to cache in memory. This tag is set to 100 rows by default.</p>
            </td>
        </tr>
        <tr>
            <td class="content" valign="top" align="left">
            <p><a name="68734"></a>JavaBeansClassPath</p>
            </td>
            <td class="content" valign="top" align="left">
            <p><a name="69078"></a>The <var>JavaBeansClassPath</var> tag value is the fully qualified classname to the Java Bean.</p>
            </td>
        </tr>
    </tbody>
</table>
<img src ="http://www.blogjava.net/TonyZhang/aggbug/189000.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/TonyZhang/" target="_blank">张亦飞</a> 2008-03-27 14:34 <a href="http://www.blogjava.net/TonyZhang/articles/189000.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>