码迷,mamicode.com
首页 > 数据库 > 详细

C# 用vs2008连接SQL数据库做动态水晶报表

时间:2015-10-29 23:21:55      阅读:389      评论:0      收藏:0      [点我收藏+]

标签:

博主是个还在上大学的新手,如果有什么说错的地方请务必帮我指出来,谢谢!

想要完成一个能够动态改变其中数据的水晶报表,可以通过创建一个 数据的中转站来存储和输出数据的方式。

借由这个中转站,我们可以通过为它动态输入数据,然后再将数据导出到水晶报表,来达到得到有动态数据的水晶报表的目的。

仅在vs2008中,很多它自带的应用也可以达到中转站的作用,比如数组,数据集等。

博主最近刚在学SQL所以尝试了用VS连接数据库来做水晶报表。

 

1.首先,博主在SQL中创建了名为xxs的数据库,然后再在数据库xxs中创建了一张名为xxs_1的表格,同时在其中建立了名为ques的列。技术分享

2.然后回到vs2008,创建windows窗体应用程序(博主是为了给数据库录入数据才用窗体的,网友有其他方法就随意了。)

为程序写入代码:

 1                             SqlConnection conn2 = new SqlConnection();
 2                             conn2.ConnectionString = "server=.;database=xxs;uid=sa;pwd=123";
 3                             conn2.Open();
 4                             SqlCommand cmd2 = new SqlCommand();
 5                             cmd2.Connection = conn2;
 6                             cmd2.CommandType = CommandType.Text;
 7                             string sql2 = "insert into xxs_1(ques) values(@ques)";
 8                             SqlParameter[] parameters2 = new SqlParameter[]
 9                            { 
10                                  new SqlParameter("@ques", f)
11            
12                            };
13                             cmd2.CommandText = sql2;
14                             cmd2.Parameters.AddRange(parameters2);
15                             cmd2.ExecuteNonQuery();
16                             conn2.Close();
17                             cmd2.Dispose();

其中conn2.ConnectionString是SQL数据库的路径,字符串sql2是将要在SQL中执行的SQL语句,字符串f是要为 “列ques”添加的数据。

为了给列添加足够多的数据,博主用了循环语句,在这里就不细说了,毕竟只是对以上语句进行循环,为f反复赋值,再写入列而已。

 

3.完成了对数据的录入以后,我们就可以建立水晶报表了。

就如上所说,博主为了给数据库xxs录入数据,所以用了form窗体。

在窗体中博主应用了如下两个button组件。

技术分享

其中“生成题库”就是应用第2步中的代码为数据库输入数据,而“预览报表”就是我们现在要讲的建立水晶报表了。

在写代码之前,博主先做了一些准备工作。

    (1)连接数据库。

            点击菜单栏的数据按钮/在打开的菜单中点击添加新的数据源/在弹出的数据源配置向导中选择从“数据库”获取数据源,点击下一步/点击新建连接/在弹出的添加连接窗口中写入服务器名(一般都是.(对,就是个“点”)),选择用SQL SEVER 身份验证,输入用户名和密码,然后就可以在“选择或输入一个数据库名”中写入数据库名了,然后点击确定,点击下一步/进入"选择数据库对象",选择你需要在水晶报表中显示的表和列,点击完成。

    (2)创建水晶报表。

            右键解决方案资源管理器下的第一个项目/在弹出的菜单栏中选择添加,点击新建项。/在弹出的添加新项中选择Reporting中的Crysal报表(如下)。/技术分享

 

        /然后会弹出Crystal report库窗体,选择使用“报表向导“和”标准“,选择确定。/在标准报表创建向导中打开项目数据,打开ADO.NET数据集选择需要的数据库中的表,将它添加到右侧。点击下一步/选择需要的列,将它添加到右侧,点击下一步。/分组和记录选定我没用到,所以直接点击了下一步,样式我选择了表,点击完成。 

至此,我们已经完成了对水晶报表的创建。

4,为水晶报表添加数据。

     为了使”预览报表“功能可以完善一些,博主又在项目中添加了一个窗体应用程序Form2(如下)。

     技术分享

Form2中只添加一个CrystalReportViewer控件。

然后双击Form2窗体,写入代码:

 1             CrystalReport1 cry = new CrystalReport1();
 2             SqlConnection conn = new SqlConnection();
 3             conn.ConnectionString = "server=.;database=xxs;uid=sa;pwd=123";
 4             conn.Open();
 5             SqlCommand cmd = new SqlCommand();
 6             cmd.Connection = conn;
 7             cmd.CommandType = CommandType.Text;
 8             string sql = "select ques from xxs_1 ";
 9             cmd.CommandText = sql;
10             DataSet ds = new DataSet();//新建一个临时数据库
11             SqlDataAdapter adt = new SqlDataAdapter();
12             adt.SelectCommand = cmd;
13             adt.Fill(ds, "inf");//将数据导入到ds中
14             DataTable dt = ds.Tables["inf"];//只是为了后面引用时方便点,直接写ds.Tables["inf"]也是可以的。

用以上代码取出数据库 xxs 中表 xxs_1 中的列 ques 中的数据。

最后再写入代码:

 1 cry.SetDataSource(dt);

2 this.crystalReportViewer1.ReportSource = cry; 

就可以将数据写入到水晶报表中去了。

 

5.当然,为了能够反复输入数据到SQL,再导出数据到水晶报表,我们需要在建立水晶报表后清空SQL数据库中数据,所以在结束了以上的一切后还要在最后写入代码:

 1             SqlConnection conn1 = new SqlConnection();
 2             conn1.ConnectionString = "server=.;database=xxs;uid=sa;pwd=123";
 3             conn1.Open();
 4             SqlCommand cmd1 = new SqlCommand();
 5             cmd1.Connection = conn1;
 6             cmd1.CommandType = CommandType.Text;
 7             string sql1 = "truncate table xxs_1";
 8             cmd1.CommandText = sql1;
 9             cmd1.ExecuteNonQuery();
10             conn1.Close();

 

这样就完成了一张用SQL数据库作为数据中转站的动态数据水晶报表。

 

下面是效果演示:

当我运行程序按下“生成题库”是,程序会往数据库中添加数据,比如我要生成40道运算题,就可以得到这样的表

技术分享

 

再当我按下”预览报表“时,便得到了这样的水晶报表:

技术分享

 

C# 用vs2008连接SQL数据库做动态水晶报表

标签:

原文地址:http://www.cnblogs.com/bg5247/p/4921874.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!