利用水晶报表管理药品标准提高项目中样品及资料征集工作

时间:2022-02-20 08:21:30

利用水晶报表管理药品标准提高项目中样品及资料征集工作

摘要:水晶报表是一个非常好用的组件,在程序中可以用来处理诸多的事件。本文通过一个实例,详细介绍了水晶报表的两种应用模式,拉模式和推模式。相对来说,拉模式应用比较简单,但不够灵活。推模式使用起来比较复杂,但灵活多变。在不同的情况下两种应用模式都能实现特定的功能。

关键词:水晶报表;拉模式;推模式

中图分类号:TP311.52 文献标识码:A文章编号:1007-9599 (2011) 15-0000-02

Samples and Text Materials Collecting of Project Improving by Using Crystalreport to Manage Drug Standard

Zhang Zizhi

(Liaoning Institute for Food and Drug Control,Shenyang110036,China)

Abstract:Crystalreport is a very useful components,in the program can be used to deal with many of the events.In this article,through an example,two kinds of application mode of the crystalreport,pull mode and push mode,are Introduced. Relatively speaking,pull mode is simple,but not enough flexible.Push mode is more complex,but flexible.In different situations,two application modes can be used to accomplish a specific function.

Keywords:Crystalreport;Pull mode;Push mode

一般来说,一项工作都能分解成不同的阶段,在一个工作阶段完成之后,再进入下一阶段。在同一阶段内,还可能同时进行很多相同的工作。但每个工作都处在什么阶段,对总体情况需要有一个清晰的了解。如,药品标准提高项目包含了不同的药品品种,不同的品种涉及到不同的企业,每个企业的样品征集工作又可分解为不同的阶段。在接到任务之后,检验科室首先要提供一份生产某一种药品的生产企业名单,业务部门按名单逐一发出信函,若企业没有回复后可能要第二次发函或电话联系,还可能第三次采用发函或电话、传真等方式进行联系;发出的信函可能由于地址不详或企业搬迁无法投递被退回的情况,有的企业因停止生产而不能提供样品及原料药,仅回复了一纸公文;有的企业仅能提供文字材料;有的仅提供样品,未提供文字资料。只有处于生产状态的企业才能提供标准提高工作所需的样品和文字资料。一个企业都经历了哪些办事阶段,处在一个阶段都有哪些企业。诸如此类的工作,可以在程序中利用水晶报表来管理,水晶报表控件不仅能归类显示整个项目的进程信息,还可以打印或导出数据。

一、数据库设计

我们使用Access数据库系统建立一个“项目管理数据库”,数据库中只有一个“工作进程登记表”,将整个项目不同的工作阶段设置为表格对应的字段,分别为:检验科室提供信息日期、第一次联系纪要、第二次联系纪要、第N次联系纪要、信件退回日期、仅收到复函日期、仅收到文字资料日期、仅收到样品日期、收到样品和资料日期,其他字段为:提高品种、生产单位、工作进程、最新进程说明。这样,一条记录对应一个企业完整的办事过程。

“工作进程”字段用于标识一个企业现处于进程的那一阶段,由程序根据工作的进展情况自动填充。填充的思路是,首先检查“科室提供信息日期”字段,如果不为空,则在“工作进程”字段填写“1.检验科室已提供名单,尚未和企业联系”。假如“科室提供信息日期”字段所填内容为:“2010-08-12”,则在“最新进程说明”字段填写“2010-08-12提供名单”。

接下来,程序继续检查下一个字段,如果字段为空,则“工作进程”和“最新进程说明”字段保持原有内容不变。如果不为空,则之前所填的内容将被覆盖掉。“工作进程”字段可能的内容为:2.第一次联系,尚未回复;3.第二次联系,尚未回复;4.第N次联系,尚未回复;5.信件退回;6.仅收到复函日期;7.仅收到文字资料日期;8.仅收到样品;9.样品资料均收到。

这样,“工作进程”字段只能出现上述9种信息中的1种,如果按“工作进程”字段分组,就可将处于同一阶段的企业集中到一起。

二、程序设计

本系统设计成一个网站,程序使用Visual Studio 2005编制,后台代码使用语言,网站共分3个Web页面。

(一)办事进程总体显示页面

新建一个网站Website1,Web窗体名为Default.aspx,通过“添加新项”添加一个水晶报表CrystalReportZongTi.rpt,使用标准报表创建向导将字段资源管理器中“生产单位”、“最新进程说明”两字段添加到要显示的字段,并依次选择“提高品种”、“工作进程”作为分组依据。

在Web窗体Default.aspx中添加一个CrystalReportViewer控件CrystalReportViewerZongTi,选取CrystalReportZongTi.rpt为报表源。

程序运行时,应首先更新“工作进程”和“最新进程说明”两个字段,因此页面加载时的代码如下:

Imports System.Data.OleDb

Partial Class_Default

Inherits System.Web.UI.Page

