上节我们实现了预览和设计的窗体,也可以预览和设计我们的报表了,但是我们还是没有数据的交互,这次我们来创建一个数据库,然后将数据绑定到我们的报表中
数据库准备
-
我们使用VisualStudio自带的mdf文件数据库,首先我们在工程中创建一个文件夹APP_DATA,在此文件夹中创建一个mdf文件
-
然后我们可以在服务器资源管理器中看到我们的数据库
- 然后我们右键表新建一个表
CREATE TABLE [dbo].[T_students]
(
[Id] INT NOT NULL PRIMARY KEY IDENTITY,
[no] NCHAR(50) NULL,
[name] NCHAR(50) NULL,
[school] NCHAR(50) NULL,
[class] NCHAR(50) NULL
)
-
然后在设计器左上角点击更新按钮,在弹出的窗口中点击更新数据库
-
更状态全部打钩之后,表就创建好了,我们刷新服务器资源管理器,然后打开表数据,添加一些数据进去
-
ok我们现在在服务器资源管理器里面选择mdf文件,在属性列表里,找到连接字符串,拷贝一份出来,等会需要用的到
Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=I:\dotNET\ReportDemo\ReportDemo\APP_DATA\Database.mdf;Integrated Security=True
设计器数据获取
- 我们在PreviewForm.cs里,写一个方法getData()
private DataSet getData(){
String connStr = @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=I:\dotNET\ReportDemo\ReportDemo\APP_DATA\Database.mdf;Integrated Security=True";
SqlConnection conn = new SqlConnection(connStr);
conn.Open();
String sqlStr = "SELECT * FROM T_students";
SqlCommand comm = new SqlCommand();
comm.CommandText = sqlStr;
comm.CommandType = CommandType.Text;
comm.Connection = conn;
DataSet ds = new DataSet();
SqlDataAdapter adapter = new SqlDataAdapter(comm);
adapter.Fill(ds, "学生信息");
conn.Close();
return ds;
}
- 然后我们在Form_Load方法里绑定数据集
private void DesignForm_Load(object sender, EventArgs e)
{
dReport = new Report();
String reportFile = "Report/report.frx";
dReport.Load(reportFile);
this.designerControl1.Report = dReport; //这里不一样的是把Report赋给控件的属性
DataSet ds = new DataSet();
ds = getData();
dReport.RegisterData(ds, "学生信息");
dReport.Prepare();
dReport.Design();
}
-
我们F5一下,在设计窗口下,在[数据]->[选择数据源]中,就能看到我们绑定的数据了
-
我们设计一个表格,把我们的数据放进去
- 我们可以预览一下,然后保存
为Preview绑定数据
- 现在我们用同样的方法为Preview绑定数据,getData()方法一致,可以直接复制过来
private void PreviewForm_Load(object sender, EventArgs e)
{
pReport = new Report(); //实例化一个Report报表
String reportFile = "Report/report.frx";
pReport.Load(reportFile); //载入报表文件
pReport.Preview = previewControl1; //设置报表的Preview控件(这里的previewControl1就是我们之前拖进去的那个)
DataSet ds = new DataSet();
ds = getData();
pReport.RegisterData(ds,"学生信息");
pReport.Prepare(); //准备
pReport.ShowPrepared(); //显示
}
-
我们测试一下
由于我还没弄清楚报表里面的循环输出,所以只看到了一行数据,等我去研究研究。然后我们后面再说关于条件数据等
到这里FastReport的引入、加载、绑定都心里有数了!