水晶报表直接连接数据库,显示其中的表比较容易,按向导操作就可以了。不过显示ADO.NET数据集中的数据就花了不少时间才学会。
折腾了几天,看MSDN看得头大,终于可以让水晶报表显出数据集中的数据了。过程(……)
(VC#2005+ACCESS2003)
实现如下:已有一个数据库名为:“供应商”,其中有一个表名为:“客户”。
用一个偷懒的方法产生所需的控件:
在窗上拖一个DataGridView控件,在设置数据源向导中产生数据集和客户表。
从工具箱拖一个CrystalReportViewer到窗体上,产生的实例名称为crystalReportViewer1。从向导中创建新的水晶表名为CrystalReport11,选择项目数据->ADO.NET数据集下的“客户”表作为数据源。
这时如果运行窗体已经可以在表格中显示数据了(窗体的Load事件中有自动产生的填充数据集的代码)。不过报表中只有一个空表,没有数据显示。
这时在Form1_Load事件中
this.CrystalReport11.SetDataSource(供应商DataSet);
如果拖一个按钮控件到窗体上,把上面这行代码改到按钮的单击事件处理函数中。你会发现单击控件时报表上没有数据显示出来。原因是还需要刷新一下报表。在按钮单击事件中使用下面三行代码:
客户TableAdapter.Fill(供应商DataSet.客户);
this.CrystalReport11.SetDataSource(供应商DataSet);
this.crystalReportViewer1.RefreshReport();
报表听话,显示数据了。
对照MSDN中的实例(我用的版本中需要把示例中的表名改成中文“客户”),就可以知道显示水晶报表的关键知识点了。(多说一句,MSDN真会折腾人了)
(csdn……)