Protected Sub Page_Load(ByVal sender As Object,ByVal e As System.EventArgs)Handles Me.Load

Dim objConn As New OleDbConnection_

("provider=microsoft.jet.oledb.4.0;"&_

"data source="+Server.MapPath("./项目管理数据库.mdb"))

objConn.Open()

Dim objCmd As System.Data.OleDb.OleDbCommand

Dim strSQLstring As String

strSQLstring="update工作进程登记表set工作进程='1.科室已提供名单,尚未和企业联系',最新进程说明=检验科室提供信息日期&'提供名单'where检验科室提供信息日期is not null"

objCmd=New OleDbCommand(strSQLstring,objConn)

objCmd.ExecuteNonQuery()

……

objConn.Close()

End Sub

End Class

在本页面中,因为显示的是项目的总体办理情况,不需要对数据进行筛选,因此采用了拉模式同数据库进行连接。

(二)办事进程个体显示页面

本页面用于查看某一企业在各阶段的详细办事信息。通过“添加新项”在网站中添加一个数据集DatasetGeTi。通过“TableAdapter配置向导”建立同“项目管理数据库”的连接。应注意更改数据集前台代码的属性,将encoding="utf-8"?>改为encoding=“gb2312”。

通过“添加新项”,在网站中添加一个水晶报表CrystalReportGeTi.rpt,通过“标准报表创建向导”选择项下的DatasetGeTi,建立了与数据集的连接。

添加一个Web窗体GeTi.aspx,用于办事进程个体的显示。在窗体中添加了两个下拉列表框控件Drop Down List Pin Zhong和Drop Down List Qi Ye,通过Access Data Sourc控件分别绑定到“提高品种”和“生产企业”字段,通过选择“提高品种”来缩小生产企业的查找范围。

在窗体中添加一个Crystal Report Viewer控件,在“选择报表源”中新建一个报表源CrystalRepotSource1,并指定报表CrystalReportGeTi.rpt。

推模式是通过程序建立起水晶报表和数据源的连接的,因此需要在加载GeTi.aspx窗体时添加如下代码:

Imports System.Data

Imports System.Data.OleDb

Partial Class GeTi

Inherits System.Web.UI.Page

Protected Sub Page_Load(ByVal sender As Object,ByVal e As System.EventArgs)Handles Me.Load

If Not IsPostBack Then

Dim myConnection As New OleDbConnection

myConnection.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;"&_

"User ID=Admin;"&_

"Data Source=D:\website1\项目管理数据库.mdb"

Dim myCommand As New System.Data.OleDb.OleDbCommand

myCommand.Connection=myConnection

mandText="SELECT*FROM[工作进程登记表]"

Dim sql As String

sql="SELECT*FROM[工作进程登记表]"

Dim myDA As New OleDbDataAdapter

myDA.SelectCommand=myCommand

Dim DataSetGeTi As New DataSet()

myDA.Fill(DataSetGeTi,"sql")

CrystalReportSource1.ReportDocument.SetDataSource(DataSetGeTi.Tables("sql"))

CrystalReportSource1.DataBind()

CrystalReportViewer1.ReportSource=CrystalReportSource1

CrystalReportViewer1.DataBind()

End If

End Sub

Protected Sub DropDownList1_SelectedIndexChanged(ByVal sender As Object,ByVal e As System.EventArgs)Handles DropDownListDanWei.SelectedIndexChanged

Dim myConnection As New OleDbConnection

myConnection.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;"&_

"User ID=Admin;"&_

"Data Source=D:\website1\项目管理数据库.mdb"

Dim myCommand As New System.Data.OleDb.OleDbCommand

myCommand.Connection=myConnection

mandText="SELECT*FROM[工作进程登记表]WHERE[生产单位]='"+DropDownListDanWei.SelectedItem.Text+"'and[提高品种]='"+DropDownListPinZhong.SelectedItem.Text+"'"

Dim sql As String

sql="SELECT*FROM[工作进程登记表]WHERE[生产单位]='"+DropDownListDanWei.SelectedItem.Text+"'and[提高品种]='"+DropDownListPinZhong.SelectedItem.Text+"'"

Dim myDA As New OleDbDataAdapter

myDA.SelectCommand=myCommand

Dim DataSetGeTi As New DataSet()

myDA.Fill(DataSetGeTi,"sql")

CrystalReportSource1.ReportDocument.SetDataSource(DataSetGeTi.Tables("sql"))

CrystalReportSource1.DataBind()

CrystalReportViewer1.ReportSource=CrystalReportSource1

CrystalReportViewer1.DataBind()

End Sub

End Class

(三)数据库维护页面

数据库维护页面的设置和企业办事进程显示页面大致相同,只不过是用Details View控件代替了水晶报表,用于数据的建立、修改与删除。

[作者简介]张仔志,男,高级工程师。

上一篇:住宅工程电气安装施工中存在的问题及处理措施 下一篇:公路交通连续车流量算法研究及实现