<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.0.4" -->
<rss version="2.0" 
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>

<channel>
	<title>解惑</title>
	<link>http://www.jiehoo.com</link>
	<description>解己之惑，解人之惑</description>
	<pubDate>Wed, 30 Apr 2008 05:03:02 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.0.4</generator>
	<language>en</language>
			<item>
		<title>问题多多</title>
		<link>http://www.jiehoo.com/%e9%97%ae%e9%a2%98%e5%a4%9a%e5%a4%9a.htm</link>
		<comments>http://www.jiehoo.com/%e9%97%ae%e9%a2%98%e5%a4%9a%e5%a4%9a.htm#comments</comments>
		<pubDate>Wed, 18 Apr 2007 07:52:21 +0000</pubDate>
		<dc:creator>Cherami</dc:creator>
		
	<category>Crystal Report</category><category>Crystal Report</category><category>ODBC</category><category>Oracle</category>
		<guid isPermaLink="false">http://www.jiehoo.com/%e9%97%ae%e9%a2%98%e5%a4%9a%e5%a4%9a.htm</guid>
		<description><![CDATA[刚刚说到我们要迁移数据库，所以我就试验了下使用ODBC连接数据库，配置完成以后，可以连接，但是在选择表的时候有问题，里面只列出了oracle的一些包，没有列出任何一个表或者视图，加了一个Command，随便写了一个SQL，从我们的一个表里面取全部数据（select * from tablename），可以正常过，到了报表设计器里面可以看到Command列出的字段确实是SQL选择的那个表的字段，但是把字段添加到报表中，然后预览的时候设计器就死掉自动退出了。
打开Business View Manager，添加数据源，从那个里面可以正常的列出数据库的表和视图。
看来Crystal Report的代码重用没有做好，一些地方可以正常工作，但是另外的地方就不能正常工作了。
更新：
找到解决方案了，选择那个ODBC连接，右键打开菜单选择Options，在Data Explorer中把Stored procedures去掉就可以了。

	
	作者: 解惑/Cherami
	原载: 问题多多
	版权所有。转载时必须以链接形式注明作者和原始出处及本声明。
	分类: Crystal Report]]></description>
			<content:encoded><![CDATA[<p class='fp'>刚刚说到我们要<a href="http://www.jiehoo.com/%e6%95%b0%e6%8d%ae%e5%ba%93%e5%8f%af%e7%a7%bb%e6%a4%8d%e6%80%a7%e9%87%8d%e8%a6%81%e5%90%97%ef%bc%9f.htm">迁移数据库</a>，所以我就试验了下使用ODBC连接数据库，配置完成以后，可以连接，但是在选择表的时候有问题，里面只列出了oracle的一些包，没有列出任何一个表或者视图，加了一个Command，随便写了一个SQL，从我们的一个表里面取全部数据（select * from tablename），可以正常过，到了报表设计器里面可以看到Command列出的字段确实是SQL选择的那个表的字段，但是把字段添加到报表中，然后预览的时候设计器就死掉自动退出了。</p>
<p>打开Business View Manager，添加数据源，从那个里面可以正常的列出数据库的表和视图。</p>
<p>看来Crystal Report的代码重用没有做好，一些地方可以正常工作，但是另外的地方就不能正常工作了。</p>
<p>更新：<br />
找到解决方案了，选择那个ODBC连接，右键打开菜单选择Options，在Data Explorer中把Stored procedures去掉就可以了。
</p>
	<br />
	作者: <a href="http://www.jiehoo.com">解惑/Cherami</a><br />
	原载: <a href="http://www.jiehoo.com/%e9%97%ae%e9%a2%98%e5%a4%9a%e5%a4%9a.htm">问题多多</a><br />
	<strong>版权所有。转载时必须以链接形式注明作者和原始出处及本声明。</strong><br />
	分类: <a href="http://www.jiehoo.com/category/crystal-report/" title="显示Crystal Report的所有文章" rel="category tag">Crystal Report</a><br />]]></content:encoded>
			<wfw:commentRSS>http://www.jiehoo.com/%e9%97%ae%e9%a2%98%e5%a4%9a%e5%a4%9a.htm/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>数据库可移植性重要吗？</title>
		<link>http://www.jiehoo.com/%e6%95%b0%e6%8d%ae%e5%ba%93%e5%8f%af%e7%a7%bb%e6%a4%8d%e6%80%a7%e9%87%8d%e8%a6%81%e5%90%97%ef%bc%9f.htm</link>
		<comments>http://www.jiehoo.com/%e6%95%b0%e6%8d%ae%e5%ba%93%e5%8f%af%e7%a7%bb%e6%a4%8d%e6%80%a7%e9%87%8d%e8%a6%81%e5%90%97%ef%bc%9f.htm#comments</comments>
		<pubDate>Wed, 18 Apr 2007 06:30:31 +0000</pubDate>
		<dc:creator>Cherami</dc:creator>
		
	<category>Java</category>
	<category>Crystal Report</category><category>可移植性</category><category>数据库</category>
		<guid isPermaLink="false">http://www.jiehoo.com/%e6%95%b0%e6%8d%ae%e5%ba%93%e5%8f%af%e7%a7%bb%e6%a4%8d%e6%80%a7%e9%87%8d%e8%a6%81%e5%90%97%ef%bc%9f.htm</guid>
		<description><![CDATA[对于大部分应用而言，数据库可移植性可能不太重要，而一些完全使用ORM的应用可能也问题不大，但是一旦需求来了，它就变得非常的重要，现在我们就遇到了这样的需求。
我们原来一直使用Oracle，也从来没有想到要更换数据库类型，所以我们一直心安理得的使用各种Oracle优化技巧来优化我们的SQL（我们的系统的性能要求也比较高），现在有个新客户，要求使用SQL Server，这下就麻烦大了，初步估计需要5000个小时！
这个变化也影响到我们做的水晶报表，原来没有考虑数据库迁移，所以选择数据库连接的时候直接选择的就是Oracle服务器，而不是建一个ODBC的数据源，而水晶报表的数据库配置是不能随便修改的，不说更换数据库类型，就是更换一下服务名都不行。
PS：据说微软愿意为我们的数据库迁移支付一部分的成本，呵呵，果然是财大气粗啊。

	
	作者: 解惑/Cherami
	原载: 数据库可移植性重要吗？
	版权所有。转载时必须以链接形式注明作者和原始出处及本声明。
	分类: Java,  Crystal Report]]></description>
			<content:encoded><![CDATA[<p class='fp'>对于大部分应用而言，数据库可移植性可能不太重要，而一些完全使用ORM的应用可能也问题不大，但是一旦需求来了，它就变得非常的重要，现在我们就遇到了这样的需求。<img src="/FCKeditor/editor/images/smiley/msn/whatchutalkingabout_smile.gif" alt="" /><br />
我们原来一直使用Oracle，也从来没有想到要更换数据库类型，所以我们一直心安理得的使用各种Oracle优化技巧来优化我们的SQL（我们的系统的性能要求也比较高），现在有个新客户，要求使用SQL Server，这下就麻烦大了，初步估计需要5000个小时！<img src="/FCKeditor/editor/images/smiley/msn/tounge_smile.gif" alt="" /><br />
这个变化也影响到我们做的水晶报表，原来没有考虑数据库迁移，所以选择数据库连接的时候直接选择的就是Oracle服务器，而不是建一个ODBC的数据源，而水晶报表的数据库配置是不能随便修改的，不说更换数据库类型，就是更换一下服务名都不行。</p>
<p>PS：据说微软愿意为我们的数据库迁移支付一部分的成本，呵呵，果然是财大气粗啊。
</p>
	<br />
	作者: <a href="http://www.jiehoo.com">解惑/Cherami</a><br />
	原载: <a href="http://www.jiehoo.com/%e6%95%b0%e6%8d%ae%e5%ba%93%e5%8f%af%e7%a7%bb%e6%a4%8d%e6%80%a7%e9%87%8d%e8%a6%81%e5%90%97%ef%bc%9f.htm">数据库可移植性重要吗？</a><br />
	<strong>版权所有。转载时必须以链接形式注明作者和原始出处及本声明。</strong><br />
	分类: <a href="http://www.jiehoo.com/category/java/" title="显示Java的所有文章" rel="category tag">Java</a>,  <a href="http://www.jiehoo.com/category/crystal-report/" title="显示Crystal Report的所有文章" rel="category tag">Crystal Report</a><br />]]></content:encoded>
			<wfw:commentRSS>http://www.jiehoo.com/%e6%95%b0%e6%8d%ae%e5%ba%93%e5%8f%af%e7%a7%bb%e6%a4%8d%e6%80%a7%e9%87%8d%e8%a6%81%e5%90%97%ef%bc%9f.htm/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Command中不能添加多值的参数</title>
		<link>http://www.jiehoo.com/command%e4%b8%ad%e4%b8%8d%e8%83%bd%e6%b7%bb%e5%8a%a0%e5%a4%9a%e5%80%bc%e7%9a%84%e5%8f%82%e6%95%b0.htm</link>
		<comments>http://www.jiehoo.com/command%e4%b8%ad%e4%b8%8d%e8%83%bd%e6%b7%bb%e5%8a%a0%e5%a4%9a%e5%80%bc%e7%9a%84%e5%8f%82%e6%95%b0.htm#comments</comments>
		<pubDate>Tue, 17 Apr 2007 03:33:02 +0000</pubDate>
		<dc:creator>Cherami</dc:creator>
		
	<category>Crystal Report</category><category>Command</category><category>Crystal Report</category><category>值</category><category>参数</category>
		<guid isPermaLink="false">http://www.jiehoo.com/command%e4%b8%ad%e4%b8%8d%e8%83%bd%e6%b7%bb%e5%8a%a0%e5%a4%9a%e5%80%bc%e7%9a%84%e5%8f%82%e6%95%b0.htm</guid>
		<description><![CDATA[有一个报表要进行统计，但是按照原来的做法都不太好实现，后来没有办法使用Command来获取数据（说白了就是直接写SQL），但是在Command的界面里面添加的参数的值不能是多选的，但是有一个解决方法就是把参数转换为一个字符串。
一个例子就是Command里面使用到多值参数的时候，就创建一个字符串参数，然后写SQL的时候就设置为:
xxx in ({?parameter})
假设外面的真正的参数是params，那么可以写一个Formula把param转换为那个字符串：
Local StringVar result:=&#34;&#34;;
Local NumberVar i;
for i:=1 to count({?params}) do (
if i&#60;count({?params}) then
result := result &#38; toText({?params}[i],&#34;0&#34;) &#38; &#34;,&#34;
else
result := result &#38; toText({?params}[i],&#34;0&#34;)
);
result
这样就可以解决Command里面不能使用多值参数的问题了。

	
	作者: 解惑/Cherami
	原载: Command中不能添加多值的参数
	版权所有。转载时必须以链接形式注明作者和原始出处及本声明。
	分类: Crystal Report]]></description>
			<content:encoded><![CDATA[<p class='fp'>有一个报表要进行统计，但是按照原来的做法都不太好实现，后来没有办法使用Command来获取数据（说白了就是直接写SQL），但是在Command的界面里面添加的参数的值不能是多选的，但是有一个解决方法就是把参数转换为一个字符串。<br />
一个例子就是Command里面使用到多值参数的时候，就创建一个字符串参数，然后写SQL的时候就设置为:<br />
xxx in ({?parameter})<br />
假设外面的真正的参数是params，那么可以写一个Formula把param转换为那个字符串：<br />
Local StringVar result:=&quot;&quot;;<br />
Local NumberVar i;<br />
for i:=1 to count({?params}) do (<br />
if i&lt;count({?params}) then<br />
result := result &amp; toText({?params}[i],&quot;0&quot;) &amp; &quot;,&quot;<br />
else<br />
result := result &amp; toText({?params}[i],&quot;0&quot;)<br />
);<br />
result</p>
<p>这样就可以解决Command里面不能使用多值参数的问题了。
</p>
	<br />
	作者: <a href="http://www.jiehoo.com">解惑/Cherami</a><br />
	原载: <a href="http://www.jiehoo.com/command%e4%b8%ad%e4%b8%8d%e8%83%bd%e6%b7%bb%e5%8a%a0%e5%a4%9a%e5%80%bc%e7%9a%84%e5%8f%82%e6%95%b0.htm">Command中不能添加多值的参数</a><br />
	<strong>版权所有。转载时必须以链接形式注明作者和原始出处及本声明。</strong><br />
	分类: <a href="http://www.jiehoo.com/category/crystal-report/" title="显示Crystal Report的所有文章" rel="category tag">Crystal Report</a><br />]]></content:encoded>
			<wfw:commentRSS>http://www.jiehoo.com/command%e4%b8%ad%e4%b8%8d%e8%83%bd%e6%b7%bb%e5%8a%a0%e5%a4%9a%e5%80%bc%e7%9a%84%e5%8f%82%e6%95%b0.htm/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>痛苦的Crystal Report</title>
		<link>http://www.jiehoo.com/%e7%97%9b%e8%8b%a6%e7%9a%84crystal-report.htm</link>
		<comments>http://www.jiehoo.com/%e7%97%9b%e8%8b%a6%e7%9a%84crystal-report.htm#comments</comments>
		<pubDate>Fri, 13 Apr 2007 09:53:16 +0000</pubDate>
		<dc:creator>Cherami</dc:creator>
		
	<category>Crystal Report</category><category>Crystal Report</category>
		<guid isPermaLink="false">http://www.jiehoo.com/%e7%97%9b%e8%8b%a6%e7%9a%84crystal-report.htm</guid>
		<description><![CDATA[这个阶段的任务包括修改一些Crystal Report，从我最开始研究Crystal Report时我就很讨厌做这个，因为没有什么共享的机制，各种格式要在创建报表的时候一次一次的重复，各种字段的显示格式也是，而我最讨厌的就是做重复的工作，而且特别讨厌做格式化的工作。
另外，你永远工作在一个沙箱中，很多时候你平时编程中使用到的东西在创建报表的时候就不能用了。
当然，一个可能的原因是我对这个东西并不是很熟悉，另外我对写SQL也不是很在行，所以在创建复杂业务逻辑的报表的时候问题就更加的严重。
但愿写报表的日子早点结束。

	
	作者: 解惑/Cherami
	原载: 痛苦的Crystal Report
	版权所有。转载时必须以链接形式注明作者和原始出处及本声明。
	分类: Crystal Report]]></description>
			<content:encoded><![CDATA[<p class='fp'>这个阶段的任务包括修改一些Crystal Report，从我最开始研究Crystal Report时我就很讨厌做这个，因为没有什么共享的机制，各种格式要在创建报表的时候一次一次的重复，各种字段的显示格式也是，而我最讨厌的就是做重复的工作，而且特别讨厌做格式化的工作。<br />
另外，你永远工作在一个沙箱中，很多时候你平时编程中使用到的东西在创建报表的时候就不能用了。<br />
当然，一个可能的原因是我对这个东西并不是很熟悉，另外我对写SQL也不是很在行，所以在创建复杂业务逻辑的报表的时候问题就更加的严重。<br />
但愿写报表的日子早点结束。
</p>
	<br />
	作者: <a href="http://www.jiehoo.com">解惑/Cherami</a><br />
	原载: <a href="http://www.jiehoo.com/%e7%97%9b%e8%8b%a6%e7%9a%84crystal-report.htm">痛苦的Crystal Report</a><br />
	<strong>版权所有。转载时必须以链接形式注明作者和原始出处及本声明。</strong><br />
	分类: <a href="http://www.jiehoo.com/category/crystal-report/" title="显示Crystal Report的所有文章" rel="category tag">Crystal Report</a><br />]]></content:encoded>
			<wfw:commentRSS>http://www.jiehoo.com/%e7%97%9b%e8%8b%a6%e7%9a%84crystal-report.htm/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>动态排序</title>
		<link>http://www.jiehoo.com/dynamic-sorting-by-parameter-value.htm</link>
		<comments>http://www.jiehoo.com/dynamic-sorting-by-parameter-value.htm#comments</comments>
		<pubDate>Wed, 07 Mar 2007 09:54:49 +0000</pubDate>
		<dc:creator>Cherami</dc:creator>
		
	<category>Crystal Report</category><category>Crystal Report</category><category>动态</category><category>参数</category><category>排序</category>
		<guid isPermaLink="false">http://www.jiehoo.com/dynamic-sorting-by-parameter-value.htm</guid>
		<description><![CDATA[这个是刚刚提出的一个需求，我开始以为不能实现，但是是可以的，虽然比较麻烦。
Crystal Report Designer中可以选择用来排序的字段可以是数据库字段，也可以是Fomula字段，不能是参数字段，所以一个可行的方法就是创建一个Fomula字段，这个Fomula的任务很简单，就是根据参数的值选择字段：
if {?sortcolumn} =&#8217;ID&#8217; then totext({DEVICEGROUPCONFIG.DG_ID},&#8217;0000000000000&#8242;)
else
{DEVICEGROUPCONFIG.DG_NAME}
需要注意的就是那个totext的使用，Fomula是没有类型的，但是要求其返回值的类型要一致，不能一会是字符串一会是数字，所以我使用了totext把数字转换为字符串，如果有日期类型，也要类似的实现。

	
	作者: 解惑/Cherami
	原载: 动态排序
	版权所有。转载时必须以链接形式注明作者和原始出处及本声明。
	分类: Crystal Report]]></description>
			<content:encoded><![CDATA[<p class='fp'>这个是刚刚提出的一个需求，我开始以为不能实现，但是是可以的，虽然比较麻烦。<br />
Crystal Report Designer中可以选择用来排序的字段可以是数据库字段，也可以是Fomula字段，不能是参数字段，所以一个可行的方法就是创建一个Fomula字段，这个Fomula的任务很简单，就是根据参数的值选择字段：</p>
<p>if {?sortcolumn} =&#8217;ID&#8217; then totext({DEVICEGROUPCONFIG.DG_ID},&#8217;0000000000000&#8242;)<br />
else<br />
{DEVICEGROUPCONFIG.DG_NAME}</p>
<p>需要注意的就是那个totext的使用，Fomula是没有类型的，但是要求其返回值的类型要一致，不能一会是字符串一会是数字，所以我使用了totext把数字转换为字符串，如果有日期类型，也要类似的实现。
</p>
	<br />
	作者: <a href="http://www.jiehoo.com">解惑/Cherami</a><br />
	原载: <a href="http://www.jiehoo.com/dynamic-sorting-by-parameter-value.htm">动态排序</a><br />
	<strong>版权所有。转载时必须以链接形式注明作者和原始出处及本声明。</strong><br />
	分类: <a href="http://www.jiehoo.com/category/crystal-report/" title="显示Crystal Report的所有文章" rel="category tag">Crystal Report</a><br />]]></content:encoded>
			<wfw:commentRSS>http://www.jiehoo.com/dynamic-sorting-by-parameter-value.htm/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>取得参数的缺省值列表</title>
		<link>http://www.jiehoo.com/get-parameter-default-value-list.htm</link>
		<comments>http://www.jiehoo.com/get-parameter-default-value-list.htm#comments</comments>
		<pubDate>Wed, 07 Mar 2007 09:45:20 +0000</pubDate>
		<dc:creator>Cherami</dc:creator>
		
	<category>Crystal Report</category><category>Crystal Report</category><category>列表</category><category>参数</category>
		<guid isPermaLink="false">http://www.jiehoo.com/get-parameter-default-value-list.htm</guid>
		<description><![CDATA[我们要求报表可以根据用户的选择来动态进行排序，但是每个报表所显示的列肯定不一样，所以每个报表在实现这个功能的时候，参数提示的时候必然要提供可选的值，到了Java里面，如何从Crystal Report Server上读取这些信息呢？
&#160;&#160;&#160; public static ValueObjList getReportParameters(int reportID) throws Exception
&#160;&#160;&#160; {
&#160;&#160;&#160;&#160;&#160;&#160;&#160; String query = &#34;Select SI_PROCESSINFO.SI_PROMPTS From CI_INFOOBJECTS Where si_progid = &#8216;crystalenterprise.report&#8217; and SI_ID = &#34;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; + reportID;
&#160;&#160;&#160;&#160;&#160;&#160;&#160; IInfoObjects results = query(query);
&#160;&#160;&#160;&#160;&#160;&#160;&#160; ValueObjList result = new ValueObjList();
&#160;&#160;&#160;&#160;&#160;&#160;&#160; if (results == null)
&#160;&#160;&#160;&#160;&#160;&#160;&#160; {
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return result;
&#160;&#160;&#160;&#160;&#160;&#160;&#160; }
&#160;&#160;&#160;&#160;&#160;&#160;&#160; IInfoObject report = (IInfoObject) results.get(0);
&#160;&#160;&#160;&#160;&#160;&#160;&#160; List allParameters = ((IReport) report).getReportParameters();
&#160;&#160;&#160;&#160;&#160;&#160;&#160; [...]]]></description>
			<content:encoded><![CDATA[<p class='fp'>我们要求报表可以根据用户的选择来动态进行排序，但是每个报表所显示的列肯定不一样，所以每个报表在实现这个功能的时候，参数提示的时候必然要提供可选的值，到了Java里面，如何从Crystal Report Server上读取这些信息呢？<br />
&nbsp;&nbsp;&nbsp; public static ValueObjList getReportParameters(int reportID) throws Exception<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String query = &quot;Select SI_PROCESSINFO.SI_PROMPTS From CI_INFOOBJECTS Where si_progid = &#8216;crystalenterprise.report&#8217; and SI_ID = &quot;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; + reportID;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IInfoObjects results = query(query);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ValueObjList result = new ValueObjList();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (results == null)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return result;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IInfoObject report = (IInfoObject) results.get(0);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; List allParameters = ((IReport) report).getReportParameters();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IReportParameter reportParameter = null;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //Fix THRX2282, this maybe crystal report&#8217;s bug<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Set parameterNames = new HashSet();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int j = 0; j &lt; allParameters.size(); j++)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; reportParameter = (IReportParameter) allParameters.get(j);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (!reportParameter.isInUse())<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; continue;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CrystalReportParamConfigValueObj paramvo = new CrystalReportParamConfigValueObj();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String name = reportParameter.getParameterName();<br />
<font color="#0000ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (name.equals(&quot;sortcolumn&quot;))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IReportParameterValues defaultValues = reportParameter.getDefaultValues();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Values values = defaultValues.getValues(reportParameter.getValueType());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int m = 0; m &lt; values.size(); m++)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ParameterFieldDiscreteValue value = (ParameterFieldDiscreteValue) values.get(m);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(value.displayText(Locale.ENGLISH));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (parameterNames.contains(name))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; continue;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; parameterNames.add(name);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; paramvo.setAttribute(CrystalReportParamConfigAttributes.name, name);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; paramvo.setAttribute(CrystalReportParamConfigAttributes.type, new Integer(reportParameter<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .getValueType()));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; result.add(paramvo);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return result;</p>
<p>&nbsp;&nbsp;&nbsp; }</p>
<p>注意蓝色的代码，特别是<font color="#0000ff">defaultValues.getValues(reportParameter.getValueType())</font><font color="#0000ff"><font color="#000000">，这样我们就可以从服务器上读取到报表随带的参数</font></font><font color="#000000">值列表。</font>
</p>
	<br />
	作者: <a href="http://www.jiehoo.com">解惑/Cherami</a><br />
	原载: <a href="http://www.jiehoo.com/get-parameter-default-value-list.htm">取得参数的缺省值列表</a><br />
	<strong>版权所有。转载时必须以链接形式注明作者和原始出处及本声明。</strong><br />
	分类: <a href="http://www.jiehoo.com/category/crystal-report/" title="显示Crystal Report的所有文章" rel="category tag">Crystal Report</a><br />]]></content:encoded>
			<wfw:commentRSS>http://www.jiehoo.com/get-parameter-default-value-list.htm/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Crystal Report的几个问题</title>
		<link>http://www.jiehoo.com/several-problem-of-crystal-report.htm</link>
		<comments>http://www.jiehoo.com/several-problem-of-crystal-report.htm#comments</comments>
		<pubDate>Thu, 15 Feb 2007 02:02:20 +0000</pubDate>
		<dc:creator>Cherami</dc:creator>
		
	<category>Crystal Report</category><category>Crystal Report</category><category>问题</category>
		<guid isPermaLink="false">http://www.jiehoo.com/several-problem-of-crystal-report.htm</guid>
		<description><![CDATA[我们美国那边做Crystal Report的人走了，所以这个版本中，Crystal Report相关的一些bug就都由我来修改了，很痛苦
在这个过程中深切的感受到Crystal Report的一些问题：

没有比较好的重用机制，特别是一些公式或者Formula以及显示内容的格式，而模版功能还不够强大
子报表不能再包含子报表，这个也很痛苦，在创建复杂的报表内容的时候尤其痛苦，只能通过修改视图解决
从数据库取数据的时候默认是大小写不敏感的
RPT文件是二进制格式，不利于版本比较
保存数据库结构信息，例如表的完整定义，如果更新了数据库，那么报表可能不能运行，但是实际上修改对报表没有影响（例如增加了一个表字段）

	
	作者: 解惑/Cherami
	原载: Crystal Report的几个问题
	版权所有。转载时必须以链接形式注明作者和原始出处及本声明。
	分类: Crystal Report]]></description>
			<content:encoded><![CDATA[<p class='fp'>我们美国那边做Crystal Report的人走了，所以这个版本中，Crystal Report相关的一些bug就都由我来修改了，很痛苦<img src="/FCKeditor/editor/images/smiley/msn/sad_smile.gif" alt="" /><br />
在这个过程中深切的感受到Crystal Report的一些问题：</p>
<ul>
<li>没有比较好的重用机制，特别是一些公式或者Formula以及显示内容的格式，而模版功能还不够强大</li>
<li>子报表不能再包含子报表，这个也很痛苦，在创建复杂的报表内容的时候尤其痛苦，只能通过修改视图解决</li>
<li>从数据库取数据的时候默认是大小写不敏感的</li>
<li>RPT文件是二进制格式，不利于版本比较</li>
<li>保存数据库结构信息，例如表的完整定义，如果更新了数据库，那么报表可能不能运行，但是实际上修改对报表没有影响（例如增加了一个表字段）</li>
</ul>
	<br />
	作者: <a href="http://www.jiehoo.com">解惑/Cherami</a><br />
	原载: <a href="http://www.jiehoo.com/several-problem-of-crystal-report.htm">Crystal Report的几个问题</a><br />
	<strong>版权所有。转载时必须以链接形式注明作者和原始出处及本声明。</strong><br />
	分类: <a href="http://www.jiehoo.com/category/crystal-report/" title="显示Crystal Report的所有文章" rel="category tag">Crystal Report</a><br />]]></content:encoded>
			<wfw:commentRSS>http://www.jiehoo.com/several-problem-of-crystal-report.htm/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>以后要搞Crystal Report？</title>
		<link>http://www.jiehoo.com/will-do-crystal-report.htm</link>
		<comments>http://www.jiehoo.com/will-do-crystal-report.htm#comments</comments>
		<pubDate>Wed, 08 Nov 2006 12:08:07 +0000</pubDate>
		<dc:creator>Cherami</dc:creator>
		
	<category>Crystal Report</category><category>Crystal Report</category><category>水晶报表</category>
		<guid isPermaLink="false">http://www.jiehoo.com/will-do-crystal-report.htm</guid>
		<description><![CDATA[公司的一个兼职搞Crystal Report的同事要离职，但是我们最近几个要打的patch中和Crystal Report相关的问题最多，这边好像我是最熟悉的，领导找我谈话问能不能做，我说不一定，一些比较简单的可能没有问题，复杂的不一定。其实我是很不愿意搞Report的，不为别的，就是感觉做报表很烦琐，特别是用它的GUI工具，为了控制某种效果，要点击那些Formula按钮并写些脚步，要完成一个报表可能要重复这个过程十几次几十次，可能还要建几个子报表。不过现在可能避免不了，先看看能不能把这次的紧急情况应付过去把。
PS：如果有熟悉Crystal Report的朋友可以和我联系，我们要兼职或者全职搞Crystal Report的人。

	
	作者: 解惑/Cherami
	原载: 以后要搞Crystal Report？
	版权所有。转载时必须以链接形式注明作者和原始出处及本声明。
	分类: Crystal Report]]></description>
			<content:encoded><![CDATA[<p class='fp'>公司的一个兼职搞Crystal Report的同事要离职，但是我们最近几个要打的patch中和Crystal Report相关的问题最多，这边好像我是最熟悉的，领导找我谈话问能不能做，我说不一定，一些比较简单的可能没有问题，复杂的不一定。其实我是很不愿意搞Report的，不为别的，就是感觉做报表很烦琐，特别是用它的GUI工具，为了控制某种效果，要点击那些Formula按钮并写些脚步，要完成一个报表可能要重复这个过程十几次几十次，可能还要建几个子报表。不过现在可能避免不了，先看看能不能把这次的紧急情况应付过去把。</p>
<p>PS：如果有熟悉Crystal Report的朋友可以和我联系，我们要兼职或者全职搞Crystal Report的人。
</p>
	<br />
	作者: <a href="http://www.jiehoo.com">解惑/Cherami</a><br />
	原载: <a href="http://www.jiehoo.com/will-do-crystal-report.htm">以后要搞Crystal Report？</a><br />
	<strong>版权所有。转载时必须以链接形式注明作者和原始出处及本声明。</strong><br />
	分类: <a href="http://www.jiehoo.com/category/crystal-report/" title="显示Crystal Report的所有文章" rel="category tag">Crystal Report</a><br />]]></content:encoded>
			<wfw:commentRSS>http://www.jiehoo.com/will-do-crystal-report.htm/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>查询报表执行的最新状态</title>
		<link>http://www.jiehoo.com/%e6%9f%a5%e8%af%a2%e6%8a%a5%e8%a1%a8%e6%89%a7%e8%a1%8c%e7%9a%84%e6%9c%80%e6%96%b0%e7%8a%b6%e6%80%81.htm</link>
		<comments>http://www.jiehoo.com/%e6%9f%a5%e8%af%a2%e6%8a%a5%e8%a1%a8%e6%89%a7%e8%a1%8c%e7%9a%84%e6%9c%80%e6%96%b0%e7%8a%b6%e6%80%81.htm#comments</comments>
		<pubDate>Wed, 21 Jun 2006 11:59:38 +0000</pubDate>
		<dc:creator>Cherami</dc:creator>
		
	<category>Crystal Report</category><category>Crystal Report</category><category>报表</category><category>查询</category>
		<guid isPermaLink="false">http://www.jiehoo.com/%e6%9f%a5%e8%af%a2%e6%8a%a5%e8%a1%a8%e6%89%a7%e8%a1%8c%e7%9a%84%e6%9c%80%e6%96%b0%e7%8a%b6%e6%80%81.htm</guid>
		<description><![CDATA[我们的系统和水晶报表集成起来了，而且一个报表可以同时运行多次，我们要监控每次的执行结果。查询语句如下：
Select TOP 1 *&#160; From CI_INFOOBJECTS Where SI_INSTANCE_OBJECT=1 AND SI_PARENTID=&#34;
&#160;&#160;&#160;&#160;&#160;&#160;&#160; + reportId
&#160;&#160;&#160;&#160;&#160;&#160;&#160; + &#34; and AR_INSTANCE_ID= &#34;
&#160;&#160;&#160;&#160;&#160;&#160;&#160; + instanceId
&#160;&#160;&#160;&#160;&#160;&#160;&#160; + &#34; and AR_EXECUTE_ID= &#34; + executeId + &#34; Order by SI_ID desc&#34;;
其 中reportId是报表的那个ID了，AR_INSTANCE_ID是自定义的属性，用来跟踪每次的执行，我们的系统中增加了和CR SERVER中类似的概念instance，就是可以使用不同的参数设置运行同一个报表，而每一个instance又可以同时运行多次，所以又增加了一个 EXECUTE_ID，可以跟踪每次的执行了。
这个查询有个问题，就是如果报表没有运行完，那么是查询不到当前的状态的，后来发现是SI_INSTANCE_OBJECT=1的问题，去掉那个条件就可以了。可能是报表运行成功或者失败才会生成或者设置那个字段。

	
	作者: 解惑/Cherami
	原载: 查询报表执行的最新状态
	版权所有。转载时必须以链接形式注明作者和原始出处及本声明。
	分类: Crystal Report]]></description>
			<content:encoded><![CDATA[<p class='fp'>我们的系统和水晶报表集成起来了，而且一个报表可以同时运行多次，我们要监控每次的执行结果。查询语句如下：<br />
Select TOP 1 *&nbsp; From CI_INFOOBJECTS Where SI_INSTANCE_OBJECT=1 AND SI_PARENTID=&quot;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; + reportId<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; + &quot; and AR_INSTANCE_ID= &quot;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; + instanceId<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; + &quot; and AR_EXECUTE_ID= &quot; + executeId + &quot; Order by SI_ID desc&quot;;<br />
其 中reportId是报表的那个ID了，AR_INSTANCE_ID是自定义的属性，用来跟踪每次的执行，我们的系统中增加了和CR SERVER中类似的概念instance，就是可以使用不同的参数设置运行同一个报表，而每一个instance又可以同时运行多次，所以又增加了一个 EXECUTE_ID，可以跟踪每次的执行了。<br />
这个查询有个问题，就是如果报表没有运行完，那么是查询不到当前的状态的，后来发现是SI_INSTANCE_OBJECT=1的问题，去掉那个条件就可以了。可能是报表运行成功或者失败才会生成或者设置那个字段。
</p>
	<br />
	作者: <a href="http://www.jiehoo.com">解惑/Cherami</a><br />
	原载: <a href="http://www.jiehoo.com/%e6%9f%a5%e8%af%a2%e6%8a%a5%e8%a1%a8%e6%89%a7%e8%a1%8c%e7%9a%84%e6%9c%80%e6%96%b0%e7%8a%b6%e6%80%81.htm">查询报表执行的最新状态</a><br />
	<strong>版权所有。转载时必须以链接形式注明作者和原始出处及本声明。</strong><br />
	分类: <a href="http://www.jiehoo.com/category/crystal-report/" title="显示Crystal Report的所有文章" rel="category tag">Crystal Report</a><br />]]></content:encoded>
			<wfw:commentRSS>http://www.jiehoo.com/%e6%9f%a5%e8%af%a2%e6%8a%a5%e8%a1%a8%e6%89%a7%e8%a1%8c%e7%9a%84%e6%9c%80%e6%96%b0%e7%8a%b6%e6%80%81.htm/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>CI_INFOOBJECTS或者InfoObjects的全部字段或者属性</title>
		<link>http://www.jiehoo.com/ci_infoobjects%e6%88%96%e8%80%85infoobjects%e7%9a%84%e5%85%a8%e9%83%a8%e5%ad%97%e6%ae%b5%e6%88%96%e8%80%85%e5%b1%9e%e6%80%a7.htm</link>
		<comments>http://www.jiehoo.com/ci_infoobjects%e6%88%96%e8%80%85infoobjects%e7%9a%84%e5%85%a8%e9%83%a8%e5%ad%97%e6%ae%b5%e6%88%96%e8%80%85%e5%b1%9e%e6%80%a7.htm#comments</comments>
		<pubDate>Wed, 22 Feb 2006 21:50:18 +0000</pubDate>
		<dc:creator>Cherami</dc:creator>
		
	<category>Crystal Report</category>
		<guid isPermaLink="false">http://www.jiehoo.com/ci_infoobjects%e6%88%96%e8%80%85infoobjects%e7%9a%84%e5%85%a8%e9%83%a8%e5%ad%97%e6%ae%b5%e6%88%96%e8%80%85%e5%b1%9e%e6%80%a7.htm</guid>
		<description><![CDATA[找了很长时间才找到，用google都没有结果，呵呵，记录在这里：com.crystaldecisions.sdk.occa.infostore.CePropertyID类定义了全部的字段或者说属性,这样在写select的时候就可以只取需要的信息了.
	
	作者: 解惑/Cherami
	原载: CI_INFOOBJECTS或者InfoObjects的全部字段或者属性
	版权所有。转载时必须以链接形式注明作者和原始出处及本声明。
	分类: Crystal Report]]></description>
			<content:encoded><![CDATA[<p class='fp'>找了很长时间才找到，用google都没有结果，呵呵，记录在这里：<br /><font size="-1">com.crystaldecisions.sdk.occa.infostore.</font>CePropertyID类定义了全部的字段或者说属性,这样在写select的时候就可以只取需要的信息了.</p>
	<br />
	作者: <a href="http://www.jiehoo.com">解惑/Cherami</a><br />
	原载: <a href="http://www.jiehoo.com/ci_infoobjects%e6%88%96%e8%80%85infoobjects%e7%9a%84%e5%85%a8%e9%83%a8%e5%ad%97%e6%ae%b5%e6%88%96%e8%80%85%e5%b1%9e%e6%80%a7.htm">CI_INFOOBJECTS或者InfoObjects的全部字段或者属性</a><br />
	<strong>版权所有。转载时必须以链接形式注明作者和原始出处及本声明。</strong><br />
	分类: <a href="http://www.jiehoo.com/category/crystal-report/" title="显示Crystal Report的所有文章" rel="category tag">Crystal Report</a><br />]]></content:encoded>
			<wfw:commentRSS>http://www.jiehoo.com/ci_infoobjects%e6%88%96%e8%80%85infoobjects%e7%9a%84%e5%85%a8%e9%83%a8%e5%ad%97%e6%ae%b5%e6%88%96%e8%80%85%e5%b1%9e%e6%80%a7.htm/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>crystal report的参数设置</title>
		<link>http://www.jiehoo.com/crystal-report%e7%9a%84%e5%8f%82%e6%95%b0%e8%ae%be%e7%bd%ae.htm</link>
		<comments>http://www.jiehoo.com/crystal-report%e7%9a%84%e5%8f%82%e6%95%b0%e8%ae%be%e7%bd%ae.htm#comments</comments>
		<pubDate>Wed, 02 Nov 2005 01:23:16 +0000</pubDate>
		<dc:creator>Cherami</dc:creator>
		
	<category>Crystal Report</category>
		<guid isPermaLink="false">http://www.jiehoo.com/crystal-report%e7%9a%84%e5%8f%82%e6%95%b0%e8%ae%be%e7%bd%ae.htm</guid>
		<description><![CDATA[这里说的是通过API传递参数，不是通过Viewer的URL传递参数。
API是和Server打交道，自己的应用和crystal report server进行交互完成报表的运行调度。
其实好像所有参数类型都可以用String类型的表示，数字型和字符串型的就不用说了，日期型可以用DateTime(yyyy,MM,dd,HH,
mm,ss)或者Date(yyyy,MM,dd)格式，如果是允许多个值的，只要一个一个添加就行了，或者用分号分隔组成一个字符串。
代码片断如下（不是完整的代码）：
&#160;&#160;&#160; String query = &#8220;Select SI_PROCESSINFO.SI_PROMPTS From CI_INFOOBJECTS Where SI_ID = &#8220;
&#160;&#160;&#160;&#160;&#160;&#160;&#160; + form.getReportID();
&#160;&#160;&#160; IInfoObjects results = query(query);
&#160;&#160;&#160; if (results.size() == 0) {
&#160;&#160;&#160;&#160;&#160; throw new Exception(&#8221;The report does not exist.&#8221;);
&#160;&#160;&#160; }
&#160;&#160;&#160; IInfoObject report = (IInfoObject) results.get(0);
&#160;&#160;&#160; List allParameters = ((IReport) report).getReportParameters();
&#160;&#160;&#160; IReportParameterSingleValue newSingleParameter = null;
&#160;&#160;&#160; IReportParameter reportParameter = null;
&#160;&#160;&#160; String[] times = CrystalReportParameter.convertTimeParameters(form
&#160;&#160;&#160;&#160;&#160;&#160;&#160; [...]]]></description>
			<content:encoded><![CDATA[<p class='fp'>这里说的是通过API传递参数，不是通过Viewer的URL传递参数。<br />
API是和Server打交道，自己的应用和crystal report server进行交互完成报表的运行调度。<br />
其实好像所有参数类型都可以用String类型的表示，数字型和字符串型的就不用说了，日期型可以用DateTime(yyyy,MM,dd,HH,<br />
mm,ss)或者Date(yyyy,MM,dd)格式，如果是允许多个值的，只要一个一个添加就行了，或者用分号分隔组成一个字符串。<br />
代码片断如下（不是完整的代码）：<br />
&nbsp;&nbsp;&nbsp; String query = &#8220;Select SI_PROCESSINFO.SI_PROMPTS From CI_INFOOBJECTS Where SI_ID = &#8220;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; + form.getReportID();<br />
&nbsp;&nbsp;&nbsp; IInfoObjects results = query(query);<br />
&nbsp;&nbsp;&nbsp; if (results.size() == 0) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; throw new Exception(&#8221;The report does not exist.&#8221;);<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; IInfoObject report = (IInfoObject) results.get(0);<br />
&nbsp;&nbsp;&nbsp; List allParameters = ((IReport) report).getReportParameters();<br />
&nbsp;&nbsp;&nbsp; IReportParameterSingleValue newSingleParameter = null;<br />
&nbsp;&nbsp;&nbsp; IReportParameter reportParameter = null;<br />
&nbsp;&nbsp;&nbsp; String[] times = CrystalReportParameter.convertTimeParameters(form<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .getStartDay(), form.getStartHour(), form.getEndDay(), form<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .getEndHour(), form.isIncludeCurrentHour());</p>
<p>&nbsp;&nbsp;&nbsp; for (int j = 0; j &lt; allParameters.size(); j++) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; reportParameter = (IReportParameter) allParameters.get(j);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; reportParameter.getCurrentValues().clear();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String parameterName = reportParameter.getParameterName();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (CrystalReportParameter.isMultipleValueParameter(parameterName)) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String[] values = (String[]) form.get(parameterName);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int i = 0; i &lt; values.length; i++) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; newSingleParameter = reportParameter.getCurrentValues()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .addSingleValue();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; newSingleParameter.setValue(values[i]);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else if (parameterName.equals(CrystalReportParameter.STARTTIME)) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; newSingleParameter = reportParameter.getCurrentValues()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .addSingleValue();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; newSingleParameter.setValue(CrystalReportParameter<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .getParameterTime(times[0]));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else if (parameterName.equals(CrystalReportParameter.ENDTIME)) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; newSingleParameter = reportParameter.getCurrentValues()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .addSingleValue();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; newSingleParameter.setValue(CrystalReportParameter<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .getParameterTime(times[1]));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; ISchedulingInfo scheduleInfo = report.getSchedulingInfo();<br />
&nbsp;&nbsp;&nbsp; scheduleInfo.setType(0);<br />
&nbsp;&nbsp;&nbsp; scheduleInfo.setRightNow(true);<br />
&nbsp;&nbsp;&nbsp; iStore.schedule(results);</p>
<p>&nbsp; private static IInfoObjects query(String query) throws Exception {<br />
&nbsp;&nbsp;&nbsp; IInfoObjects results = null;<br />
&nbsp;&nbsp;&nbsp; try {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; results = iStore.query(query);<br />
&nbsp;&nbsp;&nbsp; } catch (SDKException e) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; logger.error(&#8221;Can not execute query:&#8221; + query, e);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; throw e;<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; return results;<br />
&nbsp; }</p>
	<br />
	作者: <a href="http://www.jiehoo.com">解惑/Cherami</a><br />
	原载: <a href="http://www.jiehoo.com/crystal-report%e7%9a%84%e5%8f%82%e6%95%b0%e8%ae%be%e7%bd%ae.htm">crystal report的参数设置</a><br />
	<strong>版权所有。转载时必须以链接形式注明作者和原始出处及本声明。</strong><br />
	分类: <a href="http://www.jiehoo.com/category/crystal-report/" title="显示Crystal Report的所有文章" rel="category tag">Crystal Report</a><br />]]></content:encoded>
			<wfw:commentRSS>http://www.jiehoo.com/crystal-report%e7%9a%84%e5%8f%82%e6%95%b0%e8%ae%be%e7%bd%ae.htm/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>crystal report的一些限制</title>
		<link>http://www.jiehoo.com/crystal-report%e7%9a%84%e4%b8%80%e4%ba%9b%e9%99%90%e5%88%b6.htm</link>
		<comments>http://www.jiehoo.com/crystal-report%e7%9a%84%e4%b8%80%e4%ba%9b%e9%99%90%e5%88%b6.htm#comments</comments>
		<pubDate>Thu, 29 Sep 2005 00:31:51 +0000</pubDate>
		<dc:creator>Cherami</dc:creator>
		
	<category>Crystal Report</category>
		<guid isPermaLink="false">http://www.jiehoo.com/crystal-report%e7%9a%84%e4%b8%80%e4%ba%9b%e9%99%90%e5%88%b6.htm</guid>
		<description><![CDATA[目前为止我所了解的一些限制：

子报表不能再包含子报表，也就是报表只能有两层
Chart不能放在Detail中，只能放在Report或者Group的部分。
Cross-tab只能放在Report部分
  

	
	作者: 解惑/Cherami
	原载: crystal report的一些限制
	版权所有。转载时必须以链接形式注明作者和原始出处及本声明。
	分类: Crystal Report]]></description>
			<content:encoded><![CDATA[<p class='fp'>目前为止我所了解的一些限制：</p>
<ul>
<li>子报表不能再包含子报表，也就是报表只能有两层</li>
<li>Chart不能放在Detail中，只能放在Report或者Group的部分。</li>
<li>Cross-tab只能放在Report部分
  </li>
</ul>
	<br />
	作者: <a href="http://www.jiehoo.com">解惑/Cherami</a><br />
	原载: <a href="http://www.jiehoo.com/crystal-report%e7%9a%84%e4%b8%80%e4%ba%9b%e9%99%90%e5%88%b6.htm">crystal report的一些限制</a><br />
	<strong>版权所有。转载时必须以链接形式注明作者和原始出处及本声明。</strong><br />
	分类: <a href="http://www.jiehoo.com/category/crystal-report/" title="显示Crystal Report的所有文章" rel="category tag">Crystal Report</a><br />]]></content:encoded>
			<wfw:commentRSS>http://www.jiehoo.com/crystal-report%e7%9a%84%e4%b8%80%e4%ba%9b%e9%99%90%e5%88%b6.htm/feed/</wfw:commentRSS>
		</item>
	</channel>
</rss>
