`

VS2005下水晶报表如何实现动态数据源绑定?

阅读更多

之前在论坛中经常有人问起在VS2005中使用水晶报表(Crystal Report 10)如何用DataSet实现动态的数据源绑定?关于这个问题我研究了一下,找到了新的解决方案。
在以前VS2003中可以采用PUSH模式推报表,可以用如下的代码实现:
con = new SqlConnection(Session["SQLCONNECTION"].ToString());
strSql = "SELECT * FROM htOrder";
scm = new SqlCommand(strSql, con);
sda = new SqlDataAdapter(scm);
ds = new DataSet();
sda.Fill(ds, " order ");
rptOrder.SetDataSource(ds.Tables["order"]);
crOrder.ReportSource = rptOrder;



在VS2005中不再支持“embedded report”嵌入式报表,只能采用非嵌入式报表的方法拉数据,下面是典型的代码:

//绑定报表数据
private void BindCrystalReports()
{
string path1 = Server.MapPath("~\\Report\\");
string path2 = path1 + "repOrder.rpt";
ReportDocument repDoc = new ReportDocument();
repDoc.Load(path2);
SetDBLogonForReport(repDoc); //设置数据登录信息
crOrder.ReportSource = repDoc;
string selectionFormula = "{htOrder.htID} =" + txtHtID.Text.Trim();//设置报表数据筛选公式
repDoc.DataDefinition.RecordSelectionFormula = selectFormula;
crOrder. DataBind ();
}
//设置登录信息
private void SetDBLogonForReport(ReportDocument reportDocument)
{
try
{
ConnectionInfo connectionInfo = new ConnectionInfo();
connectionInfo.ServerName = ConfigurationManager.AppSettings["ServerName"];
connectionInfo.DatabaseName = ConfigurationManager.AppSettings["DatabaseName"];
connectionInfo.UserID = ConfigurationManager.AppSettings["UserID"];
connectionInfo.Password = ConfigurationManager.AppSettings["Password"];
Tables tables = reportDocument.Database.Tables;
foreach (CrystalDecisions.CrystalReports.Engine.Table table in tables)
{
TableLogOnInfo tableLogonInfo = table.LogOnInfo;
tableLogonInfo.ConnectionInfo = connectionInfo;
table.ApplyLogOnInfo(tableLogonInfo);
}
}
catch
{
lblNote.Text = "<script>alert('数据库登录信息不正确!');</script>";
}
}


这种方式是不是太频繁琐了,在数据结构更改或者查询条件发生变化时必须要再次更改报表设置,那么在VS2005中水晶报表有没有更简洁的方法呢?最好不用写代码就能搞定呢?有,那就是新的数据绑定控件CrystalReportSource,这个控件与SqlDataSource数据源绑定控件一起连用就可以用SQL表达式作数据源推数据了。下面是实现的步骤:

1. 建立水晶报表,注意报表要用OLE DB ADO方式连接数据源,这样可以省去报表登录窗口的弹出。
2. 在设计视图中拖拉报表控件CrystalReportViewer,点击右上角智能标签设置报表数据源,选择报表文件,自动生成CrystalReportSource,这时在设计视图中将显示出报表界面,水晶报表将自动用初始数据填充报表字段。注意这里有个小Bug,如果报表在子目录中,选择报表文件将自动用相对路径表示,这时报表显示会出错,应改成绝对路径才可以。
<Report FileName="report\rptOrder.rpt">这里应改成:<Report FileName="..\report\rptOrder.rpt">
3.拖拉一个数据源控件SqlDataSource(也可以用ObjectDataSource),按向导生成数据源,这里可以筛选数据,根据情况选择各类数据源。
4.如何将CrystalReportSource与SqlDataSource两个控件连接在一起呢?可以这样:选择CrystalReportSource控件点击右侧属性中数据栏,再点击Report选择DataSource,在这个数据源集合编辑器选择数据源指定报表名称即可。(下面的Parameters是用来选择报表参数用的)

经过这几个步骤,就可以运行程序显示报表啦,怎么样不用写一句代码吧?

具体代码可参考如下:

<CR:CrystalReportViewer ID="crOrder" runat="server" AutoDataBind="True" ReportSourceID="ReportSourceOrder" BestFitPage="False" DisplayToolbar="False" DisplayGroupTree="False" Height="1042px" Width="775px" EnableParameterPrompt="False" />
<CR:CrystalReportSource ID="ReportSourceOrder" runat="server">
<Report FileName="..\report\rptOrder.rpt">
<DataSources>
<CR:DataSourceRef DataSourceID="SqlDataSourceOrder" TableName="htOrder" />
</DataSources>
</Report>
</CR:CrystalReportSource>
<asp:SqlDataSource ID="SqlDataSourceOrder" runat="server" ConnectionString="<% ConnectionStrings:cc_2005 %>"
SelectCommand="SELECT * FROM [htOrder] "></asp:SqlDataSource>

来源:http://www.cnblogs.com/VS2008

分享到:
评论

相关推荐

    VC实现水晶报表对数据源的动态绑定和历史数据显示查询

    为了对在线钢板的温度数据进行实时检测和存储,以VC++6.0作为平台,建立监控点和PC机之间的串口通信,...所以,本文基于在线钢板温度建工系统,阐述了如何在VC下实现对水晶报表的动态绑定数据源和历史数据的显示查询。

    [C#.NET2005]VS2005中使用水晶报表和水晶报表使用指南 word格式

    //绑定水晶报表数据源。 CrystalReportSource1.DataBind(); // CrystalReportViewer1是水晶报表浏览器,下面是给该浏览器赋上对像 CrystalReportViewer1.ReportSource = CrystalReportSource1; CrystalReport...

    利用水晶报表动态绑定数据源实现动态交叉表的方法研究

    为减少数据冗余,根据规范化理论设计的数据库不能直接输出分类汇总的结果,需要进行...在.NET和SQL Server环境下,探讨了动态交叉表的生成和利用水晶报表动态绑定数据源显示数据的方法,并给出了较为详细的实现过程。

    数据处理 excel webchartcontrol 水晶报表

    excel 作为数据源 实现增 删 改 查 DevExpress webchartcontrol 动态绑定数据库画图 水晶报表 动态绑定数据源 不会弹出登陆信息框

    C# 如何使用自定义数据源创建水晶报表,可实现打印 ,web中,好东西啊。。(源码)

    C# 如何使用自定义数据源创建水晶报表,可实现打印(源码)

    水晶报表基本入门

    水晶报表的基本操作及数据源绑定

    Crystal报表数据源和数据访问模式

    .net平台下水晶报表的使用,水晶报表的创建,数据绑定和显示等。

    C# 动态绑定水晶报表CrystalReport实例

    C# 动态绑定CrystalReport水晶报表实例源代码,先加载数据库数据,显示所有学生信息,按学生编号查询学生信息,按回车键查询学生信息,绑定水晶报表,测试本程序,请先安装好所需的水晶报表控件CrystalReport。...

    asp.net知识库

    ASP.NET 2.0 中的数据源控件 使用 ASP.NET 2.0 ObjectDataSource 控件 ASP.NET 2.0 的内部变化 使用SQL Cache Dependency 代替 Ibatisnet 提供的CacheModel ASP.NET 2.0中小心Profile命名冲突 使用ASP.NET 2.0 ...

    ASP.NET WebForm中%=%与%#%的区别

    #%&gt;专门用于数据绑定,可以绑定一些变量或者数据源中的信息,中间绑定是数据源的条目,若想让它起作用,必须调用DataBind()方法 您可能感兴趣的文章:HighCharts图表控件在ASP.NET WebForm中的使用总结(全)水晶报表asp...

    C#编程经验技巧宝典

    C#编程经验技巧宝典源代码,目录如下: 第1章 开发环境 1 &lt;br&gt;1.1 Visual Studio开发环境安装与配置 2 &lt;br&gt;0001 安装Visual Studio 2005开发环境须知 2 &lt;br&gt;0002 配置合适的Visual Studio 2005...

    明日科技《C#示例源代码》(17-20)

    实例044 动态绑定水晶报表 153 实例045 设计信封标签报表 157 实例046 设计汇款单式报表 157 第5章 鼠标键盘控制 实例047 自定义动画鼠标 161 实例048 鼠标设置器 163 实例049 屏蔽鼠标按键 167 ...

    ASP.NET 程序开发范例宝典 (第三版)源代码

    视图、存储过程及触发器的应用,ASP.NET内置对象,文件处理,图形图像与多媒体,水晶报表与打印,XML技术,Web Service,AJAX应用开发,ASP.NET高级应用,ASP.NET安全机制,网站设计与网页配色。全书共提供了480个...

    21天学通ASP.NET源代码

    第二篇重点分析了ASP.NET数据开发的内容,主要包括数据库开发入门、SQL语言、ADO.NET对数据库访问、数据绑定控件、LINQ to SQL数据开发和使用水晶报表。第三篇主要分析了ASP.NET高级应用的内容,包括角色及成员资格...

    ASP.NET3.5典型模块开发源代码

    18.4.3 用编程方式实现报表与数据源的关联 234 18.5 小结 235 第19章 PDF文档处理模块 236 19.1 PDF文档介绍 236 19.2 数据表格与PDF的格式转换 237 19.2.1 第三方组件“iTextSharp”的调用 237 19.2.2...

    21天学通ASP.NET源代码2

    第二篇重点分析了ASP.NET数据开发的内容,主要包括数据库开发入门、SQL语言、ADO.NET对数据库访问、数据绑定控件、LINQ to SQL数据开发和使用水晶报表。第三篇主要分析了ASP.NET高级应用的内容,包括角色及成员资格...

Global site tag (gtag.js) - Google Analytics