摆脱数据库限制,做真正意义上的三层报表

What

报表即用表格,图表等格式来动态显示数据。我们在机房收费的最后的结账部分要用到报表来显示整个结账的情况。

三层的思想是将整个软件分为外观,逻辑,数据三层,各司其职,互相联系但是绝不越位。即U层不会去做D层的事,不会去接触数据库这样的东西,而只是将需求发给B层然后经B层处理后交给D层与数据库连接完成任务,最后将返回值传给U层显示。

三层意义上的报表,当然是隔离数据库的报表,

Why:

为什么要做完全隔离数据库的报表?个人理解这样才符合三层的思想,即在真正的三层合作中负责U层的人是不可能直接访问到数据库的,而应该是接受显示从D层传回来的数据。

如果这样:(如下图)通过数据源配置手动连接了数据库,就违背了三层的原则,即便是最后你是从D层获取的数据,报表的数据源是从D层返回的数据,但是在这一步已经越权。我认为U层是没有权限这样直接访问数据库的摆脱数据库限制,做真正意义上的三层报表

How:

1:创建数据集DateSet

摆脱数据库限制,做真正意义上的三层报表

2:为Dateset添加DataTable

摆脱数据库限制,做真正意义上的三层报表

3:添加报表,同时为报表添加数据集Dateset,然后在报表中添加表格。

摆脱数据库限制,做真正意义上的三层报表


摆脱数据库限制,做真正意义上的三层报表

4:U层代码

        Dim CheckBll As New BLL.CheckBLL
        Dim dt As DataTable
        dt = CheckBll.SelectCheck(CheckDate.Value) '获取数据DataTable


        Dim myreport As New ReportDataSource '为报表定义新的数据源
        myreport.Name = "DataSet1"
        myreport.Value = dt
        ReportViewer1.LocalReport.ReportEmbeddedResource = "UI.Report1.rdlc"

        ReportViewer1.LocalReport.DataSources.Add(myreport) '添加数据源

        Me.ReportViewer1.RefreshReport()

5:显示结果

摆脱数据库限制,做真正意义上的三层报表

小结:

随着软件进入工程化时代,写软件越来越像装配大型机器,你不可能靠一己之力完成,所以我们需要合作,需要分工。三层,不但便于系统维护,而且也是非常好的系统分工。各层各司其职,互不影响,(弱耦合),共同完成系统。



摆脱数据库限制,做真正意义上的三层报表

上一篇:Linux查看mysql 安装路径


下一篇:03 InnoDB锁问题