• RDLC 报表开发


    RDLC 报表开发

    打开Visual Studio 2005

     

    新建ASP.NET 网站

     

    添加数据集

     

    会自动调出数据集配置窗口TableAdapter

    如果上面的窗口没有自动调出,可以如下图,

    可以调出上面的TableAdapter 窗口

    新建立数据库连接

     

    下面的这一步会将数据库连接保存到config 文件中

     

    下面的这一步可以,选择生成SQL的方式

     

     

    让我们先回到SQL Server Query Analyzer

    打开SQL Server 查询分析器

     

    创建如下图的存储过程

     

     

    然后回到 Visual Studio 2005

     

    选择使用现在的存储过程,下一步

     

    这里,我们只需要选择所需要的存储过程,如刚才建立的EmployeeReport 即可

    点击 完成。完成TableAdapter向导的配置.

     

    添加报表项

     

     

    拖动一个Table 到报表设计器中

     

    选择网站数据集中的字段,把它拖动到表格的列中

     

     

    新建立一个ASPX页面,拖动一个Report Viewer控件到页面中

     

    ReportViewer任务窗口中,选择刚才建立的rdlc文件

     

     

    生成解决方案,然后执行

     

    看到结果,报表执行完成

     

     

    至此报表开发成功。

     

    注意

    1. 刚才的SQL 脚本

    CREATE PROC  EmployeeReport

    AS

    SELECT  *  FROM Employee 

    GO

    实际的报表开发中,一定不要用SELECT * ,只取报表中需要查看的字段。

    2. 有时候,可能需要用户选择一些条件,有选择性的查看报表。而不是全部绑定数据

     

    如上图,用户可能只需要查看2008-9-292008-9-30时间段之间的数据

    则作法如下

    先建立好如上图的ASPX页面,在View Report 事件中写如下的程序

    ReportViewer1.LocalReport.ReportPath = AppDomain.CurrentDomain.BaseDirectory + "/Report/Request.rdlc";

    DateTime dtFrom =Convert.ToDateTime(txtDateFrom.Text);

    DateTime dtTo =Convert.ToDateTime(txtDateTo.Text);

    string requester = txtRequester.Text;

    string dept = txtRequestDept.Text;

    string material = ddlMaterial.SelectedValue;       

    string iprstatus = ddlStatus.SelectedValue;

    DataTable reqrpt = ReportDB.RequestReport(dtFrom, dtTo, material, dept,requester, iprstatus);

    if (reqrpt != null)

          {

               ReportViewer1.LocalReport.DataSources.Clear();

                ReportViewer1.LocalReport.DataSources.Add(

                    new Microsoft.Reporting.WebForms.ReportDataSource("Request_RequestReport", reqrpt));

                ReportViewer1.LocalReport.Refresh();

            }      

    ReportViewer1.LocalReport.Refresh();

    根据用户所选的参数,把数据值传到SQL语句中即可.下面是RequestReport方法的源码

    DataTable RequestReport(DateTime dtFrom, DateTime dtTo, string pMaterial, string pDept, string pRequester, string pIPRStatus)        {

                string MySQL = Purchase;

                string whDate = " RequestDate BETWEEN '{0}'  AND '{1}'  ";

                MySQL = MySQL + string.Format(whDate, dtFrom, dtTo);

                string whMaterial = "  AND  MaterialCode='{0}' ";

                if (pMaterial != "ALL")

                {

                    MySQL = MySQL + string.Format(whMaterial, pMaterial);

                }

                string whDept = " AND  RequestDepartment='{0}' ";

                MySQL = MySQL + string.Format(whDept, pDept);

               string  whRequester=" AND  Requester='{0}' ";

                if(pRequester!="ALL")

                   MySQL = MySQL + string.Format(whRequester, pRequester);

                string whIPRStatus = " AND IPRStatus={0}  ";         

                if (pIPRStatus != "ALL")

                {

                    MySQL = MySQL + string.Format(whIPRStatus, pIPRStatus);

                }        

                IDataProvider privider = DataProvider.CreateDataProvider();

                DataSet ds = privider.RetriveDataSet(MySQL);

                if (ds != null && ds.Tables.Count > 0)

                    return ds.Tables[0];

                else

                    return null;

    }

     

    const string Purchase="SELECT Name FROM Employee";

                             

     

    3. 设计报表时,可以用上述的方法,实际运行时,可以替换成SQL 语句,传到ReportDataSource中即可,只要相当的表结构字段是存在的。

    4. 报表的定义是XML结构的,如果熟悉报表的定义格式规范,可以用文本编辑器打开直接修改。

     

     

    5. 如果采用SQL Server 2005的服务器端报表,可能还会有进一步的方便设计和开发的地方.这里采用的是.net framework的组件,客户端只需要安装.net framework2.0即可,无需安装额外的组件.

     

  • 相关阅读:
    Qt 学习之路 :自定义只读模型
    Qt 学习之路:QSortFilterProxyModel
    Qt 学习之路 :可视化显示数据库数据
    Qt 学习之路 :访问网络(4)
    Qt 学习之路:QFileSystemModel
    高级Bash脚本编程指南
    CGI
    shell学习
    【shell】while read line 与for循环的区别
    管道技巧-while read line
  • 原文地址:https://www.cnblogs.com/JamesLi2015/p/1305803.html
Copyright © 2020-2023  润新知