李竹林
(1.延安大学 计算机学院,陕西 延安 716000;2.延安大学 软件研究与开发中心,陕西 延安 716000)
查询功能是信息管理系统中最基本的功能之一,是使用用户最多、点击率最频繁的模块[1-3]。查询功能主要实现根据用户的选择,实现组合条件查询。根据企业信息管理系统中数据查询特点,一次查询的数据不仅包含自己部门的基础数据,还往往要查询部门间相关数据。因此,如何将部门内或部门间的数据灵活地组织起来以实现数据灵活、动态的查询是非常重要的。为了方便用户查询数据,文中设计并实现了基于多表的动态查询模块,使得用户可以灵活组织查询数据项,设置查询条件,甚至可以编辑查询条件。该模块应用到某采油厂的生产管理系统中并投入使用,应用结果表明,查询灵活度高、速度快,用户的满意度调查达到98%以上。
动态查询是为用户提供的一种灵活、方便的查询方式,是指用户可以自主筛选查询字段项,自己设计组合查询条件与排序条件,然后根据设计的条件与排序方式,查询出满足条件的查询结果。下面以某采油厂的生产管理系统为应用背景,介绍该动态方法的设计过程与实现方法。
为了提高用户查询的速度与效率,为数据的动态查询建立了多个视图,部分视图与查询数据项的对应关系如表1所示。
表1 视图与查询数据的对应关系Tab.1 The corresponding relationship of views and query data
为了提高动态查询模块的通用性,设计了通用动态查询用户控件,设计方法如下。
1.2.1 查询表字段动态获取
为了提高查询速度、扩大查询数据范围,设计了基于视图的动态数据查询,实现一次查询数据库中多个表中数据的动态查询方法。由于SQL Server 2005数据库系统具有自描述性,不仅包含数据库内容、数据库结构、约束的完整定义和描述,而且还可以动态管理系统视图;所有动态管理视图和函数都存在于 sys架构中,且表的元数据中只有一个具有名称和id的项[4-6]。因此,可以利用系统视图获取动态查询的表与相应的列名。下面以油田单井基础信息为例,建立单井基础信息视图v_djjc,并利用系统视图查询方法获取动态查询字段名。基本语句:select sys.columns.name from sys.columns,sys.objects, sys.types where …… , 其 中 ,sys.columns, sys.objects,sys.types的含义如表2所示。
表2 相关系统视图含义Tab.2 The meaning of the system views
单井基础信息视图v_djjc包含了16个相关联的表和字典,例如单井基础信息表(t_djjc)、单井安装信息表(t_djaz)、区队字典(t_yh)、单位字典(d_dw)、井别字典(d_jb)、井位字典(d_jw)等,然后用表3所示的SQL语句获取视图v_djjc所包含的所有字段名,其中的"sys.columns.name<>'状态'and sys.columns.name<>'单位代码'"是过滤掉不需要用户选择查询的字段;vname="v_djjc"。
表3 获取动态查询字段名的SQL语句Tab.3 SQL to obtain dynamic query fields name
1.2.2 控件属性设置
设计与实现通用动态查询的控件属性设置如表4所示。
1.2.3 通用动态查询控件的设计流程
在查询控件中设计了多个方法,如多表字段名的动态获取、组合查询条件字符串生成、排序条件字符串的生成、最终动态查询SQL语句的生成,以及查询功能等。这些方法均封装在控件中,并提供了与查询[7]系统实现的服务接口。用户控件的设计流程如图1所示。
动态查询模块的功能实现同样遵循系统的唯一入口即登录窗口,根据用户的权限决定用户是否能登录成功,若成功登录后,则携带着使用系统的重要参数,如用户姓名、用户所在单位等进入系统;该用户有无查询功能是依据系统管理员对业务的分配决定的,若有,则执行动态查询功能,详细流程如图2所示。
图1 动态查询控件的设计流程Fig.1 The design process of dynamic query control
将设计的该模块应用于采油厂原油生产管理系统中,受到用户极大的欢迎。查询页面如图3所示。
应用结果表明,该查询模块具有如下的优点:
1)速度快、效率高 基于视图的查询可大大提高基于多用户频繁使用的查询模块速度;
2)安全性好 登录进入查询系统之后,只能查询系统管理员已分配给自己的动态查询业务。而且用户登录时采用的是实名制,在用户日志中有用户每一次的使用系统记录;
3)灵活且功能强大 用户可以自己定制查询字段,也可以自己设计数据查询的组合条件以及数据排序的字段、顺序,因此动态查询是一种完全根据用户需要的查询方式。而且,用户可以自己编写或修改组合查询条件以达到查询目的;
4)查询信息量大 本系统的动态查询字段不是建立在传统的单表,而是首先根据数据的重要性与相关性建立了31个视图,提供了丰富的信息,使得用户在每次查询过程中,可以查询到相关联的数据;
5)可维护性强 用户要查询的字段项全部是通过所建立的视图获取的,因此,若用户的查询数据字段有所变化,只需修改视图而不需要直接修改代码;另外,设计实现了通用的动态查询控件后,大大简化了动态查询模块的维护;
6)界面友好、易操作 动态查询页面设计友好,操作简单。
图2 动态查询实现流程图Fig.2 The realization flow chart of dynamic query
图3 单井压裂动态查询页面Fig.3 The dynamic query page of single well
传统的静态查询方式具有查询数据项、查询条件不能动态设置的缺点,使其不能满足用户灵活性要求。本文根据企业信息管理的需要,设计了基于多表的动态查询模块,并将其应用于原油生产管理系统中,取得了很好的查询结果。事实上,该方法也可用任意信息管理系统中的查询子系统中。
[1]李成,王卫东.重点工程信息和质量验收标准移动查询系统的研发[J].铁路计算机应用,2011,20(10):5-7.
LI Cheng,WANG Wei-dong.Research and development on mobile query system for key project information and quality inspection standard[J].Railway Computer Application,2011,20(10):5-7.
[2]闫秀婧,王彩霞.教育研究网络管理信息系统研建[J].甘肃林业职业技术学院学报,2006(11):11-15.
YAN Xiu-jing,WANG Cai-xia.The education research management information system construction[J].Journal of Gansu Forestry Technological College,2006(11):11-15.
[3]尚东挺,王绪宛,王亚洲.基于大型数据库的医院信息系统设计与实现[J].电脑知识与技术,2011,7(33):8123-8124.
SHANG Dong-ting,WANG Xu-wan,WANG Ya-zhou.The design and implementation of the hospital management system based on large-scale database[J].Computer Knowledge and Technology,2011,7(33):8123-8124.
[4]Pressman R S.Software Engineering:A Practitioner’s Approach[M].Sixth Edition McGraw-Hill Science/Engineering/Math,2004.
[5]刘婕,张琳,温才燚,等.ASP.NET 2.0+SQL Server动态网站开发从基础到实践[M].北京:电子工业出版社,2007.
[6]刘军,阳小华,杨星.基于B/S模式的通用型组合查询组件的设计[J].微计算机信息,2006,22(2):256-258.
LIU Jun,YANG Xiao-hua,YANG Xing.Design of a component of general combined query based browse/server mode[J].Microcomputer Information,2006,22(2):256-258.
[7]韩双旺.基于SVG的矢量WebGIS地图高级查询功能的实现[J].工业仪表与自动化装置,2011(4):68-72.
HAN Shuang-wang.The realization of advanced search functions on SVG-based vector WebGIS map[J].Industrial Instrumentation&Automation,2011(4):68-72.