收藏 分销(赏)

通用数据库查询系统论文.doc

上传人:仙人****88 文档编号:11245479 上传时间:2025-07-10 格式:DOC 页数:33 大小:674KB 下载积分:10 金币
下载 相关 举报
通用数据库查询系统论文.doc_第1页
第1页 / 共33页
通用数据库查询系统论文.doc_第2页
第2页 / 共33页


点击查看更多>>
资源描述
目 录 摘 要 1 Abstract 2 第一章 前 言 3 第二章 需求分析 4 第三章 系统设计的目的和要求 5 第四章 系统运行环境 6 4.1 系统运行的硬件环境 6 4.2 系统运行的软件环境 6 第五章 系统设计概要 7 5.1总体设计思想 7 5.2 系统功能设计 9 5.3 数据库结构设计 11 第六章 系统详细设计 12 6.1数据库链接技术的设计与实现 12 6.2视图设定模块设计与实现 14 6.3统计模块设计与实现 18 6.4输出模块设计与实现 20 6.4.1 Excel文件输出方式 21 6.4.2 文本文件输出方式 25 总 结 31 致 谢 31 参 考 文 献 32 摘 要 查询系统是管理信息系统的重要组成部分,本文详细介绍了基于Delphi+MS SQL Server技术的通用查询系统的设计思想与实现方法,提出一种在数据库系统运行中动态查询、动态生成表格及动态统计的通用方法。 首先分析了用户对MIS的一般查询要求,提出了实现通用动态查询程序的数据结构。然后论述了通过修改注册表存入数据库系统配置信息实现数据库连接的方法。另外,还讨论了如何建立视图来满足用户多变性和多样性查询要求。最后,介绍了利用Excel Application组件设计动态表格的原理。 关键字:Delphi、MS SQL Server、通用查询系统、Excel、注册表、视图 Abstract The Query System is an important part of MIS. In this paper We give a detailed description of the idea for design of the universal query system, and its realization method on the basis of Delphi and MS SQL Server technology, thus providing an universal method of dynamic query, dynamic report generation and dynamic statistic in database systems. First of all, analyzing general query requirements of MIS to users and presenting the database structure for realizing general database dynamic query. Secondly it points out the way of saving database system configuration information through modifying registry to realize database connection. Besides, it discusses the way how to establish the view to satisfy the changefulness and variety of user’s query. Finally it introduces the principle of designing dynamic report by using Excel Application component and technology. Keywords:Delphi、MS SQL Server、Universal query system、Excel、registry、view 第一章 前 言 随着计算机、网络技术、数据库应用技术的迅速发展,各类数据库信息量日益膨胀,在这信息技术爆炸的年代,人们越来越需要一种通用的数据库查询技术来满足不同的应用需求。无论是对MIS还是现在被人们炒得津津乐道的ERP、URP、CRM等涉及管理类的应用需求都显的十分迫切。另一方面对这种查询系统需求会随着时间的推移和用户业务的需求变化而变化。传统的条件查询的设计方法,是根据用户当时的工作需求而设计的,只能满足当时条件下的查询需求,如果用户的工作进程发生了变化,提出新的查询要求,它就显的无能为力了,因此,实现随机查询条件,使用户根据需要随机设置查询条件,自然就成为MIS开发的重要目标之一。因此,人们都在研究如何采用更好的方法实现快速的数据库查询。 现在用于开发数据库应用程序的工具除Delphi以外还有许多,例如Visual C++、Visual Basic和Java等,但它们总不比Delphi来的简单和稳定。Delphi作为Windows平台上高效的可视化开发工具,尤其是在数据库应用方面具有独特的功能。借助Delphi,程序员可以快速地开发出具有独特风格的数据库应用程序。 微软公司开发的MS SQL SERVER是当前Windows平台上被广泛应用的关系型数据库管理系统,其数据库管理功能和数据处理能力相当完备。特别是MS SQL SERVER 2000功能更加强大,具有良好的稳定性、可靠性,且易于操作,已成为业界领先的数据库管理系统。 Delphi+SQL Server的开发模式是目前比较流行的数据库解决方案。应用Delphi中的各种数据库技术完全可以实现通用查询系统的功能。现在,设计快速、便捷又具有随机设置查询条件功能的数据库查询系统的技术基础条件已成熟,而前期准备工作已做好。 第二章 需求分析 一旦建立了一个数据库,那么,查询是一个十分重要且经常性的工作。因此,在数据库应用系统的设计中,查询应视为十分重要的工作。对通用数据库查询系统应具备如下功能: (1)、应能自由地选择查询的内容。要查询的数据项(字段)可能来源于多个数据表,用户可以自由选择任意表中任意数据项(字段)。 (2)、应能动态地定义查询条件。查询条件完全取决于用户的需要,可以随意创建,没有任何的人为的限制。 (3)、应能方便地浏览和输出查询结果。程序支持动态设置查询条件,在进行查询后可以通过屏幕预览结果,也可以将结果输出到指定的文件中。 (4)、应能保存查询定义。对平时经常使用的查询处理,用户可将查询定义(包括查询内容和查询条件)保存起来,方便重复多次使用。 (5)、应能对查询结果进行排序。 (6)、对字符型查询方式,应该可以按模糊条件查询。 (7)、对日期型查询方式,应该可以按某日某月和某时间范围查询。 (8)、对数值型查询方式,应该可以按某值、值域的某一范围查询。 (9)、应能对查询结果根据要求进行统计、汇总。可以任意选择和搭配分组字段,并根据这些字段进行统计、汇总。 (10)、应能动态地链接要查询的数据库。不限于一种特定的数据库管理系统,提供与各种数据库系统的透明连接。 第三章 系统设计的目的和要求 在管理信息系统中,信息查询功能是最基本、最重要的功能之一,在设计查询模块时,能否让用户根据自己的查询需求,对数据库中的数据用直观的,方便的、自然的方式组织查询,是管理信息系统设计的关键技术。根据查询系统的需求分析和数据库的一般结构,结合当今软件技术设计的一般规律,通用查询系统应达到如下目的和要求: (1)、查询中,允许用户动态地选择输出格式、输出内容和输出顺序。 (2)、有多种格式输出,可以是屏幕显示、电子表格和文本文件等。 (3)、对查询结果根据要求进行统计、汇总,并可按要求格式输出等。 (4)、对查询内容具有动态记忆功能,以便多次重复查询。 (5)、友好的用户界面,查询界面设计友好、直观,尽可能实现自然、透明查询。 (6)、具有容错性。即允许用户发生误操作,但系统会对用户的误操作予以明确的提示和及时纠正,以免造成系统故障而崩溃。 第四章 系统运行环境 a) 4.1 系统运行的硬件环境 目前的数据库应用系统,已不再只是运行在单机环境下。随着网络技术的广泛应用,数据库应用系统也可在网络环境下运行。由我们开发的通用数据库查询系统可运行在局域网络环境下,并适合多数据库的查询。 图1 通用数据库查询系统运行环境 b) 4.2 系统运行的软件环境 Delphi作为前端开发工具,Delphi具有可视化组件多,面向对象编程能力强,程序执行速度快和简单易用等特点。后台采用大型数据库系统MS SQL Server,,这样可以充分挖掘和发挥Delphi的潜能,使开发出的通用查询系统可适用于多种平台,网络与单机同样适用。 第五章 系统设计概要 c) 5.1总体设计思想 通用数据库查询系统的首要任务是与MS SQL Server数据库连接,具体数据库不确定。通常采用编程的方法建立数据库连接,只能适应某个固定的数据库应用系统,无法实现由用户自由地选择数据库,进行自动配置。我在通用数据库查询系统中采用注册表技术,将与用户要查询的数据库相关的连接信息,诸如服务器名、数据库名、账号、密码等信息写入Windows注册表,供之后的设置、查询等模块调用,实现动态修改数据库链接,具有通用性和灵活性,给程序员和用户均带来极大的方便。 信息查询是通用数据库查询系统的核心任务,也是任何一个管理信息系统中最重要且用户使用频率最高的功能之一。通用动态查询是一种可以适应用户数据库结构变化和查询条件变化,在程序运行过程中,依据用户需求动态地从数据库中获取相关信息,实时建立查询语句的查询方式。一般来说,在关系数据库系统中,用户往往采用一种基于数据表字段的查询,他们一般只想提供相应的属性值,就希望得到实体的有关信息。而在大多数的数据库管理系统中,为了维护数据库系统的正常运转,设计了一系列系统数据库,其中包含的系统数据表用于记录数据库系统中的所有数据库的总体信息。那么如何从不同应用不同类型和不同结构的数据库当中获取用户需要查询的字段信息,便成为实现通用动态查询的关键。经仔细分析和观察MS SQL Server数据库,发现动态查询程序可以从相应用户数据库的系统表Sysobjects和Syscolumns中提取用户表信息和字段组成信息,动态生成查询条件。即可以通过访问和操作系统表来实现动态查询。由此为我们要完成的通用数据库查询系统需要设计三张表。第一张表tablename (name, id, Chinese, flag),该表用于存放数据库中所有用户能用到的表名,其中表中name字段和id字段信息取自于数据库系统文件sysobjects。第二张表columnname (colname, id, Chinese, flag, no),该表用于存放表一中用到的表的字段名,其中表中colname字段和id字段信息取自于数据库系统文件syscolumns。第三张表querycondition (colname, id, condition1, condition2, setname),该表用于保存查询条件,其中表中id字段和colname字段取自于数据库系统文件,定义同表二。同时,一般数据库中都是以英文为基础,只有数据库设计人员才了解表名和字段名代表的实际含义,为了使一般用户也能理解查询结果,程序要提供给表和字段取中文名称的功能。表一和表二中的Chinese字段就是分别用于存放表名和字段名的中文名称。为满足按用户要求自行定义查询结果显示字段的顺序,在表二中设计的字段no,记录下用户自行定义的字段顺序号,供查询结果显示时采用。对经常使用的查询处理,用户可把其查询定义保存起来,以便多次重复使用。为此在表三中设计字段setname定义为查询条件的保存名,表三中其它两个字段condition1和condition2为查询条件。 当用户需要执行包括多个表连接以及它们的组合查询,并且经常需要做这样的查询,就应该考虑构建一个体现这种查询的视图,而后用户可以查询这个视图,而不必关心查询的复杂性,这将有助于减少错误并节约时间。我在程序中设计了可以按用户要求自行建立相应视图的功能模块。数据库的用户视图定义通常通过用查询语句(SELECT语句)来实现。 查询结果输出同样是通用数据库查询系统的主要任务之一。查询结果要求能够动态输出,我们要完成的通用数据库查询系统程序要提供将查询结果数据导入Excel文件(.xls文件)和文本文件(.txt文件)两种手段。Excel是集电子表格和可视化编程的特点于一身的开发工具,同时,绝大多数的用户都习惯于使用Excel处理数据,Delphi提供的Excel Application组件,可使Delphi与Excel无缝联接,把数据传入Excel系统中,然后由用户自己去进行数据分析、处理和再加工。既减轻了程序员的工作量,又增加了通用数据库查询系统的灵活性。但是采用Excel输出查询结果也存在缺点,那就是当输出数据量较大时,输出速度明显减慢,这时可改用将查询结果输出到文本文件的方式来弥补采用Excel文件输出方式的不足。 实际上,查询结果可以直接输出,也可以在进行相关数据项(字段)的汇总、统计后再输出。我将程序设计为允许用户任意指定要汇总和统计的数据项(字段),程序既可实现单项汇总、统计,也可实现多项汇总、统计。 我们要完成的通用数据库查询系统的数据流图如下: 用 户 统 计 表名表 查询设 定 数据源 设 置 输 出 字段名表 查询表 表名表 视图设 定 字段名表 视图表 图2 通用数据库查询系统数据流图 d) 5.2 系统功能设计 依据用户对通用查询系统的需求和通用查询系统的总体设计要求,我们把通用数据库查询系统的功能划分为:设置、查询设定、视图设定、统计、输出等五个功能模块。本次毕业设计我承担其中的数据库链接、视图设定、动态输出查询结果、动态统计功能模块的设计与实现。 系统的功能模块结构图如下: 通用查询系统 查询 设定 统 计 输 出 视图 设定 设 置 图3 通用数据库查询系统功能模块结构图 设置 设置功能完成对数据库中表和字段的设置,具体完成对数据库中表选择和字段的选择以及对表名,字段名的别名的输入工作。 查询设定 查询设定功能通过对选择表中需查询的数据库名、查询字段和查询条件的输入来定义查询条件,确定查询内容并进行具体的查询。查询条件以及查询结果显示均可以动态生成并保存。 视图设定 视图设定程序通过对选择表中的相关联数据库名、相关字段和视图生成条件的输入来确定视图内容并形成视图定义。视图的定义可以动态生成并保存。 统计 对查询结果进行分组汇总、统计。通过分别选择汇总、统计字段,既可以实现单项汇总和统计,也可以实现多项汇总和统计。 输出 动态生成的查询结果,不仅可以通过屏幕预览结果,也可以直接输出到Excel 文件和文本文件中保存。输出结果动态生成。 e) 5.3 数据库结构设计 程序设计的思想是通过建立三张表,第一张来存放库中所有表和视图名,并对其提供对应的中文名以利于区分;第二张用来存放所有表和视图中的字段名,同时也提供对应的中文名;第三张表存放查询条件,借助于前两张表来实现对指定表的查询工作。 下面是表的详细说明: 1、 表一: tablename(name,id,chinese,flag);该表用于存放数据库中所有用户能应用到的表名。 字段名 含义 name 表名 id 表在数据库中编号 chinese 表名的中文 flag 表是否被使用的标志 此表中的name,id来自于数据库系统,chinese和flag由用户设定。 2、表二:columnname(colname,id,chinese,flag,no);该表用于存放表一中用到表的字段名 字段名 含义 colname 字段名 id 字段所在表的id chinese 字段的中文 flag 字段是否被使用的标志 no 查询结果显示时字段的排列顺序 此表中的colname,id来自于数据库系统,chinese、no和flag由用户设定。 3、表三:querycondition(colname,id,condition1,condition2,setname);该表保存查询条件。 字段名 含义 colname 被查询的字段名 id 字段所在表的id condition1 查询的条件 condition2 查询的条件 setname 查询条件的保存名 此表中的colname,id来自于数据库系统,其余由用户设定。 第六章 系统详细设计 f) 6.1数据库链接技术的设计与实现 通用数据库查询系统,首先要解决的问题是如何使查询系统与某个实际物理数据库相链接的问题。我们要完成的查询系统通过注册表动态设置数据库的链接方法,由用户选择数据库,进行自动配置,达到查询系统可以随时和任意一个数据库相链接的目的,真正实现查询过程中的动态链接,也是通用查询系统中最重要的技术之一。 在数据库设计编程中,涉及与数据库链接的操作,通常做法是利用控制面板中的ODBC数据源管理器来进行。即通过手工设置,激活“开始”菜单,点击“设置”→“控制面板”→“数据源ODBC ”, 增减和修改数据源,这种做法显然对用户提出了较高的要求,要求用户能够自己设置数据源,并且用户必须熟悉各种类型的数据库配置方法及相关参数,诸如数据库类型、数据库路径、数据库名称、数据源描述等等参数的内容。此外,数据源名称必须和程序开发者使用的数据源名称完全相同,否则会出现无法访问数据库的情况。另外这种方法虽然简单,但缺乏灵活性,因为作为通用数据库查询工具,往往与查询系统相链接的数据库,其存放路径并不一定固定,需根据实际情况进行调整,才能实现与数据库的链接。 注册表介绍 注册表(Registry)是Windows系统中的一种特殊文件,可以理解为它是Windows的配置文件。它包含了当前计算机系统中所有软件、硬件的配置信息,系统初始化信息和应用程序的初始化信息、与用户相关的各种设置信息。通过对注册表实施各种操作就可以更改系统的一些设置。如:应用程序经常将自身的一些信息,比如程序名称,安装路径、密码等保存到注册表文件中以备调用。 注册表采用树形的目录结构来组织数据,每一个节点称为主键(key),其中有五个键位于最顶层称为根键(rootkey),根键均以HKEY为前缀,用来表示注册表信息的总体分类。每个根键下面可有多级子键(Sub key),子键实现对系统中某一方面信息的描述。应用程序对注册表进行访问、管理或维护的过程,实际上就是建立、读取、修改、删除上述键及键项的过程。 实现技术 在Delphi中,Tregistry组件提供了对Windows注册表进行操作的手段。Tregistry对象的属性和方法允许应用程序对注册表进行读取、写入、查询及删除等操作,因此利用Tregistry对象的属性和方法来对注册表进行编辑,就可以实现数据库的自动链接的目的。Tregistry对象的属性和方法有Create创建一个新的注册表对象、Rootkey确定注册表的某个根键、Openkey打开主键、ReadString读取数值、WriteString写入数值Closekey关闭主键。具体操作步骤如下: 创建Tregistry对象 指定根键 HKEY-LOCAL-MACHINE 建立\software\dnes配置主键 生成dbparm子键 及键值 生成rbparm子键 及键值 图4 注册表操作步骤 以上程序运行成功后,可以调用加密程序对HKEY-LOCAL-MACHINE\Software\dncs键下新建的数据库配置信息进行加密,确保数据库系统的安全可靠。 通过Delphi应用程序,修改Windows注册表,可以减少查询系统对外界条件的依赖性。其好处为: (1) 方便程序员在调试阶段进行各类数据库链接的切换。 (2) 方便用户在运行期间对不同数据库进行查询。 (3) 根据不同用户可以设置不同的数据库访问权限。 数据库链接界面如图5,用户通过选择认证方式,输入服务器名、数据库名、账号、密码等信息,在确认输入信息正确后,点击“修改”按钮,即可完成数据库链接操作。若确认输入信息有错,点击“删除”按钮,重新输入。 图5 数据库链接界面 g) 6.2视图设定模块设计与实现 关系数据库由许多表构成,视图是用户查看这些数据库表中数据的一种方式,可将视图看成是一个移动的窗口,通过它用户可以看到自己感兴趣的数据。 视图的定义: (1)用户经常要用到的一些数据; (2)用户经常要查询的内容。 从视图的定义中,我们可以看出视图主要用于查询。那些经常使用的查询可以定义为视图,从而使用户不必以后每次操作都要重新指定条件。尤其是当用户需要执行包括多个表连接以及它们的组合查询时,视图向用户隐藏了表到表所需要的连接操作,它不仅简化了用户对数据的理解,同时也简化了用户的操作。 由于视图的查询实际上是对基表的查询,因此基表的变化可以动态地反映到视图上。即视图对应的内容总是实时的、最新的内容,而不是视图定义时的内容。 基于以上所述,通用查询系统设计成具有根据用户要求来定义视图,既体现了通用查询系统的通用性,又增加了系统的灵活性,并且有利于程序的维护。因为当要增加或修改查询视图时,不需修改程序,只要在视图定义模块内修改或增加视图信息即可达到目的。 视图设定程序通过用户选择表的表项和与其相关表的表项来创建视图,并将该视图的有关信息保存,以便用户进行查询时动态生成所要求的查询结果。 用于表名添加到tablename1里的代码如下: tablename1.Items.Add(ADOQuery1.FieldByName('name').AsString) 其中tablename1提供用户选择已存在的表,在tablename1的onClick事件里添加的字段生成部分的代码。先取得字段的个数,然后通过循环动态生成相应的控件。代码如下: s3:='select name,xusertype from syscolumns where id='+sid; //读取表种字段信息的SQL语句 ADOQuery3.Close; ADOQuery3.SQL.Clear; ADOQuery3.SQL.Add(s3); ADOQuery3.Open; ADOQuery3.Last; ADOQuery3.First; for i:=0 to ADOQuery3.RecordCount-1 do //创建控件的循环 begin colche1[i]:=TCheckBox.Create(Self); //动态创建checkbox控件,用于用户选择字段 coledit1[i]:=TEdit.Create(Self); //创建edit控件,用于显示字段中文名 end; tablename2(ComoboBox)供用户选择已选择表的有关联的表,即以tablename1中选择的表的主键作为外键的表,和自己的主键被tablename1中选择的表作为外键的表(在这里要注意避免加入表的重复)。 在tablename1的onClick事件里添加了将表名添加到tablename2里的代码如下: s5:='exec sp_fkeys @pktable_name='''+trim(tablename1.text)+''''; //pktable_name是表的名称(该表带有主键) s6:='exec sp_fkeys @fktable_name='''+trim(tablename1.text)+''''; //fktable_name是表的名称(该表带有外键) ADOQuery5.Close; ADOQuery5.SQL.Clear; ADOQuery5.SQL.Add(s5); //获得数据集 try ADOQuery5.Open; ADOQuery5.First; while not ADOQuery5.Eof do begin if tablename2.Items.IndexOf(ADOQuery5['fktable_name'])=-1 //判断要加入的表名在tablename2.Items中是否已存在,不存在就加入 then tablename2.Items.Add(ADOQuery5['fktable_name']); ADOQuery5.Next; end; except ShowMessage('无法连接服务器'); end; ADOQuery5.Close; ADOQuery5.SQL.Clear; ADOQuery5.SQL.Add(s6); //获得数据集 try ADOQuery5.Open; ADOQuery5.First; while not ADOQuery5.Eof do begin if tablename2.Items.IndexOf(ADOQuery5['pktable_name'])=-1 //判断要加入的表名在tablename2.Items中是否已存在,不存在就加入 then tablename2.Items.Add(ADOQuery5['pktable_name']); ADOQuery5.Next; end; 以上自动完成了用户选择tablename1中表后的大部分工作,然后再由用户选择两个表的字段名。 myview:='create view'+' '+ edit3.text+' '+'as select '+col+' from '+trim(tablename1.Text)+','+ trim(tablename2.Text)+ ' where '+con; //生成视图的语句, col为要选择的表项,con为条件 在Scrollbox1和Scrollbox2中选择要生成视图需要的表项,在field1(TComboBox)和field2(TComboBox)中选择生成视图的条件,并且可在conmemo(TMemo)中看到生成条件,可在Memo1(TMemo)中看到生成视图的整个SQL语句。 用户最终看到视图界面(如图6)。其中大部分内容都是在运行时动态产生的。在Delphi里完成主界面,并在其上添加了一些控件。例如: ComboBox,用于显示数据库中所有表名,并让用户进行选择。ScrollBox,用于显示各个表中的字段,用户可以通过相关操作对字段进行操作。动态生成的控件有选择字段的CheckBox,并且每对应一个字段都有一个Edit框,用于显示字段中文名。 图6 视图界面 h) 6.3统计模块设计与实现 通用查询系统还提供对查询结果进行汇总、统计功能,用户可以随意选择需要汇总的数据项(字段)和统计数据项(字段),系统实现单项汇总、统计或多项汇总、统计。 汇总和统计的具体实现,主要是获取数据集,具体操作由DBMS提供的SQL语句调用sum函数来实现。然后通过dbGird显示统计结果。采用dbGird显示方式,则窗口中的列可以动态地交换顺序、拉宽和缩无。统计模块界面及统计结果显示如图7。 图7 统计结果显示 具体实现代码如下: if ScrollBox1.ControlCount<>0 then begin ccol:=''; ccon:=''; ccon:=form1.con; showmessage(ccon); if length(ccon)>0 then ccon:=' where '+ccon; ccon:=ccon+' group by '; for j:=0 to ScrollBox1.ControlCount-1 do if colche1[j].Checked=true then begin ss:='select colname from columnname where chinese='''+colche1[j].Caption+''' and id='+form1.sid; ADOQuery2.Close; ADOQuery2.SQL.Clear; ADOQuery2.SQL.Add(ss); ADOQuery2.Open; ccol:=ccol+ADOQuery2.FieldByName('colname').AsString+' as '+colche1[j].Caption+','; if length(ccon)=0 then ccon:=ccon+ADOQuery2.FieldByName('colname').AsString+',' else ccon:=ccon+ADOQuery2.FieldByName('colname').AsString+','; form3.name[m1]:=colche1[j].Caption; form3.ty[n1]:=167; m1:=m1+1; n1:=n1+1; end; ccon:=copy(ccon,1,length(ccon)-1); //去掉逗号 end ; m2:=m1; n2:=n1; for j:=0 to ScrollBox2.ControlCount-1 do if colche2[j].Checked=true then begin ss:='select colname from columnname where chinese='''+colche2[j].Caption+''' and id='+form1.sid; ADOQuery2.Close; ADOQuery2.SQL.Clear; ADOQuery2.SQL.Add(ss); ADOQuery2.Open; ccol:=ccol+'sum('+ADOQuery2.FieldByName('colname').AsString+') as '+colche2[j].Caption+'累计'+','; //用sum函数来统计 form3.name[m2]:=colche2[j].Caption+'统计'; form3.ty[n2]:=62; m2:=m2+1; n2:=n2+1; end; ccol:=copy(ccol,1,length(ccol)-1); ss:=''; if ScrollBox1.ControlCount<>0 then ss:='select '+ccol+' from '+form1.ADOQuery1.FieldByName('name').AsString+ccon else ss:='select '+ccol+' from '+form1.ADOQuery1.FieldByName('name').AsString;//最终生成的SQL语句 ADOQuery1.Close; ADOQuery1.SQL.Clear; ADOQuery1.SQL.Add(ss); ADOQuery1.Open; i) 6.4输出模块设计与实现 查询结果输出是通用查询系统的重要组成部分。同时,由于输出格式的多样性和复杂性,用户往往对输出格式提出不同的要求,包括字段的增减,格式的调整,不同的统计要求等,降低了系统的通用性。 j) 6.4.1 Excel文件输出方式 用Delphi动态选择所需数据,将数据导入到Excel文件中进行格式加工,由用户自主处理,无疑是上述问题的一个较好的解决方案。充分利用Excel强大的表格处理能力以及灵活的数据分析处理能力,可以制作出任意格式的报表,既减轻了程序员的工作量,又增加了程序的通用性。 Delphi中的Servers组件中提供了用于处理Excel文件的TExcel Application、TExcel Workbook和TExcelSheet以及TExcelChart等组件,利用这些组件可以方便地实现程序控制Excel操作。TExcelApplication用于连接Excel应用程序,TExcelWorkbook和TExcelWorksheet只有在TExcelApplication调用了Excel后才能工作。TExcelWorkbook用于打开一个Excel模板或者Excel文件。TExcelWorksheet用来具体对Excel进行操作,一个Excel文件可以包含多个Worksheet,但在同一时间只能对一个Worksheet操作,这就要使用TExcelWorksheet。应用Excel控件时,可以事先做好特定的模板,然后再使用模板;也可以不创建模板,在使用时直接建立新的文件,然后操作。我因为查询结果没有具体的形式,所以使用了第二种方法,直接在新建的Excel文件里输出结果。 主要步骤: 1、打开和Excel应用程序的连接ExcelApplication.Connect; 2、创建一个Excel工作簿ExcelApplication.Workbook. Add (Empty Param, 0); 3、对Excel文件里的工作簿进行操作; 4、保存文件Excelworksheet1.SaveAs (Editl. Text); 5、关闭Excel应用程序ExcelAppli
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服