﻿<?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>IT博客-飘着的叶子，什么时候才落地-随笔分类-水晶报表</title><link>http://www.cnitblog.com/piaoye12345/category/1508.html</link><description /><language>zh-cn</language><lastBuildDate>Sat, 08 Oct 2011 00:58:38 GMT</lastBuildDate><pubDate>Sat, 08 Oct 2011 00:58:38 GMT</pubDate><ttl>60</ttl><item><title>在 Visual Studio .NET中使用Crystal Report</title><link>http://www.cnitblog.com/piaoye12345/archive/2005/12/02/5081.html</link><dc:creator>萌芽的叶子</dc:creator><author>萌芽的叶子</author><pubDate>Fri, 02 Dec 2005 07:34:00 GMT</pubDate><guid>http://www.cnitblog.com/piaoye12345/archive/2005/12/02/5081.html</guid><wfw:comment>http://www.cnitblog.com/piaoye12345/comments/5081.html</wfw:comment><comments>http://www.cnitblog.com/piaoye12345/archive/2005/12/02/5081.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/piaoye12345/comments/commentRss/5081.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/piaoye12345/services/trackbacks/5081.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 在我们开始这个关于如何在VS.NET上使用Crystal Reports的小小的研究之前，我和我的朋友都对如何把它应用于我们的Web程序中感到非常的疑惑。一个星期以后，经过一些努力(在网上查找“how-to”文档)，我们掌握了将简单的报表加入asp.net程序中的一些小小技巧。本文包含将Crystal Report 应用于您的.NET Web 应用程序所需方法的一些汇总，通过这些循序渐进地演示...&nbsp;&nbsp;<a href='http://www.cnitblog.com/piaoye12345/archive/2005/12/02/5081.html'>阅读全文</a><img src ="http://www.cnitblog.com/piaoye12345/aggbug/5081.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/piaoye12345/" target="_blank">萌芽的叶子</a> 2005-12-02 15:34 <a href="http://www.cnitblog.com/piaoye12345/archive/2005/12/02/5081.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>   .NET环境下水晶报表使用总结</title><link>http://www.cnitblog.com/piaoye12345/archive/2005/12/02/5070.html</link><dc:creator>萌芽的叶子</dc:creator><author>萌芽的叶子</author><pubDate>Fri, 02 Dec 2005 02:42:00 GMT</pubDate><guid>http://www.cnitblog.com/piaoye12345/archive/2005/12/02/5070.html</guid><wfw:comment>http://www.cnitblog.com/piaoye12345/comments/5070.html</wfw:comment><comments>http://www.cnitblog.com/piaoye12345/archive/2005/12/02/5070.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/piaoye12345/comments/commentRss/5070.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/piaoye12345/services/trackbacks/5070.html</trackback:ping><description><![CDATA[<TABLE cellSpacing=0 cellPadding=0 width="95%" align=center border=0>
<TBODY>
<TR>
<TD>&nbsp; 
<TD>
<P class=MsoNormal 0cm 0pt><B style="mso-bidi-font-weight: " normal><SPAN lang=EN-US><FONT size=3><FONT face=宋体>.NET环境下水晶报表使用总结<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></FONT></FONT></SPAN></B></P>
<P class=MsoNormal 0cm 0pt; TEXT-INDENT: 21pt><FONT face=宋体 size=3>水晶报表是一个优秀的报表开发工具，本人在开发通用管理系统的时候，所有报表都使用水晶报表，其简单、易用和强大的功能令笔者倍加喜爱，现将水晶报表使用手记呈现给大家。</FONT></P>
<P class=MsoNormal 0cm 0pt><SPAN lang=EN-US><o:p><FONT face=宋体 size=3>&nbsp;</FONT></o:p></SPAN></P>
<P class=MsoNormal 0cm 0pt><B style="mso-bidi-font-weight: " normal><SPAN 10.5pt><FONT face=宋体>一、在使用自带的水晶报表时，请注册，否则只能使用<SPAN lang=EN-US>30次<o:p></o:p></SPAN></FONT></SPAN></B></P>
<P class=MsoNormal 0cm 0pt><SPAN 9pt; COLOR: black; mso-bidi-font-weight: bold><FONT face=宋体>水晶报表注册码</FONT></SPAN><SPAN lang=EN-US 9pt; COLOR: black><BR><FONT face=宋体>注册号:6707437608<BR>密码:AAP5GKS0000GDE100DS<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal 0cm 0pt><SPAN lang=EN-US 9pt; COLOR: black><o:p><FONT face=宋体>&nbsp;</FONT></o:p></SPAN></P>
<P class=MsoNormal 0cm 0pt><B style="mso-bidi-font-weight: " normal><SPAN 9pt; COLOR: black><FONT face=宋体>二、使用<SPAN lang=EN-US>CrystalReportViewer进行预览<o:p></o:p></SPAN></FONT></SPAN></B></P>
<P><FONT face=宋体><SPAN lang=EN-US 9pt; COLOR: black>CrystalReportViewer</SPAN><SPAN 9pt>控件允许在应用程序中查看<SPAN lang=EN-US> Crystal Report。ReportSource 属性用于设置要查看哪个报表。该属性设置之后，报表显示在查看器中。报表源可以是<A href="ms-help://MS.VSCC/MS.MSDNVS.2052/crystlrf/html/crlrfreportdocumentclasstopic.htm"><FONT color=#000000>ReportDocument</FONT></A>、报表文件的路径，也可以是强类型报表。<o:p></o:p></SPAN></SPAN></FONT></P>
<P class=MsoNormal 0cm 0pt TEXT-INDENT: 36pt; -18pt; mso-margin-top-alt: mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt><SPAN lang=EN-US 9pt><SPAN style="mso-list: " Ignore><FONT face=宋体>1.</FONT><SPAN 7pt &#39;Times New Roman&#39;>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN 9pt><FONT face=宋体>打开<SPAN lang=EN-US>“工具箱”，并将一个 <B>CrystalReportViewer</B> 拖到窗体上，我们命名为rptVew。 <o:p></o:p></SPAN></FONT></SPAN></P>
<P class=MsoNormal 0cm 0pt TEXT-INDENT: 36pt; -18pt; mso-margin-top-alt: mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt><SPAN lang=EN-US 9pt><SPAN style="mso-list: " Ignore><FONT face=宋体>2.</FONT><SPAN 7pt &#39;Times New Roman&#39;>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN 9pt><FONT face=宋体>通过拖放操作将<SPAN lang=EN-US> Windows 窗体查看器调整到希望的大小并将其移动到所需位置。 <o:p></o:p></SPAN></FONT></SPAN></P>
<P class=MsoNormal 0cm 0pt TEXT-INDENT: 36pt; -18pt; mso-margin-top-alt: mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt><SPAN lang=EN-US 9pt><SPAN style="mso-list: " Ignore><FONT face=宋体>3.</FONT><SPAN 7pt &#39;Times New Roman&#39;>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN 9pt><FONT face=宋体>当运行应用程序时，报表将显示在查看器中。<SPAN lang=EN-US><o:p></o:p></SPAN></FONT></SPAN></P>
<P class=MsoNormal 0cm 0pt><FONT face=宋体><SPAN COLOR: black 10.5pt;>三、</SPAN><B><SPAN 10.5pt>创建新报表</SPAN></B><SPAN lang=EN-US COLOR: black 10.5pt;><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal 0cm 0pt TEXT-INDENT: 36pt; -18pt; mso-margin-top-alt: mso-margin-bottom-alt: auto; mso-list: level1 tab-stops: list 36.0pt l3 lfo2;><SPAN lang=EN-US 9pt><SPAN style="mso-list: " Ignore><FONT face=宋体>1.</FONT><SPAN 7pt &#39;Times New Roman&#39;>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN 9pt><FONT face=宋体>指向<SPAN lang=EN-US>“添加”，单击“添加新项”。 <o:p></o:p></SPAN></FONT></SPAN></P>
<P class=MsoNormal 0cm 0pt TEXT-INDENT: 36pt; -18pt; mso-margin-top-alt: mso-margin-bottom-alt: auto; mso-list: level1 tab-stops: list 36.0pt l3 lfo2;><SPAN lang=EN-US 9pt><SPAN style="mso-list: " Ignore><FONT face=宋体>2.</FONT><SPAN 7pt &#39;Times New Roman&#39;>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN 9pt><FONT face=宋体>在<SPAN lang=EN-US>“添加新项”对话框中，从“模板”区域选择<B> Crystal Report，将</B>报表命名为</SPAN></FONT></SPAN><SPAN lang=EN-US &#39;Times New Roman&#39; 10pt; FONT-FAMILY: 新宋体; mso-bidi-font-family: Roman&#39;; mso-hansi-font-family:>rptClient</SPAN><SPAN 9pt><FONT face=宋体>，单击<SPAN lang=EN-US>“打开”。 <o:p></o:p></SPAN></FONT></SPAN></P>
<P class=MsoNormal 0cm 0pt TEXT-INDENT: 36pt; -18pt; mso-margin-top-alt: mso-margin-bottom-alt: auto; mso-list: level1 tab-stops: list 36.0pt l3 lfo2;><SPAN lang=EN-US 9pt><SPAN style="mso-list: " Ignore><FONT face=宋体>3.</FONT><SPAN 7pt &#39;Times New Roman&#39;>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN 9pt><FONT face=宋体>在<SPAN lang=EN-US> Crystal Report 库中，选择下列选项之一： <o:p></o:p></SPAN></FONT></SPAN></P>
<P class=MsoNormal 0cm 0pt TEXT-INDENT: -18pt; mso-margin-top-alt: mso-margin-bottom-alt: auto; mso-list: tab-stops: list l3 lfo2; 72pt; level2 72.0pt><SPAN lang=EN-US 10pt; FONT-FAMILY: mso-bidi-font-family: Symbol; mso-bidi-font-size: 9.0pt; mso-fareast-font-family: Symbol><SPAN style="mso-list: " Ignore>·<SPAN 7pt &#39;Times New Roman&#39;>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><FONT face=宋体><B><SPAN 9pt>使用报表专家<SPAN lang=EN-US> — </SPAN></SPAN></B><SPAN 9pt>指导您完成报表的创建过程，并将您的选择添加到<SPAN lang=EN-US> Crystal Report Designer。 <o:p></o:p></SPAN></SPAN></FONT></P>
<P class=MsoNormal 0cm 0pt TEXT-INDENT: -18pt; mso-margin-top-alt: mso-margin-bottom-alt: auto; mso-list: tab-stops: list l3 lfo2; 72pt; level2 72.0pt><SPAN lang=EN-US 10pt; FONT-FAMILY: mso-bidi-font-family: Symbol; mso-bidi-font-size: 9.0pt; mso-fareast-font-family: Symbol><SPAN style="mso-list: " Ignore>·<SPAN 7pt &#39;Times New Roman&#39;>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><FONT face=宋体><B><SPAN 9pt>作为空白报表<SPAN lang=EN-US> — </SPAN></SPAN></B><SPAN 9pt>打开<SPAN lang=EN-US> Crystal Report Designer。 <o:p></o:p></SPAN></SPAN></FONT></P>
<P class=MsoNormal 0cm 0pt TEXT-INDENT: -18pt; mso-margin-top-alt: mso-margin-bottom-alt: auto; mso-list: tab-stops: list l3 lfo2; 72pt; level2 72.0pt><SPAN lang=EN-US 10pt; FONT-FAMILY: mso-bidi-font-family: Symbol; mso-bidi-font-size: 9.0pt; mso-fareast-font-family: Symbol><SPAN style="mso-list: " Ignore>·<SPAN 7pt &#39;Times New Roman&#39;>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><FONT face=宋体><B><SPAN 9pt>来自于现有的报表</SPAN></B><SPAN lang=EN-US 9pt> — 创建新报表，它与指定的另一报表设计相同。 <o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal 0cm 0pt mso-margin-top-alt: mso-margin-bottom-alt: auto; 72pt; auto><FONT face=宋体><B><SPAN 9pt>注意</SPAN></B><SPAN lang=EN-US 9pt>&nbsp;&nbsp;&nbsp;Crystal Report 库包含许多专家，可以指导您完成数个特定类型报表的创建工作。您可能希望使用专家来创建最初的报表，以确定哪种报表构造方法适合您的需要。<o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal 0cm 0pt TEXT-INDENT: 36pt; -18pt; mso-margin-top-alt: mso-margin-bottom-alt: auto; mso-list: level1 tab-stops: list 36.0pt l3 lfo2;><SPAN lang=EN-US 9pt><SPAN style="mso-list: " Ignore><FONT face=宋体>4.</FONT><SPAN 7pt &#39;Times New Roman&#39;>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN 9pt><FONT face=宋体>单击<SPAN lang=EN-US>“确定”按钮。 <o:p></o:p></SPAN></FONT></SPAN></P>
<P 36pt><SPAN 9pt><FONT face=宋体>如果选择使用<SPAN lang=EN-US>“报表专家”，便会出现“报表专家”对话框，并带有数据资源管理器。为每个文件夹选择所需数据，完成“报表专家”选项卡界面上的操作，然后单击“完成”来访问 Crystal Report Designer 和您的报表<o:p></o:p></SPAN></FONT></SPAN></P>
<P class=MsoNormal 0cm 0pt><B style="mso-bidi-font-weight: " normal><SPAN 9pt; COLOR: black><FONT face=宋体>四、是否需要动态设置数据源？<SPAN lang=EN-US><o:p></o:p></SPAN></FONT></SPAN></B></P>
<P><SPAN lang=EN-US 9pt><FONT face=宋体>Crystal Reports 通过数据库驱动程序与数据库连接。每个驱动程序都被编写为可处理特定数据库类型或数据库访问技术。 <o:p></o:p></FONT></SPAN></P>
<H2 0cm auto><SPAN 9pt><FONT face=宋体>拉和推模型<SPAN lang=EN-US><o:p></o:p></SPAN></FONT></SPAN></H2>
<P><SPAN 9pt><FONT face=宋体>为了向开发人员提供最灵活的数据访问方法，<SPAN lang=EN-US>Crystal Reports 数据库驱动程序被设计为可同时提供数据访问的拉模型和推模型。 <o:p></o:p></SPAN></FONT></SPAN></P>
<P class=label 0cm auto><B><SPAN 9pt><FONT face=宋体>拉模型</FONT></SPAN></B></P>
<P class=label 0cm auto><B><SPAN 9pt><FONT face=宋体><SPAN lang=EN-US><o:p><IMG alt=hspace=0 src="http://www.myvc.net/uploadpicture/20032178312848410.bmp" align=baseline border=0></o:p></SPAN></FONT></SPAN></B></P>
<P class=label 0cm auto><B><SPAN lang=EN-US 9pt><?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /><v:shapetype id=_x0000_t75 stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if" lineDrawn pixelLineWidth 0></v:f><v:f eqn="sum" 0 @0 1></v:f><v:f eqn="sum" 0 @1></v:f><v:f eqn="prod" 1 @2 2></v:f><v:f eqn="prod" @3 21600 pixelWidth></v:f><v:f eqn="prod" @3 21600 pixelHeight></v:f><v:f eqn="sum" 0 @0 1></v:f><v:f eqn="prod" 1 2 @6></v:f><v:f eqn="prod" 21600 pixelWidth @7></v:f><v:f eqn="sum" 0 21600 @8></v:f><v:f eqn="prod" 21600 pixelHeight @7></v:f><v:f eqn="sum" 0 21600 @10></v:f></v:formulas><v:path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></v:path><o:lock aspectratio="t" v:ext="edit"></o:lock></v:shapetype></SPAN></B><SPAN lang=EN-US 9pt><o:p></o:p></SPAN></P>
<P><SPAN 9pt><FONT face=宋体>在拉模型中，驱动程序将连接到数据库并根据需要将数据<SPAN lang=EN-US>“拉”进来。使用这种模型时，与数据库的连接和为了获取数据而执行的 SQL 命令都同时由 Crystal Reports 本身处理，不需要开发人员编写代码。如果在运行时无须编写任何特殊代码，则使用拉模型。<o:p></o:p></SPAN></FONT></SPAN></P>
<P class=label 0cm auto><B><SPAN 9pt><FONT face=宋体>推模型<SPAN lang=EN-US><o:p></o:p></SPAN></FONT></SPAN></B></P>
<P class=label 0cm auto><B><SPAN lang=EN-US 9pt></SPAN></B><SPAN lang=EN-US 9pt><o:p></o:p></SPAN></P>
<P><SPAN 9pt><FONT face=宋体><IMG alt=hspace=0 src="http://www.myvc.net/uploadpicture/20032178344463893.bmp" align=baseline border=0>相反，推模型需要开发人员编写代码以连接到数据库，执行<SPAN lang=EN-US> SQL 命令以创建与报表中的字段匹配的记录集或数据集，并且将该对象传递给报表。该方法使您可以将连接共享置入应用程序中，并在 Crystal Reports 收到数据之前先将数据筛选出来。 <o:p></o:p></SPAN></FONT></SPAN></P>
<P class=MsoNormal 0cm 0pt><FONT face=宋体><B style="mso-bidi-font-weight: " normal><SPAN COLOR: black 10.5pt;>四、</SPAN></B><B><SPAN 10.5pt>从<SPAN lang=EN-US> ADO.NET 数据集制作报表</SPAN></SPAN></B><B style="mso-bidi-font-weight: " normal><SPAN lang=EN-US COLOR: black 10.5pt;><o:p></o:p></SPAN></B></FONT></P>
<P class=labelproc 0cm auto><FONT size=3><FONT face=宋体><B>从数据库创建数据集对象</B><SPAN lang=EN-US> </SPAN></FONT></FONT></P>
<P class=MsoNormal 0cm 0pt TEXT-INDENT: 36pt; -18pt; mso-margin-top-alt: mso-margin-bottom-alt: auto; mso-list: level1 tab-stops: list 36.0pt l2 lfo3;><SPAN lang=EN-US 9pt><SPAN style="mso-list: " Ignore><FONT face=宋体>1.</FONT><SPAN 7pt &#39;Times New Roman&#39;>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN 9pt><FONT face=宋体>在项目中新建一个架构文件：<SPAN lang=EN-US> <o:p></o:p></SPAN></FONT></SPAN></P>
<P class=MsoNormal 0cm 0pt TEXT-INDENT: -18pt; mso-margin-top-alt: mso-margin-bottom-alt: auto; mso-list: tab-stops: list 72pt; level2 72.0pt l2 lfo3;><SPAN lang=EN-US 9pt><SPAN style="mso-list: " Ignore><FONT face=宋体>a.</FONT><SPAN 7pt &#39;Times New Roman&#39;>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN 9pt><FONT face=宋体>在解决方案资源管理器中，右击项目名，指向<SPAN lang=EN-US>“添加”，然后单击“添加新项”。 <o:p></o:p></SPAN></FONT></SPAN></P>
<P class=MsoNormal 0cm 0pt TEXT-INDENT: -18pt; mso-margin-top-alt: mso-margin-bottom-alt: auto; mso-list: tab-stops: list 72pt; level2 72.0pt l2 lfo3;><SPAN lang=EN-US 9pt><SPAN style="mso-list: " Ignore><FONT face=宋体>b.</FONT><SPAN 7pt &#39;Times New Roman&#39;>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN 9pt><FONT face=宋体>在<SPAN lang=EN-US>“添加新项”对话框的“类别”区域，展开文件夹，然后选择“数据”。 <o:p></o:p></SPAN></FONT></SPAN></P>
<P class=MsoNormal 0cm 0pt TEXT-INDENT: -18pt; mso-margin-top-alt: mso-margin-bottom-alt: auto; mso-list: tab-stops: list 72pt; level2 72.0pt l2 lfo3;><SPAN lang=EN-US 9pt><SPAN style="mso-list: " Ignore><FONT face=宋体>c.</FONT><SPAN 7pt &#39;Times New Roman&#39;>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN 9pt><FONT face=宋体>在<SPAN lang=EN-US>“模板”区域选择“数据集”。 <o:p></o:p></SPAN></FONT></SPAN></P>
<P class=MsoNormal 0cm 0pt TEXT-INDENT: -18pt; mso-margin-top-alt: mso-margin-bottom-alt: auto; mso-list: tab-stops: list 72pt; level2 72.0pt l2 lfo3;><SPAN lang=EN-US 9pt><SPAN style="mso-list: " Ignore><FONT face=宋体>d.</FONT><SPAN 7pt &#39;Times New Roman&#39;>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN 9pt><FONT face=宋体>接受默认名称 <B><SPAN lang=EN-US>Dataset1.xsd</SPAN></B>。<SPAN lang=EN-US> <o:p></o:p></SPAN></FONT></SPAN></P>
<P 72pt><SPAN 9pt><FONT face=宋体>这就创建了一个新的架构文件<SPAN lang=EN-US> (Dataset1.xsd)，以后将用它来生成强类型数据集。该架构文件将显示在 ADO.NET 数据集设计器中。 <o:p></o:p></SPAN></FONT></SPAN></P>
<P class=MsoNormal 0cm 0pt TEXT-INDENT: 36pt; -18pt; mso-margin-top-alt: mso-margin-bottom-alt: auto; mso-list: level1 tab-stops: list 36.0pt l2 lfo3;><SPAN lang=EN-US 9pt><SPAN style="mso-list: " Ignore><FONT face=宋体>2.</FONT><SPAN 7pt &#39;Times New Roman&#39;>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN 9pt><FONT face=宋体>指定数据库位置：<SPAN lang=EN-US> <o:p></o:p></SPAN></FONT></SPAN></P>
<P class=MsoNormal 0cm 0pt TEXT-INDENT: -18pt; mso-margin-top-alt: mso-margin-bottom-alt: auto; mso-list: tab-stops: list 72pt; level2 72.0pt l2 lfo3;><SPAN lang=EN-US 9pt><SPAN style="mso-list: " Ignore><FONT face=宋体>a.</FONT><SPAN 7pt &#39;Times New Roman&#39;>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN 9pt><FONT face=宋体>在服务器资源管理器中，右击<SPAN lang=EN-US>“数据连接”并选择“添加连接”。 <o:p></o:p></SPAN></FONT></SPAN></P>
<P class=MsoNormal 0cm 0pt TEXT-INDENT: -18pt; mso-margin-top-alt: mso-margin-bottom-alt: auto; mso-list: tab-stops: list 72pt; level2 72.0pt l2 lfo3;><SPAN lang=EN-US 9pt><SPAN style="mso-list: " Ignore><FONT face=宋体>b.</FONT><SPAN 7pt &#39;Times New Roman&#39;>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN 9pt><FONT face=宋体>在<SPAN lang=EN-US>“数据链接属性”对话框中，单击“提供程序”选项卡，然后选择一个提供程序（例如 Microsoft OLE DB Provider for SQL Server）。 <o:p></o:p></SPAN></FONT></SPAN></P>
<P class=MsoNormal 0cm 0pt TEXT-INDENT: -18pt; mso-margin-top-alt: mso-margin-bottom-alt: auto; mso-list: tab-stops: list 72pt; level2 72.0pt l2 lfo3;><SPAN lang=EN-US 9pt><SPAN style="mso-list: " Ignore><FONT face=宋体>c.</FONT><SPAN 7pt &#39;Times New Roman&#39;>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN 9pt><FONT face=宋体>单击<SPAN lang=EN-US>“连接”选项卡，然后指定您的数据库所在位置。在所需位置输入服务器和登录信息。 <o:p></o:p></SPAN></FONT></SPAN></P>
<P class=MsoNormal 0cm 0pt TEXT-INDENT: -18pt; mso-margin-top-alt: mso-margin-bottom-alt: auto; mso-list: tab-stops: list 72pt; level2 72.0pt l2 lfo3;><SPAN lang=EN-US 9pt><SPAN style="mso-list: " Ignore><FONT face=宋体>d.</FONT><SPAN 7pt &#39;Times New Roman&#39;>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN 9pt><FONT face=宋体>单击<SPAN lang=EN-US>“确定”按钮。 <o:p></o:p></SPAN></FONT></SPAN></P>
<P 72pt><SPAN 9pt><FONT face=宋体>此时，您的数据库及其表和字段就出现在服务器资源管理器的<SPAN lang=EN-US>“数据连接”节点下面。 <o:p></o:p></SPAN></FONT></SPAN></P>
<P class=MsoNormal 0cm 0pt TEXT-INDENT: 36pt; -18pt; mso-margin-top-alt: mso-margin-bottom-alt: auto; mso-list: level1 tab-stops: list 36.0pt l2 lfo3;><SPAN lang=EN-US 9pt><SPAN style="mso-list: " Ignore><FONT face=宋体>3.</FONT><SPAN 7pt &#39;Times New Roman&#39;>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN 9pt><FONT face=宋体>在解决方案资源管理器中，双击 <B><SPAN lang=EN-US>Dataset1.xsd </SPAN></B>（如果它尚不是活动视图）。<SPAN lang=EN-US> <o:p></o:p></SPAN></FONT></SPAN></P>
<P 36pt><SPAN lang=EN-US 9pt><FONT face=宋体>Dataset1.xsd 现在应显示在“数据集”选项卡中。 <o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal 0cm 0pt TEXT-INDENT: 36pt; -18pt; mso-margin-top-alt: mso-margin-bottom-alt: auto; mso-list: level1 tab-stops: list 36.0pt l2 lfo3;><SPAN lang=EN-US 9pt><SPAN style="mso-list: " Ignore><FONT face=宋体>4.</FONT><SPAN 7pt &#39;Times New Roman&#39;>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN 9pt><FONT face=宋体>若要为数据集建立架构，请将需要的表从服务器资源管理器中拖动到 <B><SPAN lang=EN-US>Dataset1.xsd</SPAN></B><SPAN lang=EN-US> 的“数据集”选项卡上。 <o:p></o:p></SPAN></FONT></SPAN></P>
<P class=MsoNormal 0cm 0pt TEXT-INDENT: 36pt; -18pt; mso-margin-top-alt: mso-margin-bottom-alt: auto; mso-list: level1 tab-stops: list 36.0pt l2 lfo3;><SPAN lang=EN-US 9pt><SPAN style="mso-list: " Ignore><FONT face=宋体>5.</FONT><SPAN 7pt &#39;Times New Roman&#39;>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN 9pt><FONT face=宋体>单击<SPAN lang=EN-US>“保存 Dataset1.xsd”来保存“Dataset1.xsd”文件。 <o:p></o:p></SPAN></FONT></SPAN></P>
<P class=MsoNormal 0cm 0pt TEXT-INDENT: 36pt; -18pt; mso-margin-top-alt: mso-margin-bottom-alt: auto; mso-list: level1 tab-stops: list 36.0pt l2 lfo3;><SPAN lang=EN-US 9pt><SPAN style="mso-list: " Ignore><FONT face=宋体>6.</FONT><SPAN 7pt &#39;Times New Roman&#39;>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN 9pt><FONT face=宋体>在<SPAN lang=EN-US>“生成”菜单上，单击“生成”为项目生成数据集对象。 <o:p></o:p></SPAN></FONT></SPAN></P>
<P><SPAN lang=EN-US 9pt><FONT face=宋体>ADO.NET 数据集对象提供数据的描述，从它可以向 Crystal report 添加表。使用 Crystal Report Designer 中的“数据库专家”从 ADO.NET 数据集对象添加表。 <o:p></o:p></FONT></SPAN></P>
<P><SPAN 9pt><FONT face=宋体>请在使用<SPAN lang=EN-US>“报表专家”<A href="ms-help://MS.VSCC/MS.MSDNVS.2052/crystlmn/html/crtskaccessingthecrystalreportdesigner.htm"><FONT color=#000000>创建新报表</FONT></A>时调用“数据库专家”。或者，要从一个已经使用 ADO.NET 建立好的报表中访问“数据库专家”，请在 Report Designer 中右击，指向“数据库”，然后单击“添加/删除数据库”。<o:p></o:p></SPAN></FONT></SPAN></P>
<P class=labelproc 0cm auto><FONT face=宋体><B><SPAN 9pt>将报表连接到<SPAN lang=EN-US> ADO.NET 数据集对象</SPAN></SPAN></B><SPAN lang=EN-US 9pt> <o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal 0cm 0pt TEXT-INDENT: 36pt; -18pt; mso-margin-top-alt: mso-margin-bottom-alt: auto; mso-list: level1 tab-stops: list 36.0pt l1 lfo4;><SPAN lang=EN-US 9pt><SPAN style="mso-list: " Ignore><FONT face=宋体>1.</FONT><SPAN 7pt &#39;Times New Roman&#39;>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN 9pt><FONT face=宋体>在<SPAN lang=EN-US>“数据库专家”中，展开“项目数据”文件夹。 <o:p></o:p></SPAN></FONT></SPAN></P>
<P class=MsoNormal 0cm 0pt TEXT-INDENT: 36pt; -18pt; mso-margin-top-alt: mso-margin-bottom-alt: auto; mso-list: level1 tab-stops: list 36.0pt l1 lfo4;><SPAN lang=EN-US 9pt><SPAN style="mso-list: " Ignore><FONT face=宋体>2.</FONT><SPAN 7pt &#39;Times New Roman&#39;>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN 9pt><FONT face=宋体>展开<SPAN lang=EN-US>“ADO.NET 数据集”文件夹。 <o:p></o:p></SPAN></FONT></SPAN></P>
<P class=MsoNormal 0cm 0pt TEXT-INDENT: 36pt; -18pt; mso-margin-top-alt: mso-margin-bottom-alt: auto; mso-list: level1 tab-stops: list 36.0pt l1 lfo4;><SPAN lang=EN-US 9pt><SPAN style="mso-list: " Ignore><FONT face=宋体>3.</FONT><SPAN 7pt &#39;Times New Roman&#39;>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN 9pt><FONT face=宋体>选择所需数据集对象。<SPAN lang=EN-US> <o:p></o:p></SPAN></FONT></SPAN></P>
<P 36pt><SPAN 9pt><FONT face=宋体>例如，如果当时使用的是从项目<SPAN lang=EN-US>“WindowsApplication1”的架构文件“Dataset1.xsd”中生成的数据集对象，则应该选择“WindowsApplication1.Dataset1”。 <o:p></o:p></SPAN></FONT></SPAN></P>
<P class=MsoNormal 0cm 0pt TEXT-INDENT: 36pt; -18pt; mso-margin-top-alt: mso-margin-bottom-alt: auto; mso-list: level1 tab-stops: list 36.0pt l1 lfo4;><SPAN lang=EN-US 9pt><SPAN style="mso-list: " Ignore><FONT face=宋体>4.</FONT><SPAN 7pt &#39;Times New Roman&#39;>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN 9pt><FONT face=宋体>选择要向报表中添加的表，和使用其他数据源一样。<SPAN lang=EN-US> <o:p></o:p></SPAN></FONT></SPAN></P>
<P class=MsoNormal 0cm 0pt; mso-pagination: none; mso-layout-grid-align: none><B><SPAN lang=EN-US><o:p><FONT face=宋体 size=3>&nbsp;</FONT></o:p></SPAN></B></P>
<P class=MsoNormal 0cm 0pt; mso-pagination: none; mso-layout-grid-align: none><B><SPAN lang=EN-US><o:p><FONT face=宋体 size=3>&nbsp;</FONT></o:p></SPAN></B></P>
<P class=MsoNormal 0cm 0pt; mso-pagination: none; mso-layout-grid-align: none><B><SPAN lang=EN-US><o:p><FONT face=宋体 size=3>&nbsp;</FONT></o:p></SPAN></B></P>
<P class=MsoNormal 0cm 0pt; mso-pagination: none; mso-layout-grid-align: none><B><SPAN lang=EN-US><o:p><FONT face=宋体 size=3>&nbsp;</FONT></o:p></SPAN></B></P>
<P class=MsoNormal 0cm 0pt; mso-pagination: none; mso-layout-grid-align: none><B><SPAN lang=EN-US><o:p><FONT face=宋体 size=3>&nbsp;</FONT></o:p></SPAN></B></P>
<P class=MsoNormal 0cm 0pt; mso-pagination: none; mso-layout-grid-align: none><B><SPAN lang=EN-US><o:p><FONT face=宋体 size=3>&nbsp;</FONT></o:p></SPAN></B></P>
<P class=MsoNormal 0cm 0pt; mso-pagination: none; mso-layout-grid-align: none><B><SPAN lang=EN-US><o:p><FONT face=宋体 size=3>&nbsp;</FONT></o:p></SPAN></B></P>
<P class=MsoNormal 0cm 0pt; mso-pagination: none; mso-layout-grid-align: none><B><SPAN lang=EN-US><o:p><FONT face=宋体 size=3>&nbsp;</FONT></o:p></SPAN></B></P>
<P class=MsoNormal 0cm 0pt; mso-pagination: none; mso-layout-grid-align: none><SPAN lang=EN-US &#39;Times New Roman&#39; 10pt; FONT-FAMILY: 新宋体; mso-bidi-font-family: Roman&#39;; mso-hansi-font-family:><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal 0cm 0pt; mso-pagination: none; mso-layout-grid-align: none><SPAN lang=EN-US &#39;Times New Roman&#39; 10pt; FONT-FAMILY: 新宋体; mso-bidi-font-family: Roman&#39;; mso-hansi-font-family:><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal 0cm 0pt><B style="mso-bidi-font-weight: " normal><SPAN COLOR: black 10.5pt;><FONT face=宋体>五、动态改变数据源的代码<SPAN lang=EN-US><o:p></o:p></SPAN></FONT></SPAN></B></P>
<P class=MsoNormal 0cm 0pt; mso-pagination: none; mso-layout-grid-align: none><SPAN lang=EN-US &#39;Times New Roman&#39; 10pt; FONT-FAMILY: 新宋体; mso-bidi-font-family: Roman&#39;; mso-hansi-font-family:><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal 0cm 0pt; mso-pagination: none; mso-layout-grid-align: none><SPAN lang=EN-US &#39;Times New Roman&#39; 10pt; FONT-FAMILY: 新宋体; mso-bidi-font-family: Roman&#39;; mso-hansi-font-family:><SPAN style="mso-spacerun: " yes>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="mso-tab-count: " 2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="mso-spacerun: " yes>&nbsp;&nbsp;&nbsp;</SPAN><SPAN blue>Dim</SPAN> dsdataSet <SPAN blue>As</SPAN> <SPAN blue>New</SPAN> DataSet()<o:p></o:p></SPAN></P>
<P class=MsoNormal 0cm 0pt; mso-pagination: none; mso-layout-grid-align: none><SPAN lang=EN-US &#39;Times New Roman&#39; 10pt; FONT-FAMILY: 新宋体; mso-bidi-font-family: Roman&#39;; mso-hansi-font-family:><SPAN style="mso-spacerun: " yes>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN blue>Dim</SPAN> oRpt <SPAN blue>As</SPAN> <SPAN blue>New</SPAN> rptClient()<SPAN style="mso-spacerun: " yes>&nbsp;&nbsp; </SPAN><SPAN green>'已建立的报表</SPAN>rptClient<o:p></o:p></SPAN></P>
<P class=MsoNormal 0cm 0pt; mso-pagination: none; mso-layout-grid-align: none><SPAN lang=EN-US &#39;Times New Roman&#39; 10pt; FONT-FAMILY: 新宋体; mso-bidi-font-family: Roman&#39;; mso-hansi-font-family:><SPAN style="mso-spacerun: " yes>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>请读者自行填充数据集dsdataSet <o:p></o:p></SPAN></P>
<P class=MsoNormal 0cm 0pt; mso-pagination: none; mso-layout-grid-align: none><SPAN lang=EN-US &#39;Times New Roman&#39; 10pt; FONT-FAMILY: 新宋体; mso-bidi-font-family: Roman&#39;; mso-hansi-font-family:><SPAN style="mso-spacerun: " yes>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN green>'使用“报表引擎”对象模型将填充的数据集,传递给报表<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal 0cm 0pt; mso-pagination: none; mso-layout-grid-align: none><SPAN lang=EN-US &#39;Times New Roman&#39; 10pt; FONT-FAMILY: 新宋体; mso-bidi-font-family: Roman&#39;; mso-hansi-font-family:><SPAN style="mso-spacerun: " yes>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="mso-spacerun: " yes>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN>oRpt.SetDataSource(dsdataSet.Tables(0))<o:p></o:p></SPAN></P>
<P class=MsoNormal 0cm 0pt; mso-pagination: none; mso-layout-grid-align: none><SPAN lang=EN-US &#39;Times New Roman&#39; 10pt; FONT-FAMILY: 新宋体; mso-bidi-font-family: Roman&#39;; mso-hansi-font-family:><SPAN style="mso-spacerun: " yes>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN green>' 将带有数据的报表对象绑定到 Windows 窗体查看器，</SPAN>rptVew（</SPAN><FONT face=宋体><SPAN lang=EN-US 9pt; COLOR: black>CrystalReportViewer</SPAN><SPAN 9pt>控件</SPAN></FONT><SPAN &#39;Times New Roman&#39; 10pt; FONT-FAMILY: 新宋体; mso-bidi-font-family: Roman&#39;; mso-hansi-font-family:>）<SPAN lang=EN-US green><o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal 0cm 0pt; mso-pagination: none; mso-layout-grid-align: none><SPAN lang=EN-US &#39;Times New Roman&#39; 10pt; FONT-FAMILY: 新宋体; mso-bidi-font-family: Roman&#39;; mso-hansi-font-family:><SPAN style="mso-spacerun: " yes>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>rptVew.ReportSource = oRpt<o:p></o:p></SPAN></P>
<P><FONT face=宋体><B><SPAN 9pt>注意</SPAN></B><SPAN lang=EN-US 9pt>&nbsp;&nbsp;&nbsp;<CODE><SPAN style="mso-bidi-font-size: " 9.0pt; mso-ansi-font-size: 9.0pt>FillDataSet</SPAN></CODE> 方法可连接到指定的数据库，提取数据，然后断开数据库连接。如果您希望将数据库中的多个表添加到报表中，请使用 SQL JOIN 语句将这些表联接在一起；然后在 <CODE><SPAN style="mso-bidi-font-size: " 9.0pt; mso-ansi-font-size: 9.0pt>FillDataSet</SPAN></CODE> 方法中指定一个结果表<o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal 0cm 0pt><B style="mso-bidi-font-weight: " normal><SPAN COLOR: black 10.5pt;><FONT face=宋体>六、创建主从报表<SPAN lang=EN-US><o:p></o:p></SPAN></FONT></SPAN></B></P>
<P><SPAN 9pt><FONT face=宋体>在报表中，有许多报表是主从表结构，比如订单与订单商品明细，订单是一个表中的一条记录，而分录是另一个表中的多条记录，两个表通过一个字段关联起来，这种报表可利用其分组功能实现，<SPAN lang=EN-US><o:p></o:p></SPAN></FONT></SPAN></P>
<P TEXT-INDENT: -18pt; mso-list: level1 tab-stops: list 18pt; l4 lfo5; 18.0pt><SPAN lang=EN-US 9pt><SPAN style="mso-list: " Ignore><FONT face=宋体>1.</FONT><SPAN 7pt &#39;Times New Roman&#39;>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN 9pt><FONT face=宋体>新建一个工程<SPAN lang=EN-US><o:p></o:p></SPAN></FONT></SPAN></P>
<P TEXT-INDENT: -18pt; mso-list: level1 tab-stops: list 18pt; l4 lfo5; 18.0pt><SPAN lang=EN-US 9pt><SPAN style="mso-list: " Ignore><FONT face=宋体>2.</FONT><SPAN 7pt &#39;Times New Roman&#39;>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN 9pt><FONT face=宋体>往<SPAN lang=EN-US>FORM1中添加一个<SPAN black>CrystalReportViewer</SPAN>控件<o:p></o:p></SPAN></FONT></SPAN></P>
<P TEXT-INDENT: -18pt; mso-list: level1 tab-stops: list 18pt; l4 lfo5; 18.0pt><SPAN lang=EN-US 9pt><SPAN style="mso-list: " Ignore><FONT face=宋体>3.</FONT><SPAN 7pt &#39;Times New Roman&#39;>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN 9pt><FONT face=宋体>在服务噐资源管理器中连接到<SPAN lang=EN-US>SQL SERVER 2000上的</SPAN></FONT></SPAN><SPAN lang=EN-US &#39;Times New Roman&#39; 10pt; FONT-FAMILY: 新宋体; mso-bidi-font-family: Roman&#39;; mso-hansi-font-family:>Northwind</SPAN><SPAN 9pt><FONT face=宋体>数据库<SPAN lang=EN-US><o:p></o:p></SPAN></FONT></SPAN></P>
<P TEXT-INDENT: -18pt; mso-list: level1 tab-stops: list 18pt; l4 lfo5; 18.0pt><SPAN lang=EN-US 9pt><SPAN style="mso-list: " Ignore><FONT face=宋体>4.</FONT><SPAN 7pt &#39;Times New Roman&#39;>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN 9pt><FONT face=宋体>添加一个数据集</FONT></SPAN><SPAN lang=EN-US &#39;Times New Roman&#39; 10pt; FONT-FAMILY: 新宋体; mso-bidi-font-family: Roman&#39;; mso-hansi-font-family:>Dataset1</SPAN><SPAN lang=EN-US 9pt><FONT face=宋体>,将服务器资源管理器中的Orders和 Order Details加入到数据集中。<o:p></o:p></FONT></SPAN></P>
<P TEXT-INDENT: -18pt; mso-list: level1 tab-stops: list 18pt; l4 lfo5; 18.0pt><SPAN lang=EN-US 9pt><SPAN style="mso-list: " Ignore><FONT face=宋体>5.</FONT><SPAN 7pt &#39;Times New Roman&#39;>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN 9pt><FONT face=宋体>添加一个水晶报表，使用报表专家，在项目数据中选择“<SPAN lang=EN-US>ADO.NET数据集”，插入表Orders和 Order Details，“链接”中是关联字段的链接，在“字段”中选择要显示的主表和明细表的字段，组中选择分组依据为Orders表OrdersID字段，总计，图表，选择（可进行筛选），样式（可设置报表标题），可自行设置。设置完后，点击完成。<o:p></o:p></SPAN></FONT></SPAN></P>
<P TEXT-INDENT: -18pt; mso-list: level1 tab-stops: list 18pt; l4 lfo5; 18.0pt><SPAN lang=EN-US 9pt><SPAN style="mso-list: " Ignore><FONT face=宋体>6.</FONT><SPAN 7pt &#39;Times New Roman&#39;>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN 9pt><FONT face=宋体>在报表设计器中调整需要显示的字段的位置、宽度等。<SPAN lang=EN-US><o:p></o:p></SPAN></FONT></SPAN></P>
<P TEXT-INDENT: -18pt; mso-list: level1 tab-stops: list 18pt; l4 lfo5; 18.0pt><SPAN lang=EN-US 9pt><SPAN style="mso-list: " Ignore><FONT face=宋体>7.</FONT><SPAN 7pt &#39;Times New Roman&#39;>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN 9pt><FONT face=宋体>在窗口中添加代码。<SPAN lang=EN-US><o:p></o:p></SPAN></FONT></SPAN></P>
<P class=MsoNormal 0cm 0pt; mso-pagination: none; mso-layout-grid-align: none><SPAN lang=EN-US 9pt; &#39;Times New Roman&#39; FONT-FAMILY: 新宋体; mso-bidi-font-family: Roman&#39;; mso-hansi-font-family:><SPAN style="mso-spacerun: " yes>&nbsp;&nbsp;&nbsp; </SPAN><SPAN blue>Private</SPAN> <SPAN blue>Sub</SPAN> Form1_Load(<SPAN blue>ByVal</SPAN> sender <SPAN blue>As</SPAN> System.Object, <SPAN blue>ByVal</SPAN> e <SPAN blue>As</SPAN> System.EventArgs) <SPAN blue>Handles</SPAN> <SPAN blue>MyBase</SPAN>.Load<o:p></o:p></SPAN></P>
<P class=MsoNormal 0cm 0pt; mso-pagination: none; mso-layout-grid-align: none><SPAN lang=EN-US 9pt; &#39;Times New Roman&#39; FONT-FAMILY: 新宋体; mso-bidi-font-family: Roman&#39;; mso-hansi-font-family:><SPAN style="mso-spacerun: " yes>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN blue>Dim</SPAN> oRpt <SPAN blue>As</SPAN> <SPAN blue>New</SPAN> CrystalReport1()<o:p></o:p></SPAN></P>
<P class=MsoNormal 0cm 0pt; mso-pagination: none; mso-layout-grid-align: none><SPAN lang=EN-US 9pt; &#39;Times New Roman&#39; FONT-FAMILY: 新宋体; mso-bidi-font-family: Roman&#39;; mso-hansi-font-family:><SPAN style="mso-spacerun: " yes>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN blue>Dim</SPAN> dsdataSet <SPAN blue>As</SPAN> <SPAN blue>New</SPAN> Dataset1()<o:p></o:p></SPAN></P>
<P class=MsoNormal 0cm 0pt; mso-pagination: none; mso-layout-grid-align: none><SPAN lang=EN-US 9pt; &#39;Times New Roman&#39; FONT-FAMILY: 新宋体; mso-bidi-font-family: Roman&#39;; mso-hansi-font-family:><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal 0cm 0pt; mso-pagination: none; mso-layout-grid-align: none><SPAN lang=EN-US 9pt; &#39;Times New Roman&#39; FONT-FAMILY: 新宋体; mso-bidi-font-family: Roman&#39;; mso-hansi-font-family:><SPAN style="mso-spacerun: " yes>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN blue>Dim</SPAN> CN <SPAN blue>As</SPAN> <SPAN blue>New</SPAN> Data.SqlClient.SqlConnection(data source=PMSERVER;initial catalog=Northwind;user id=sa;password=sa)<o:p></o:p></SPAN></P>
<P class=MsoNormal 0cm 0pt; mso-pagination: none; mso-layout-grid-align: none><SPAN lang=EN-US 9pt; &#39;Times New Roman&#39; FONT-FAMILY: 新宋体; mso-bidi-font-family: Roman&#39;; mso-hansi-font-family:><SPAN style="mso-spacerun: " yes>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>CN.Open()<o:p></o:p></SPAN></P>
<P class=MsoNormal 0cm 0pt; mso-pagination: none; mso-layout-grid-align: none><SPAN lang=EN-US 9pt; &#39;Times New Roman&#39; FONT-FAMILY: 新宋体; mso-bidi-font-family: Roman&#39;; mso-hansi-font-family:><SPAN style="mso-spacerun: " yes>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN blue>Dim</SPAN> daOrders <SPAN blue>As</SPAN> <SPAN blue>New</SPAN> Data.SqlClient.SqlDataAdapter(select * from orders, CN)<o:p></o:p></SPAN></P>
<P class=MsoNormal 0cm 0pt; mso-pagination: none; mso-layout-grid-align: none><SPAN lang=EN-US 9pt; &#39;Times New Roman&#39; FONT-FAMILY: 新宋体; mso-bidi-font-family: Roman&#39;; mso-hansi-font-family:><SPAN style="mso-spacerun: " yes>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>daOrders.Fill(dsdataSet, orders)<o:p></o:p></SPAN></P>
<P class=MsoNormal 0cm 0pt; mso-pagination: none; mso-layout-grid-align: none><SPAN lang=EN-US 9pt; &#39;Times New Roman&#39; FONT-FAMILY: 新宋体; mso-bidi-font-family: Roman&#39;; mso-hansi-font-family:><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal 0cm 0pt; mso-pagination: none; mso-layout-grid-align: none><SPAN lang=EN-US 9pt; &#39;Times New Roman&#39; FONT-FAMILY: 新宋体; mso-bidi-font-family: Roman&#39;; mso-hansi-font-family:><SPAN style="mso-spacerun: " yes>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN blue>Dim</SPAN> daDetails <SPAN blue>As</SPAN> <SPAN blue>New</SPAN> Data.SqlClient.SqlDataAdapter(select * from [Order Details], CN)<o:p></o:p></SPAN></P>
<P class=MsoNormal 0cm 0pt; mso-pagination: none; mso-layout-grid-align: none><SPAN lang=EN-US 9pt; &#39;Times New Roman&#39; FONT-FAMILY: 新宋体; mso-bidi-font-family: Roman&#39;; mso-hansi-font-family:><SPAN style="mso-spacerun: " yes>&nbsp;</SPAN><SPAN style="mso-spacerun: " yes>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>daDetails.Fill(dsdataSet, Order Details)<o:p></o:p></SPAN></P>
<P class=MsoNormal 0cm 0pt; mso-pagination: none; mso-layout-grid-align: none><SPAN lang=EN-US 9pt; &#39;Times New Roman&#39; FONT-FAMILY: 新宋体; mso-bidi-font-family: Roman&#39;; mso-hansi-font-family:><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal 0cm 0pt; mso-pagination: none; mso-layout-grid-align: none><SPAN lang=EN-US 9pt; &#39;Times New Roman&#39; FONT-FAMILY: 新宋体; mso-bidi-font-family: Roman&#39;; mso-hansi-font-family:><SPAN style="mso-spacerun: " yes>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN green>'使用“报表引擎”对象模型将填充的数据集,传递给报表<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal 0cm 0pt; mso-pagination: none; mso-layout-grid-align: none><SPAN lang=EN-US 9pt; &#39;Times New Roman&#39; FONT-FAMILY: 新宋体; mso-bidi-font-family: Roman&#39;; mso-hansi-font-family:><SPAN style="mso-spacerun: " yes>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>oRpt.SetDataSource(dsdataSet)<o:p></o:p></SPAN></P>
<P class=MsoNormal 0cm 0pt; mso-pagination: none; mso-layout-grid-align: none><SPAN lang=EN-US 9pt; &#39;Times New Roman&#39; FONT-FAMILY: 新宋体; mso-bidi-font-family: Roman&#39;; mso-hansi-font-family:><SPAN style="mso-spacerun: " yes>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>CrystalReportViewer1.ReportSource = oRpt<o:p></o:p></SPAN></P>
<P class=MsoNormal 0cm 0pt; mso-pagination: none; mso-layout-grid-align: none><SPAN lang=EN-US 9pt; &#39;Times New Roman&#39; FONT-FAMILY: 新宋体; mso-bidi-font-family: Roman&#39;; mso-hansi-font-family:><SPAN style="mso-spacerun: " yes>&nbsp;&nbsp;&nbsp; </SPAN><SPAN blue>End</SPAN> <SPAN blue>Sub<o:p></o:p></SPAN></SPAN></P>
<P><SPAN lang=EN-US 9pt><FONT face=宋体>8、运行程序</FONT></SPAN></P>
<P><SPAN lang=EN-US 9pt><FONT face=宋体><o:p></o:p></FONT></SPAN></P>
<P><SPAN lang=EN-US 9pt><o:p></o:p></SPAN></P>
<P class=MsoNormal 0cm 0pt><B style="mso-bidi-font-weight: " normal><SPAN COLOR: black 10.5pt;><FONT face=宋体><IMG alt=hspace=0 src="http://www.myvc.net/uploadpicture/20032178361441371.jpg" align=baseline border=0></FONT></SPAN></B></P>
<P class=MsoNormal 0cm 0pt><B style="mso-bidi-font-weight: " normal><SPAN COLOR: black 10.5pt;><FONT face=宋体></FONT></SPAN></B>&nbsp;</P>
<P class=MsoNormal 0cm 0pt><B style="mso-bidi-font-weight: " normal><SPAN COLOR: black 10.5pt;><FONT face=宋体>七、用程序改变报表中</FONT></SPAN></B><SPAN lang=EN-US &#39;Times New Roman&#39; 10pt; FONT-FAMILY: 新宋体; mso-bidi-font-family: Roman&#39;; mso-hansi-font-family:>text</SPAN><B style="mso-bidi-font-weight: " normal><SPAN COLOR: black 10.5pt;><FONT face=宋体>的文本<SPAN lang=EN-US><o:p></o:p></SPAN></FONT></SPAN></B></P>
<P class=MsoNormal 0cm 0pt><SPAN 9pt; COLOR: black><FONT face=宋体>代码如下：<SPAN lang=EN-US><o:p></o:p></SPAN></FONT></SPAN></P>
<P class=MsoNormal 0cm 0pt; mso-pagination: none; mso-layout-grid-align: none><SPAN lang=EN-US 9pt; &#39;Times New Roman&#39; FONT-FAMILY: 新宋体; mso-bidi-font-family: Roman&#39;; mso-hansi-font-family:><SPAN style="mso-spacerun: " yes>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN blue>Dim</SPAN> GetTextObject <SPAN blue>As</SPAN> TextObject<o:p></o:p></SPAN></P>
<P class=MsoNormal 0cm 0pt; mso-pagination: none; mso-layout-grid-align: none><SPAN lang=EN-US 9pt; &#39;Times New Roman&#39; FONT-FAMILY: 新宋体; mso-bidi-font-family: Roman&#39;; mso-hansi-font-family:><SPAN style="mso-spacerun: " yes>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN green>' 按名称获取 ReportObject，将其转换为 TextObject，并返回此对象。<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal 0cm 0pt; mso-pagination: none; mso-layout-grid-align: none><SPAN lang=EN-US 9pt; &#39;Times New Roman&#39; FONT-FAMILY: 新宋体; mso-bidi-font-family: Roman&#39;; mso-hansi-font-family:><SPAN style="mso-spacerun: " yes>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>GetTextObject = orpt.ReportDefinition.ReportObjects.Item(text13)<o:p></o:p></SPAN></P>
<P class=MsoNormal 0cm 0pt; mso-pagination: none; mso-layout-grid-align: none><SPAN lang=EN-US 9pt; &#39;Times New Roman&#39; FONT-FAMILY: 新宋体; mso-bidi-font-family: Roman&#39;; mso-hansi-font-family:><SPAN style="mso-spacerun: " yes>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>GetTextObject.Text = XXXX系统<o:p></o:p></SPAN></P>
<P class=MsoNormal 0cm 0pt><SPAN lang=EN-US 9pt><o:p><FONT face=宋体>&nbsp;</FONT></o:p></SPAN></P>
<P class=MsoNormal 0cm 0pt><SPAN 9pt><FONT face=宋体>总结：水晶报表具有非常强大的功能，还可进行导出<SPAN lang=EN-US>WORD、EXCEL、RTF等文件，还可生成复杂、漂亮图表，是进行WEB和WINDOWS报表开发的利器。<o:p></o:p></SPAN></FONT></SPAN></P>
<P class=MsoNormal 0cm 0pt><SPAN lang=EN-US 9pt><o:p><FONT face=宋体>&nbsp;</FONT></o:p></SPAN></P></TD></TR></TBODY></TABLE><img src ="http://www.cnitblog.com/piaoye12345/aggbug/5070.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/piaoye12345/" target="_blank">萌芽的叶子</a> 2005-12-02 10:42 <a href="http://www.cnitblog.com/piaoye12345/archive/2005/12/02/5070.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ASP.NET中水晶报表的使用</title><link>http://www.cnitblog.com/piaoye12345/archive/2005/12/02/5069.html</link><dc:creator>萌芽的叶子</dc:creator><author>萌芽的叶子</author><pubDate>Fri, 02 Dec 2005 02:40:00 GMT</pubDate><guid>http://www.cnitblog.com/piaoye12345/archive/2005/12/02/5069.html</guid><wfw:comment>http://www.cnitblog.com/piaoye12345/comments/5069.html</wfw:comment><comments>http://www.cnitblog.com/piaoye12345/archive/2005/12/02/5069.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/piaoye12345/comments/commentRss/5069.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/piaoye12345/services/trackbacks/5069.html</trackback:ping><description><![CDATA[在我们对VS.Net中的水晶报表（Crystal Reports）进行研究之前，我和我朋友对如何将这个复杂的东东加入我们的Web应用有着非常的好奇心。一周以后，在阅读了大量的“HOWTO”文档之后，我们成功地将一些简单的报告加入到了我们的Asp.net程序中，并得到了一些小决窍。 <BR>　　这篇文章教你如何在.Net Web应用中使用水晶报表，也可以让你在学习过程中少走一些弯路。为了得到最好的效果，读者最好需要有一些基础的Asp.Net访问数据库的知识以及使用VS.Net的开发经验。 <BR>　　简介 <BR>　　水晶报表可以由很多的方法得到，其中一个就是使用VS.Net来创建，它提供了非常丰富模型以使我们能够在运行时操作属性和方法。如果你正在使用VS.Net开发.Net程序，那么你就不需要再安装其它软件了，因为他已经内嵌在VS.Net中了。 <BR>　　优点: <BR>　　VS.Net水晶报表有下面一些主要的优点： <BR><BR><BR>快速的报表开发 <BR><BR>能够导出成为复杂的交互性图表 <BR><BR>可以与其它控件一起在WebForm中使用 <BR><BR>能够动态地将报表导出成为.pdf,.doc,xls,html,rtf等多种格式 <BR><BR>　　结构： <BR>　　一些组件组成了水晶报表的二层结构，需要的Web应用有： <BR>　　客户端 : <BR>　　客户端仅需要一个可以访问嵌入aspx页面报表的游览器就可以了 <BR>　　服务器 : <BR>　　水晶报表引擎（Crystal Report Engine (CREngine.dll)） <BR>　　通过它可以完成一些任务，如在报告文件中合并数据，转换报告为其它格式等。也正是因为报告引擎的作用，才可以将Asp.Net中的水晶报表转换成为普通HTML格式 <BR>　　水晶报表设计器（Crystal Report Designer (CRDesigner.dll)） <BR>　　水晶报表就是在设计器中创建的，在设计器中你可以设计标题，插入数据，公式，图表，子报表等。 <BR>　　.rpt报表文件 <BR>　　执行报表中的第一步就是在水晶报表设计器接口创建此报表，在默认安装中微软已经提供了一些现成的.rpt例子。 <BR>　　Data Source <BR>　　.rpt文件取得数据库的方法取决于你方法的选择，你能选择让水晶报表自己选择数据而不使用任何代码或者也可以选择手动的组装DataSet,然后再将其传送到报表文件。 <BR>　　水晶报表查看控件（Crystal Report Viewer web form Control (CRWebFormViewer.dll)） <BR>　　水晶报表查看控件是一个WebForm控件，可以将它看成是一个在.aspx页面中存放报表的容器。 注意：在一些复杂的操作中，报表服务器与Web服务器可能不在同一物理主机上，Web服务器将HTTP请求传送到报表服务器上去。水晶报表也可以当做WebService来执行。 <BR>　　执行模式 <BR>　　水晶报表取数据可以使用下面的方法实现： <BR>　　Pull 模式: <BR>　　被请求时，水晶报表直接根据指定的驱动连接数据库然后组装这些数据。 <BR>　　Push 模式 : <BR>　　此时开发表不得不自己编写代码连接数据并组装DataSet，同时将它传送至报表。在些这种情况下，通过使用连接共享以及限制记录集合的大小，可以使用报表性能最大化。 <BR>　　报表类型： <BR>　　水晶报表设计器能够直接包含报表至工程也能够使用独立的报表对象。 <BR>　　Strongly-typed 报表 : <BR>　　当你将报表文件加入到项目中去时，它就变成了一个了“ strongly-typed“报表。在这些情况下，你将拥有直接创建报表的对象的权力，这将减少一些代码并且能够提供一些性能。 <BR>　　Un-Typed 报表 : <BR>　　这里的报表并不直接包含在项目中，因此称为‘un-typed’ 报表。在这种情况下，你不得不使用水晶报表的”ReportDocuemt“对象建立一个实例，并且”手动“地凋用报表。 <BR>　　其它注意事项 <BR>　　尽管水晶报表查看器拥有一些很酷的功能，如缩放、页面导航等。但是他不提供打印功能，你不得不调用游览器的打印功能。 <BR>　　VS.Net中的水晶报表如果没有注册，那么它只能使用30次，30次后，”保存“功能就不能再使用了。为了避免这个，你不是不在 http://www.crystaldecisions.com/这里注册此产品。 (好像不是这样子的，不注册也好像能用很长的时间，只是不能提供支持） <BR>　　默认安装的水晶报表只能支持5个用户，为了支持更多的用户，你不得不在 http://www.crystaldecisions.com/中购买许可证。 <BR>让我们感受一下－－－－在Asp.net中使用一个现成的水晶报表文件 <BR><BR>　　让我们先感受一下在WebForm中使用水晶报表的感觉。 　　 <BR>1) 从WebForm工具栏中拖动水晶报表查看器控件(Crystal Report Viewer)至.aspx页面中。 <BR><BR><BR>　 <BR><BR>　　2) 调出水晶报表查看器控件的属性窗口 　 <BR>　　3) 点击［...］按钮查看"Data Binding"属性，并弹出了DataBinding窗口。 <BR>　　4) 从左边的"Bindable属性”区中选择“Report Source” <BR>　　5) 选中"自定义绑定表达式"单选按钮，在右边的底部的窗口中指定.rpt文件的文件名和路径，例如："C:\\Program Files\\Microsoft Visual Studio.NET\\Crystal Reports\\Samples\\Reports\\General Business\\World Sales Report.rpt"，然后”确定“ <BR><BR>　　注意：文件”World Sales Report.rpt“文件是在VS.Net安装时创建的。如果你在安装过程中指定了其它目录，此时你最好确认一下路径的正确性。 <BR>　　上面的步骤中实际上是插入了下面这些代码至Asp.Net文件中： ＜%@ Register TagPrefix="cr" Namespace="CrystalDecisions.Web" Assembly="CrystalDecisions.Web" %＞ <BR><BR><BR>　　以及： ＜CR:CRYSTALREPORTVIEWER＞ <BR>id="CrystalReportViewer1" <BR>runat="server" Width="350px" Height="50px" <BR>ReportSource=" ＜%# "C:\\Program Files\\Microsoft Visual Studio.NET\\Crystal Reports\\Samples\\Reports\\General Business\\World Sales Report.rpt" %＞"＞ <BR>＜/CR:CRYSTALREPORTVIEWER＞ <BR><BR><BR>　　 注意：在飞刀我的VS.Net正式版中自动生成的代码中ReportSource产生的样式不是这样子的，它是： ReportSource=" ＜%# C:\xxxxx\xxx.rpt %＞" <BR><BR><BR>　　这样是错误的，会出现错误信息，有两处错误： <BR>DataBind中要有双引号，因此外部只能用单引号 <BR>目录分隔符号不能使用"\",必须使用"\\" <BR><BR>　　必须按照使用本文介绍的格式来手动修改，这也算是VS.Net的一个Bug吧。 <BR>　　6) 在Page_Load方法中调用DataBind方法。（代码为VB.Net） <BR><BR><BR>Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) <BR>DataBind() <BR>End Sub <BR><BR><BR>　　7)保存并编译你的页面。 现在，你就有一个内嵌水晶报表的WebForm页面了。 <BR>　　注意：实际开发中，一开始会出现无法访问inetsrv目录的错误，解决的办法是改变其目录的安全属性，使User用户有可写的权限。飞刀我发现.Net系统自已给出的解决方法是没有用的，也可能是我使用的是Windows.Net操作系统的原因。 <img src ="http://www.cnitblog.com/piaoye12345/aggbug/5069.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/piaoye12345/" target="_blank">萌芽的叶子</a> 2005-12-02 10:40 <a href="http://www.cnitblog.com/piaoye12345/archive/2005/12/02/5069.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>相关网址</title><link>http://www.cnitblog.com/piaoye12345/archive/2005/12/02/5064.html</link><dc:creator>萌芽的叶子</dc:creator><author>萌芽的叶子</author><pubDate>Fri, 02 Dec 2005 02:11:00 GMT</pubDate><guid>http://www.cnitblog.com/piaoye12345/archive/2005/12/02/5064.html</guid><wfw:comment>http://www.cnitblog.com/piaoye12345/comments/5064.html</wfw:comment><comments>http://www.cnitblog.com/piaoye12345/archive/2005/12/02/5064.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/piaoye12345/comments/commentRss/5064.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/piaoye12345/services/trackbacks/5064.html</trackback:ping><description><![CDATA[<LI><A href="http://www.vckbase.com/tools/listtools.asp?tclsid=113&amp;page=2" target=_blank>水晶报表控件CrystalReport</A> - 提供水晶报表控件。 
<LI><A href="http://www.pdown.net/list.asp?id=1169" target=_blank>水晶报表 中文帮助手册</A> - 提供水晶报表中文帮助手册。 
<LI><A href="http://www.east-asiainfo.com/download/show.php?id=26" target=_blank>水晶报表 6.0</A> - 提供水晶报表6.0及软件介绍。 
<LI><A href="http://www.jsfy.jsol.net/personal/vbhome/view.asp?ID=32757" target=_blank>水晶报表 9</A> - 提供水晶报表9。 
<LI><A href="http://www.csdn.net/develop/read_article.asp?id=12291" target=_blank>在Visual Studio.NET中使用Crystal Report(上)</A> - 提供在Visual Studio.NET中使用Crystal Report教程。 
<LI><A href="http://www.csdn.net/develop/read_article.asp?id=12293" target=_blank>在Visual Studio.NET中使用Crystal Report(下)</A> - 提供在Visual Studio.NET中使用Crystal Report教程。 
<LI><A href="http://www.csdn.net/develop/read_article.asp?id=12292" target=_blank>在Visual Studio.NET中使用Crystal Report(中)</A> - 提供在Visual Studio.NET中使用Crystal Report教程。 
<LI><A href="http://www.yesky.com/20020618/1616438.shtml" target=_blank>Asp.Net中使用水晶报表</A> - 介绍在.Net Web应用中使用水晶报表的方法。 
<LI><A href="http://www.ccidnet.com/tech/guide/2000/06/07/58_834.html" target=_blank>Crystal Reports for VB5 报表编程经验</A> - 分享在开发VB5系统中采用VB5企业版附带的水晶报表的经验。 
<LI><A href="http://download.pchome.net/development/vb/10723.html" target=_blank>Segate Crystal Reports Pro水晶报表控件4.6.1.116</A> - 推荐报表控件《Segate Crystal Reports Pro》。</LI><img src ="http://www.cnitblog.com/piaoye12345/aggbug/5064.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/piaoye12345/" target="_blank">萌芽的叶子</a> 2005-12-02 10:11 <a href="http://www.cnitblog.com/piaoye12345/archive/2005/12/02/5064.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Asp.Net中使用水晶报表（中）</title><link>http://www.cnitblog.com/piaoye12345/archive/2005/12/02/5062.html</link><dc:creator>萌芽的叶子</dc:creator><author>萌芽的叶子</author><pubDate>Fri, 02 Dec 2005 02:05:00 GMT</pubDate><guid>http://www.cnitblog.com/piaoye12345/archive/2005/12/02/5062.html</guid><wfw:comment>http://www.cnitblog.com/piaoye12345/comments/5062.html</wfw:comment><comments>http://www.cnitblog.com/piaoye12345/archive/2005/12/02/5062.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/piaoye12345/comments/commentRss/5062.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/piaoye12345/services/trackbacks/5062.html</trackback:ping><description><![CDATA[<SPAN class=Contents>使用Pull模式 <BR><BR>　　我们将通过下面的这些步骤来通过Pull模式来执行水晶报表 <BR><BR>　　1.首先创建rpt文件，并使用水晶报表设计接口设置一些必须的数据连接。 <BR><BR>　　2.拖放一个 CrystalReportViewer控件至aspx页面，设置它的属性指定我们上一步创建的.rpt文件。 <BR><BR>　　3. 在代码中调用DataBind方法。 <BR><BR>　　创建 .rpt 文件: <BR><BR>　　1) 在右击”解决方案游览器“，在弹出的菜单中选择”添加“－－”添加新项“－－&gt;”Crystal Report” 　 <BR><BR><BR><BR>　　2) 在”Crystal Report 库”中选择”作为空白报表“单选按钮，最后单击“确定“。 　 <BR><BR><BR><BR>　　3)这里将弹出水晶报表设计器。 　 <BR><BR><BR><BR>　　4) 右击报表中的”详细资料区”，选择“数据库”－&gt;“添加/删除数据库..." <BR><BR>　　5) 在弹出的”数据库专家“中，扩展”OLE DB(ADO)“选项，此时会弹出另外一个”OLE DB(ADO)“窗口。 <BR><BR>　　6) 在 "OLE DB (ADO)" 弹出窗口中,选择 "Microsoft OLE DB Provider for SQL Server" 然后 "Next" <BR><BR><BR><BR>　　7) 指定连接的信息 <BR><BR>　　服务器 : ASPCN (您的机器是什么名字就写什么) <BR>　　用户 ID: sa <BR>　　密码: <BR>　　数据库 : Pubs <BR><BR>　　8) 单击”Next“，最后单击”Finish“按钮。 <BR><BR>　　9) 这时你就能在”数据库专家“窗口中看到我们选择的数据库。 <BR><BR>　　10) 扩展”Pubs“数据库，扩展”表“，选择”Stores“表并将其加到”选定的表“区中，单击”OK"按钮。 <BR><BR>　 <BR><BR>　　11) 现在在”字段资源浏览器“中就会在左边”数据库字段“区中显示你选择的表，以及表中的字段。 <BR><BR>　　12) 拖放需要的字段进入报表的”详细资料“区。字段名将会自动出现在”页眉“区。如果你想修改头部文字，则可以右击”页眉“区中的文字，选择”编辑文本对象“选项并进行编辑。 <BR><BR><BR><BR>　　13) 保存，这样我们就有了一个水晶报表文件。 <BR><BR>　　创建 CrystalReportViewer 控件 <BR><BR>　　14) 回到前面的WebForm中，拖放一个Crystal Report Viewer控件到页面中去。 <BR><BR>　　15) 调出Crystal Report Viewer控件的属性窗口，选择“DataBindings"区点击［...］ <BR><BR>　　16) ”Crystal Report Viewer 数据绑定窗口”中，在右边的“可绑定属性”中选择”ReportSource“，并选择右下角的“自定义绑定表达式”中指定.rpt文件路径。 　 <BR><BR><BR><BR>　　17) 此时你能够从Crystal Report Viewer 控件中看到使用一些虚拟数据组成的报表文件的预览。 <BR><BR>　　注意：在上面的例子中，CrystalReportViewer可以在设计时直接调用真实的数据，因为此时数据已经保存。在这种情况下，设计时当没有保存数据时，他是不能显示数据的。取而代这的是显示一些虚拟的数据，只有在执行时才会选取真实的数据。 <BR><BR>　　Code Behind 程序设计 <BR><BR>　　18) 在Page_Load方法中调用DataBind方法。 <BR><BR>　　执行你的程序 <BR><BR>　　19) 创建并运行你的程序！ 　 <BR><BR><BR>　　您现在就可以直接在Web页面中使用水晶报表内置的一些功能，如页面导航，缩放等。 <BR><BR><BR>　　我们将通过下面的这些步骤来通过Pull模式来执行水晶报表 <BR><BR>　　1.首先创建rpt文件，并使用水晶报表设计接口设置一些必须的数据连接。 <BR><BR>　　2.拖放一个 CrystalReportViewer控件至aspx页面，设置它的属性指定我们上一步创建的.rpt文件。 <BR><BR>　　3. 在代码中调用DataBind方法。 <BR><BR>　　创建 .rpt 文件: <BR><BR>　　1) 在右击”解决方案游览器“，在弹出的菜单中选择”添加“－－”添加新项“－－&gt;”Crystal Report” 　 <BR><BR><BR><BR>　　2) 在”Crystal Report 库”中选择”作为空白报表“单选按钮，最后单击“确定“。 　 <BR><BR><BR><BR>　　3)这里将弹出水晶报表设计器。 　 <BR><BR><BR><BR>　　4) 右击报表中的”详细资料区”，选择“数据库”－&gt;“添加/删除数据库..." <BR><BR>　　5) 在弹出的”数据库专家“中，扩展”OLE DB(ADO)“选项，此时会弹出另外一个”OLE DB(ADO)“窗口。 <BR><BR>　　6) 在 "OLE DB (ADO)" 弹出窗口中,选择 "Microsoft OLE DB Provider for SQL Server" 然后 "Next" <BR><BR><BR><BR>　　7) 指定连接的信息 <BR><BR>　　服务器 : ASPCN (您的机器是什么名字就写什么) <BR>　　用户 ID: sa <BR>　　密码: <BR>　　数据库 : Pubs <BR><BR>　　8) 单击”Next“，最后单击”Finish“按钮。 <BR><BR>　　9) 这时你就能在”数据库专家“窗口中看到我们选择的数据库。 <BR><BR>　　10) 扩展”Pubs“数据库，扩展”表“，选择”Stores“表并将其加到”选定的表“区中，单击”OK"按钮。 <BR><BR>　 <BR><BR>　　11) 现在在”字段资源浏览器“中就会在左边”数据库字段“区中显示你选择的表，以及表中的字段。 <BR><BR>　　12) 拖放需要的字段进入报表的”详细资料“区。字段名将会自动出现在”页眉“区。如果你想修改头部文字，则可以右击”页眉“区中的文字，选择”编辑文本对象“选项并进行编辑。 <BR><BR><BR><BR>　　13) 保存，这样我们就有了一个水晶报表文件。 <BR><BR>　　创建 CrystalReportViewer 控件 <BR><BR>　　14) 回到前面的WebForm中，拖放一个Crystal Report Viewer控件到页面中去。 <BR><BR>　　15) 调出Crystal Report Viewer控件的属性窗口，选择“DataBindings"区点击［...］ <BR><BR>　　16) ”Crystal Report Viewer 数据绑定窗口”中，在右边的“可绑定属性”中选择”ReportSource“，并选择右下角的“自定义绑定表达式”中指定.rpt文件路径。 　 <BR><BR><BR><BR>　　17) 此时你能够从Crystal Report Viewer 控件中看到使用一些虚拟数据组成的报表文件的预览。 <BR><BR>　　注意：在上面的例子中，CrystalReportViewer可以在设计时直接调用真实的数据，因为此时数据已经保存。在这种情况下，设计时当没有保存数据时，他是不能显示数据的。取而代这的是显示一些虚拟的数据，只有在执行时才会选取真实的数据。 <BR><BR>　　Code Behind 程序设计 <BR><BR>　　18) 在Page_Load方法中调用DataBind方法。 <BR><BR>　　执行你的程序 <BR><BR>　　19) 创建并运行你的程序！ 　 <BR><BR><BR>　　您现在就可以直接在Web页面中使用水晶报表内置的一些功能，如页面导航，缩放等。 <BR><BR><BR>　　我们将通过下面的这些步骤来通过Pull模式来执行水晶报表 <BR><BR>　　1.首先创建rpt文件，并使用水晶报表设计接口设置一些必须的数据连接。 <BR><BR>　　2.拖放一个 CrystalReportViewer控件至aspx页面，设置它的属性指定我们上一步创建的.rpt文件。 <BR><BR>　　3. 在代码中调用DataBind方法。 <BR><BR>　　创建 .rpt 文件: <BR><BR>　　1) 在右击”解决方案游览器“，在弹出的菜单中选择”添加“－－”添加新项“－－&gt;”Crystal Report” 　 <BR><BR><BR><BR>　　2) 在”Crystal Report 库”中选择”作为空白报表“单选按钮，最后单击“确定“。 　 <BR><BR><BR><BR>　　3)这里将弹出水晶报表设计器。 　 <BR><BR><BR><BR>　　4) 右击报表中的”详细资料区”，选择“数据库”－&gt;“添加/删除数据库..." <BR><BR>　　5) 在弹出的”数据库专家“中，扩展”OLE DB(ADO)“选项，此时会弹出另外一个”OLE DB(ADO)“窗口。 <BR><BR>　　6) 在 "OLE DB (ADO)" 弹出窗口中,选择 "Microsoft OLE DB Provider for SQL Server" 然后 "Next" <BR><BR><BR><BR>　　7) 指定连接的信息 <BR><BR>　　服务器 : ASPCN (您的机器是什么名字就写什么) <BR>　　用户 ID: sa <BR>　　密码: <BR>　　数据库 : Pubs <BR><BR>　　8) 单击”Next“，最后单击”Finish“按钮。 <BR><BR>　　9) 这时你就能在”数据库专家“窗口中看到我们选择的数据库。 <BR><BR>　　10) 扩展”Pubs“数据库，扩展”表“，选择”Stores“表并将其加到”选定的表“区中，单击”OK"按钮。 <BR><BR>　 <BR><BR>　　11) 现在在”字段资源浏览器“中就会在左边”数据库字段“区中显示你选择的表，以及表中的字段。 <BR><BR>　　12) 拖放需要的字段进入报表的”详细资料“区。字段名将会自动出现在”页眉“区。如果你想修改头部文字，则可以右击”页眉“区中的文字，选择”编辑文本对象“选项并进行编辑。 <BR><BR><BR><BR>　　13) 保存，这样我们就有了一个水晶报表文件。 <BR><BR>　　创建 CrystalReportViewer 控件 <BR><BR>　　14) 回到前面的WebForm中，拖放一个Crystal Report Viewer控件到页面中去。 <BR><BR>　　15) 调出Crystal Report Viewer控件的属性窗口，选择“DataBindings"区点击［...］ <BR><BR>　　16) ”Crystal Report Viewer 数据绑定窗口”中，在右边的“可绑定属性”中选择”ReportSource“，并选择右下角的“自定义绑定表达式”中指定.rpt文件路径。 　 <BR><BR><BR><BR>　　17) 此时你能够从Crystal Report Viewer 控件中看到使用一些虚拟数据组成的报表文件的预览。 <BR><BR>　　注意：在上面的例子中，CrystalReportViewer可以在设计时直接调用真实的数据，因为此时数据已经保存。在这种情况下，设计时当没有保存数据时，他是不能显示数据的。取而代这的是显示一些虚拟的数据，只有在执行时才会选取真实的数据。 <BR><BR>　　Code Behind 程序设计 <BR><BR>　　18) 在Page_Load方法中调用DataBind方法。 <BR><BR>　　执行你的程序 <BR><BR>　　19) 创建并运行你的程序！ 　 <BR><BR><BR>　　您现在就可以直接在Web页面中使用水晶报表内置的一些功能，如页面导航，缩放等。 <BR><A HREF="/piaoye12345/archive/2005/12/02/5061.html">Asp.Net中使用水晶报表（中）</A> <A HREF="/piaoye12345/archive/2005/12/02/5063.html">Asp.Net中使用水晶报表（下）</A></SPAN><img src ="http://www.cnitblog.com/piaoye12345/aggbug/5062.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/piaoye12345/" target="_blank">萌芽的叶子</a> 2005-12-02 10:05 <a href="http://www.cnitblog.com/piaoye12345/archive/2005/12/02/5062.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Asp.Net中使用水晶报表（上）</title><link>http://www.cnitblog.com/piaoye12345/archive/2005/12/02/5061.html</link><dc:creator>萌芽的叶子</dc:creator><author>萌芽的叶子</author><pubDate>Fri, 02 Dec 2005 01:57:00 GMT</pubDate><guid>http://www.cnitblog.com/piaoye12345/archive/2005/12/02/5061.html</guid><wfw:comment>http://www.cnitblog.com/piaoye12345/comments/5061.html</wfw:comment><comments>http://www.cnitblog.com/piaoye12345/archive/2005/12/02/5061.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/piaoye12345/comments/commentRss/5061.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/piaoye12345/services/trackbacks/5061.html</trackback:ping><description><![CDATA[<SPAN class=Contents>在我们对VS.Net中的水晶报表（Crystal Reports）进行研究之前，我和我朋友对如何将这个复杂的东东加入我们的Web应用有着非常的好奇心。一周以后，在阅读了大量的“HOWTO”文档之后，我们成功地将一些简单的报告加入到了我们的Asp.net程序中，并得到了一些小决窍。 <BR><BR>　　这篇文章教你如何在.Net Web应用中使用水晶报表，也可以让你在学习过程中少走一些弯路。为了得到最好的效果，读者最好需要有一些基础的Asp.Net访问数据库的知识以及使用VS.Net的开发经验。 <BR><BR>　　简介 <BR><BR>　　水晶报表可以由很多的方法得到，其中一个就是使用VS.Net来创建，它提供了非常丰富模型以使我们能够在运行时操作属性和方法。如果你正在使用VS.Net开发.Net程序，那么你就不需要再安装其它软件了，因为他已经内嵌在VS.Net中了。 <BR><BR>　　优点: <BR><BR>　　VS.Net水晶报表有下面一些主要的优点： <BR><BR>快速的报表开发 <BR><BR>能够导出成为复杂的交互性图表 <BR><BR>可以与其它控件一起在WebForm中使用 <BR><BR>能够动态地将报表导出成为.pdf,.doc,xls,html,rtf等多种格式 <BR><BR>　　结构： <BR><BR>　　一些组件组成了水晶报表的二层结构，需要的Web应用有： <BR><BR>　　客户端 : <BR><BR>　　客户端仅需要一个可以访问嵌入aspx页面报表的游览器就可以了 <BR><BR>　　服务器 : <BR><BR>　　水晶报表引擎（Crystal Report Engine (CREngine.dll)） <BR><BR>　　通过它可以完成一些任务，如在报告文件中合并数据，转换报告为其它格式等。也正是因为报告引擎的作用，才可以将Asp.Net中的水晶报表转换成为普通HTML格式 <BR><BR>　　水晶报表设计器（Crystal Report Designer (CRDesigner.dll)） <BR><BR>　　水晶报表就是在设计器中创建的，在设计器中你可以设计标题，插入数据，公式，图表，子报表等。 <BR><BR>　　.rpt报表文件 <BR><BR>　　执行报表中的第一步就是在水晶报表设计器接口创建此报表，在默认安装中微软已经提供了一些现成的.rpt例子。 <BR><BR>　　Data Source <BR><BR>　　.rpt文件取得数据库的方法取决于你方法的选择，你能选择让水晶报表自己选择数据而不使用任何代码或者也可以选择手动的组装DataSet,然后再将其传送到报表文件。 <BR><BR>　　水晶报表查看控件（Crystal Report Viewer web form Control (CRWebFormViewer.dll)） <BR><BR>　　水晶报表查看控件是一个WebForm控件，可以将它看成是一个在.aspx页面中存放报表的容器。 注意：在一些复杂的操作中，报表服务器与Web服务器可能不在同一物理主机上，Web服务器将HTTP请求传送到报表服务器上去。水晶报表也可以当做WebService来执行。 <BR><BR>　　执行模式 <BR><BR>　　水晶报表取数据可以使用下面的方法实现： <BR><BR>　　Pull 模式: <BR><BR>　　被请求时，水晶报表直接根据指定的驱动连接数据库然后组装这些数据。 <BR><BR>　　Push 模式 : <BR><BR>　　此时开发表不得不自己编写代码连接数据并组装DataSet，同时将它传送至报表。在些这种情况下，通过使用连接共享以及限制记录集合的大小，可以使用报表性能最大化。 <BR><BR>　　报表类型： <BR><BR>　　水晶报表设计器能够直接包含报表至工程也能够使用独立的报表对象。 <BR><BR>　　Strongly-typed 报表 : <BR><BR>　　当你将报表文件加入到项目中去时，它就变成了一个了“ strongly-typed“报表。在这些情况下，你将拥有直接创建报表的对象的权力，这将减少一些代码并且能够提供一些性能。 <BR><BR>　　Un-Typed 报表 : <BR><BR>　　这里的报表并不直接包含在项目中，因此称为‘un-typed’ 报表。在这种情况下，你不得不使用水晶报表的”ReportDocuemt“对象建立一个实例，并且”手动“地凋用报表。 <BR><BR>　　其它注意事项 <BR><BR>　　尽管水晶报表查看器拥有一些很酷的功能，如缩放、页面导航等。但是他不提供打印功能，你不得不调用游览器的打印功能。 <BR><BR>　　VS.Net中的水晶报表如果没有注册，那么它只能使用30次，30次后，”保存“功能就不能再使用了。为了避免这个，你不是不在 http://www.crystaldecisions.com/这里注册此产品。 (好像不是这样子的，不注册也好像能用很长的时间，只是不能提供支持） <BR><BR>　　默认安装的水晶报表只能支持5个用户，为了支持更多的用户，你不得不在 http://www.crystaldecisions.com/中购买许可证。 <BR><BR><BR>　　让我们感受一下－－－－在Asp.net中使用一个现成的水晶报表文件 <BR><BR><BR><BR>　　让我们先感受一下在WebForm中使用水晶报表的感觉。 　　 <BR><BR>1) 从WebForm工具栏中拖动水晶报表查看器控件(Crystal Report Viewer)至.aspx页面中。 <BR><BR><BR><BR>　 <BR><BR><BR><BR>　　2) 调出水晶报表查看器控件的属性窗口 　 <BR><BR>　　3) 点击［...］按钮查看"Data Binding"属性，并弹出了DataBinding窗口。 <BR><BR>　　4) 从左边的"Bindable属性”区中选择“Report Source” <BR><BR>　　5) 选中"自定义绑定表达式"单选按钮，在右边的底部的窗口中指定.rpt文件的文件名和路径，例如："C:\\Program Files\\Microsoft Visual Studio.NET\\Crystal Reports\\Samples\\Reports\\General Business\\World Sales Report.rpt"，然后”确定“ <BR><BR><BR><BR>　　注意：文件”World Sales Report.rpt“文件是在VS.Net安装时创建的。如果你在安装过程中指定了其它目录，此时你最好确认一下路径的正确性。 <BR><BR>　　上面的步骤中实际上是插入了下面这些代码至Asp.Net文件中： <BR><BR>＜％@ Register TagPrefix="cr" Namespace="CrystalDecisions.Web" Assembly="CrystalDecisions.Web" ％＞ <BR><BR><BR><BR>　　以及： <BR><BR>＜CR:CRYSTALREPORTVIEWER＞ <BR>id="CrystalReportViewer1" <BR>runat="server" Width="350px" Height="50px" <BR>ReportSource=' ＜％# "C:\\Program Files\\Microsoft Visual Studio.NET\\Crystal Reports\\Samples\\Reports\\General Business\\World Sales Report.rpt" ％＞'＞ <BR>＜/CR:CRYSTALREPORTVIEWER＞ <BR><BR><BR><BR>　　 注意：在飞刀我的VS.Net正式版中自动生成的代码中ReportSource产生的样式不是这样子的，它是： <BR><BR>ReportSource=" ＜％# C:\xxxxx\xxx.rpt ％＞" <BR><BR><BR><BR>　　这样是错误的，会出现错误信息，有两处错误： <BR><BR>DataBind中要有双引号，因此外部只能用单引号 <BR>目录分隔符号不能使用"\",必须使用"\\" <BR>　　必须按照使用本文介绍的格式来手动修改，这也算是VS.Net的一个Bug吧。 <BR><BR>　　6) 在Page_Load方法中调用DataBind方法。（代码为VB.Net） <BR><BR>Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) <BR><BR>DataBind() <BR><BR>End Sub <BR><BR><BR><BR><BR>　　7)保存并编译你的页面。 现在，你就有一个内嵌水晶报表的WebForm页面了。 <BR><BR>　　注意：实际开发中，一开始会出现无法访问inetsrv目录的错误，解决的办法是改变其目录的安全属性，使User用户有可写的权限。飞刀我发现.Net系统自已给出的解决方法是没有用的，也可能是我使用的是Windows.Net操作系统的原因。 <BR><BR><BR><BR><BR>　　这篇文章教你如何在.Net Web应用中使用水晶报表，也可以让你在学习过程中少走一些弯路。为了得到最好的效果，读者最好需要有一些基础的Asp.Net访问数据库的知识以及使用VS.Net的开发经验。 <BR><BR>　　简介 <BR><BR>　　水晶报表可以由很多的方法得到，其中一个就是使用VS.Net来创建，它提供了非常丰富模型以使我们能够在运行时操作属性和方法。如果你正在使用VS.Net开发.Net程序，那么你就不需要再安装其它软件了，因为他已经内嵌在VS.Net中了。 <BR><BR>　　优点: <BR><BR>　　VS.Net水晶报表有下面一些主要的优点： <BR><BR>快速的报表开发 <BR><BR>能够导出成为复杂的交互性图表 <BR><BR>可以与其它控件一起在WebForm中使用 <BR><BR>能够动态地将报表导出成为.pdf,.doc,xls,html,rtf等多种格式 <BR><BR>　　结构： <BR><BR>　　一些组件组成了水晶报表的二层结构，需要的Web应用有： <BR><BR>　　客户端 : <BR><BR>　　客户端仅需要一个可以访问嵌入aspx页面报表的游览器就可以了 <BR><BR>　　服务器 : <BR><BR>　　水晶报表引擎（Crystal Report Engine (CREngine.dll)） <BR><BR>　　通过它可以完成一些任务，如在报告文件中合并数据，转换报告为其它格式等。也正是因为报告引擎的作用，才可以将Asp.Net中的水晶报表转换成为普通HTML格式 <BR><BR>　　水晶报表设计器（Crystal Report Designer (CRDesigner.dll)） <BR><BR>　　水晶报表就是在设计器中创建的，在设计器中你可以设计标题，插入数据，公式，图表，子报表等。 <BR><BR>　　.rpt报表文件 <BR><BR>　　执行报表中的第一步就是在水晶报表设计器接口创建此报表，在默认安装中微软已经提供了一些现成的.rpt例子。 <BR><BR>　　Data Source <BR><BR>　　.rpt文件取得数据库的方法取决于你方法的选择，你能选择让水晶报表自己选择数据而不使用任何代码或者也可以选择手动的组装DataSet,然后再将其传送到报表文件。 <BR><BR>　　水晶报表查看控件（Crystal Report Viewer web form Control (CRWebFormViewer.dll)） <BR><BR>　　水晶报表查看控件是一个WebForm控件，可以将它看成是一个在.aspx页面中存放报表的容器。 注意：在一些复杂的操作中，报表服务器与Web服务器可能不在同一物理主机上，Web服务器将HTTP请求传送到报表服务器上去。水晶报表也可以当做WebService来执行。 <BR><BR>　　执行模式 <BR><BR>　　水晶报表取数据可以使用下面的方法实现： <BR><BR>　　Pull 模式: <BR><BR>　　被请求时，水晶报表直接根据指定的驱动连接数据库然后组装这些数据。 <BR><BR>　　Push 模式 : <BR><BR>　　此时开发表不得不自己编写代码连接数据并组装DataSet，同时将它传送至报表。在些这种情况下，通过使用连接共享以及限制记录集合的大小，可以使用报表性能最大化。 <BR><BR>　　报表类型： <BR><BR>　　水晶报表设计器能够直接包含报表至工程也能够使用独立的报表对象。 <BR><BR>　　Strongly-typed 报表 : <BR><BR>　　当你将报表文件加入到项目中去时，它就变成了一个了“ strongly-typed“报表。在这些情况下，你将拥有直接创建报表的对象的权力，这将减少一些代码并且能够提供一些性能。 <BR><BR>　　Un-Typed 报表 : <BR><BR>　　这里的报表并不直接包含在项目中，因此称为‘un-typed’ 报表。在这种情况下，你不得不使用水晶报表的”ReportDocuemt“对象建立一个实例，并且”手动“地凋用报表。 <BR><BR>　　其它注意事项 <BR><BR>　　尽管水晶报表查看器拥有一些很酷的功能，如缩放、页面导航等。但是他不提供打印功能，你不得不调用游览器的打印功能。 <BR><BR>　　VS.Net中的水晶报表如果没有注册，那么它只能使用30次，30次后，”保存“功能就不能再使用了。为了避免这个，你不是不在 http://www.crystaldecisions.com/这里注册此产品。 (好像不是这样子的，不注册也好像能用很长的时间，只是不能提供支持） <BR><BR>　　默认安装的水晶报表只能支持5个用户，为了支持更多的用户，你不得不在 http://www.crystaldecisions.com/中购买许可证。 <BR><BR><BR>　　让我们感受一下－－－－在Asp.net中使用一个现成的水晶报表文件 <BR><BR><BR><BR>　　让我们先感受一下在WebForm中使用水晶报表的感觉。 　　 <BR><BR>1) 从WebForm工具栏中拖动水晶报表查看器控件(Crystal Report Viewer)至.aspx页面中。 <BR><BR><BR><BR>　 <BR><BR><BR><BR>　　2) 调出水晶报表查看器控件的属性窗口 　 <BR><BR>　　3) 点击［...］按钮查看"Data Binding"属性，并弹出了DataBinding窗口。 <BR><BR>　　4) 从左边的"Bindable属性”区中选择“Report Source” <BR><BR>　　5) 选中"自定义绑定表达式"单选按钮，在右边的底部的窗口中指定.rpt文件的文件名和路径，例如："C:\\Program Files\\Microsoft Visual Studio.NET\\Crystal Reports\\Samples\\Reports\\General Business\\World Sales Report.rpt"，然后”确定“ <BR><BR><BR><BR>　　注意：文件”World Sales Report.rpt“文件是在VS.Net安装时创建的。如果你在安装过程中指定了其它目录，此时你最好确认一下路径的正确性。 <BR><BR>　　上面的步骤中实际上是插入了下面这些代码至Asp.Net文件中： <BR><BR>＜％@ Register TagPrefix="cr" Namespace="CrystalDecisions.Web" Assembly="CrystalDecisions.Web" ％＞ <BR><BR><BR><BR>　　以及： <BR><BR>＜CR:CRYSTALREPORTVIEWER＞ <BR>id="CrystalReportViewer1" <BR>runat="server" Width="350px" Height="50px" <BR>ReportSource=' ＜％# "C:\\Program Files\\Microsoft Visual Studio.NET\\Crystal Reports\\Samples\\Reports\\General Business\\World Sales Report.rpt" ％＞'＞ <BR>＜/CR:CRYSTALREPORTVIEWER＞ <BR><BR><BR><BR>　　 注意：在飞刀我的VS.Net正式版中自动生成的代码中ReportSource产生的样式不是这样子的，它是： <BR><BR>ReportSource=" ＜％# C:\xxxxx\xxx.rpt ％＞" <BR><BR><BR><BR>　　这样是错误的，会出现错误信息，有两处错误： <BR><BR>DataBind中要有双引号，因此外部只能用单引号 <BR>目录分隔符号不能使用"\",必须使用"\\" <BR>　　必须按照使用本文介绍的格式来手动修改，这也算是VS.Net的一个Bug吧。 <BR><BR>　　6) 在Page_Load方法中调用DataBind方法。（代码为VB.Net） <BR><BR>Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) <BR><BR>DataBind() <BR><BR>End Sub <BR><BR><BR><BR><BR>　　7)保存并编译你的页面。 现在，你就有一个内嵌水晶报表的WebForm页面了。 <BR><BR>　　注意：实际开发中，一开始会出现无法访问inetsrv目录的错误，解决的办法是改变其目录的安全属性，使User用户有可写的权限。飞刀我发现.Net系统自已给出的解决方法是没有用的，也可能是我使用的是Windows.Net操作系统的原因。 <BR><BR><BR><BR><BR>　　这篇文章教你如何在.Net Web应用中使用水晶报表，也可以让你在学习过程中少走一些弯路。为了得到最好的效果，读者最好需要有一些基础的Asp.Net访问数据库的知识以及使用VS.Net的开发经验。 <BR><BR>　　简介 <BR><BR>　　水晶报表可以由很多的方法得到，其中一个就是使用VS.Net来创建，它提供了非常丰富模型以使我们能够在运行时操作属性和方法。如果你正在使用VS.Net开发.Net程序，那么你就不需要再安装其它软件了，因为他已经内嵌在VS.Net中了。 <BR><BR>　　优点: <BR><BR>　　VS.Net水晶报表有下面一些主要的优点： <BR><BR>快速的报表开发 <BR><BR>能够导出成为复杂的交互性图表 <BR><BR>可以与其它控件一起在WebForm中使用 <BR><BR>能够动态地将报表导出成为.pdf,.doc,xls,html,rtf等多种格式 <BR><BR>　　结构： <BR><BR>　　一些组件组成了水晶报表的二层结构，需要的Web应用有： <BR><BR>　　客户端 : <BR><BR>　　客户端仅需要一个可以访问嵌入aspx页面报表的游览器就可以了 <BR><BR>　　服务器 : <BR><BR>　　水晶报表引擎（Crystal Report Engine (CREngine.dll)） <BR><BR>　　通过它可以完成一些任务，如在报告文件中合并数据，转换报告为其它格式等。也正是因为报告引擎的作用，才可以将Asp.Net中的水晶报表转换成为普通HTML格式 <BR><BR>　　水晶报表设计器（Crystal Report Designer (CRDesigner.dll)） <BR><BR>　　水晶报表就是在设计器中创建的，在设计器中你可以设计标题，插入数据，公式，图表，子报表等。 <BR><BR>　　.rpt报表文件 <BR><BR>　　执行报表中的第一步就是在水晶报表设计器接口创建此报表，在默认安装中微软已经提供了一些现成的.rpt例子。 <BR><BR>　　Data Source <BR><BR>　　.rpt文件取得数据库的方法取决于你方法的选择，你能选择让水晶报表自己选择数据而不使用任何代码或者也可以选择手动的组装DataSet,然后再将其传送到报表文件。 <BR><BR>　　水晶报表查看控件（Crystal Report Viewer web form Control (CRWebFormViewer.dll)） <BR><BR>　　水晶报表查看控件是一个WebForm控件，可以将它看成是一个在.aspx页面中存放报表的容器。 注意：在一些复杂的操作中，报表服务器与Web服务器可能不在同一物理主机上，Web服务器将HTTP请求传送到报表服务器上去。水晶报表也可以当做WebService来执行。 <BR><BR>　　执行模式 <BR><BR>　　水晶报表取数据可以使用下面的方法实现： <BR><BR>　　Pull 模式: <BR><BR>　　被请求时，水晶报表直接根据指定的驱动连接数据库然后组装这些数据。 <BR><BR>　　Push 模式 : <BR><BR>　　此时开发表不得不自己编写代码连接数据并组装DataSet，同时将它传送至报表。在些这种情况下，通过使用连接共享以及限制记录集合的大小，可以使用报表性能最大化。 <BR><BR>　　报表类型： <BR><BR>　　水晶报表设计器能够直接包含报表至工程也能够使用独立的报表对象。 <BR><BR>　　Strongly-typed 报表 : <BR><BR>　　当你将报表文件加入到项目中去时，它就变成了一个了“ strongly-typed“报表。在这些情况下，你将拥有直接创建报表的对象的权力，这将减少一些代码并且能够提供一些性能。 <BR><BR>　　Un-Typed 报表 : <BR><BR>　　这里的报表并不直接包含在项目中，因此称为‘un-typed’ 报表。在这种情况下，你不得不使用水晶报表的”ReportDocuemt“对象建立一个实例，并且”手动“地凋用报表。 <BR><BR>　　其它注意事项 <BR><BR>　　尽管水晶报表查看器拥有一些很酷的功能，如缩放、页面导航等。但是他不提供打印功能，你不得不调用游览器的打印功能。 <BR><BR>　　VS.Net中的水晶报表如果没有注册，那么它只能使用30次，30次后，”保存“功能就不能再使用了。为了避免这个，你不是不在 http://www.crystaldecisions.com/这里注册此产品。 (好像不是这样子的，不注册也好像能用很长的时间，只是不能提供支持） <BR><BR>　　默认安装的水晶报表只能支持5个用户，为了支持更多的用户，你不得不在 http://www.crystaldecisions.com/中购买许可证。 <BR><BR><BR>　　让我们感受一下－－－－在Asp.net中使用一个现成的水晶报表文件 <BR><BR><BR><BR>　　让我们先感受一下在WebForm中使用水晶报表的感觉。 　　 <BR><BR>1) 从WebForm工具栏中拖动水晶报表查看器控件(Crystal Report Viewer)至.aspx页面中。 <BR><BR><BR><BR>　 <BR><BR><BR><BR>　　2) 调出水晶报表查看器控件的属性窗口 　 <BR><BR>　　3) 点击［...］按钮查看"Data Binding"属性，并弹出了DataBinding窗口。 <BR><BR>　　4) 从左边的"Bindable属性”区中选择“Report Source” <BR><BR>　　5) 选中"自定义绑定表达式"单选按钮，在右边的底部的窗口中指定.rpt文件的文件名和路径，例如："C:\\Program Files\\Microsoft Visual Studio.NET\\Crystal Reports\\Samples\\Reports\\General Business\\World Sales Report.rpt"，然后”确定“ <BR><BR><BR><BR>　　注意：文件”World Sales Report.rpt“文件是在VS.Net安装时创建的。如果你在安装过程中指定了其它目录，此时你最好确认一下路径的正确性。 <BR><BR>　　上面的步骤中实际上是插入了下面这些代码至Asp.Net文件中： <BR><BR>＜％@ Register TagPrefix="cr" Namespace="CrystalDecisions.Web" Assembly="CrystalDecisions.Web" ％＞ <BR><BR><BR><BR>　　以及： <BR><BR>＜CR:CRYSTALREPORTVIEWER＞ <BR>id="CrystalReportViewer1" <BR>runat="server" Width="350px" Height="50px" <BR>ReportSource=' ＜％# "C:\\Program Files\\Microsoft Visual Studio.NET\\Crystal Reports\\Samples\\Reports\\General Business\\World Sales Report.rpt" ％＞'＞ <BR>＜/CR:CRYSTALREPORTVIEWER＞ <BR><BR><BR><BR>　　 注意：在飞刀我的VS.Net正式版中自动生成的代码中ReportSource产生的样式不是这样子的，它是： <BR><BR>ReportSource=" ＜％# C:\xxxxx\xxx.rpt ％＞" <BR><BR><BR><BR>　　这样是错误的，会出现错误信息，有两处错误： <BR><BR>DataBind中要有双引号，因此外部只能用单引号 <BR>目录分隔符号不能使用"\",必须使用"\\" <BR>　　必须按照使用本文介绍的格式来手动修改，这也算是VS.Net的一个Bug吧。 <BR><BR>　　6) 在Page_Load方法中调用DataBind方法。（代码为VB.Net） <BR><BR>Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) <BR><BR>DataBind() <BR><BR>End Sub <BR><BR><BR><BR><BR>　　7)保存并编译你的页面。 现在，你就有一个内嵌水晶报表的WebForm页面了。 <BR><BR>　　注意：实际开发中，一开始会出现无法访问inetsrv目录的错误，解决的办法是改变其目录的安全属性，使User用户有可写的权限。飞刀我发现.Net系统自已给出的解决方法是没有用的，也可能是我使用的是Windows.Net操作系统的原因。 <BR></SPAN><A HREF="/piaoye12345/archive/2005/12/02/5062.html">Asp.Net中使用水晶报表（中）</A> <A HREF="/piaoye12345/archive/2005/12/02/5063.html">Asp.Net中使用水晶报表（下）</A><img src ="http://www.cnitblog.com/piaoye12345/aggbug/5061.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/piaoye12345/" target="_blank">萌芽的叶子</a> 2005-12-02 09:57 <a href="http://www.cnitblog.com/piaoye12345/archive/2005/12/02/5061.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>