《delphi7数据库编程学习捷径.ppt》由会员分享,可在线阅读,更多相关《delphi7数据库编程学习捷径.ppt(43页珍藏版)》请在三一办公上搜索。
1、Delphi 7 数据库编程 学习捷径,敬喜 王昀北京科海电子出版社,目 录,第1章 Delphi 7 集成开发环境(IDE)介绍第2章 Delphi 7数据库系统概述第3章 Delphi 7和数据库第4章 创建数据库 第5章 读写字段值 第6章 计算字段第7章 链接表第8章 查找和确认数据第9章 制作数据输入窗体第10章 列表和查找表第11章 查询和设定范围第12章 多窗体和打印窗体第13章 制作报表第14章 开发图表第15章 将图或文件存入数据库第16章 编写多媒体数据库应用程序 第17章 数据库开发实例学生管理系统,第1章 Delphi 7 集成开发环境(IDE)介绍,1.Delphi
2、7 IDE 运行界面 通常,启动Delphi 7的方法是:单击“开始”按钮,然后依次从级联菜单中选择“程序”Borland Delphi 7Delphi 7选项,就进入了Delphi 7IDE 运行界面,如图1.1所示。其各组成部分的功能见教材1.31.7节。,主窗口 窗体窗口 代码编辑窗口 对象查看器 对象树形结构浏览窗口,2.Delphi 7 主窗口 主窗口是Delphi 7 IDE的核心,开发人员通过主窗口进行创建工程、编写程序、调试程序、运行和维护应用程序等一系列管理工作。Delphi 7 主窗口由3个部分组成(其功能见教材1.3节),如下图所示。,第2章 Delphi 7数据库系统概
3、述,1.Delphi 7 数据库特性 数据访问组件(Data Access Components):主要用于说明数据库的有关信息,如应用程序要访问(连接)的数据库和要访问数据库中的具体的数据库表,以及要访问表中的哪些字段等。常用的数据访问组件有TTable、TQuery、TDataSource等。数据控制组件(Data Control Components):主要用于显示浏览数据库中的数据信息,为用户提供可视化的界面,可以让用户对数据库中的数据信息,进行浏览、编辑、插入、删除等操作。因而,数据控制组件也被称之为数据浏览组件。数据控制组件既能够把数据库中的数据显示到窗体中,又能将其自身的经过修改
4、的数据写回到数据库中。常用的数据控制组件有TDBGrid、TDBEdit、TDBCheckBox等。,3.部分数据访 问组件的主 要用途,4.部分数据控 制组件的主 要用途,第3章 Delphi 7和数据库,3.1 创建一个Delphi 7 工程(Project)的步骤 3.2 定制窗体,第3章第1节完成的定制窗体,执行程序后单击“欢迎”按钮的程序窗口,3.3 编写代码,3.4 Methods(方法)现在,我们来介绍有关Methods(方法)的主题。在Pascal语言中,在对象中说明的过程或函数称为方法。它的语法是:例如,Application.Terminate;,这个程序语句说明Termi
5、nate(终止)方法被调用,或者说,Application对象调用了Terminate方法。当程序执行这个语句时,就实现这个Terminate方法,即终止程序运行。又例如程序语句Memo1.CutToClipboard;,表明调用一个名为Memo1的Memo组件的CutToClipboard(剪贴)方法。其中,Memo1是一个对象的名称,当程序执行这个语句时,就实现这个CutToClipboard方法,即把Memo1中的文本剪贴到剪贴板上去。举例:作为一个例子,打开一个空窗体,加入一个Memo组件和一个按钮,设置按钮的Name属性为Cut,再将按钮的Caption属性设置为。这样就为Cut按钮
6、建立了CutClick事件处理过程:,方法CutToClipboard实现剪贴:Procedure Tform1.CutClick(Sender:TObject);BeginMemo1.CutToClipboard;End;,方法CopyToClipboard实现拷贝:ProcedureTform1.CopyClick(Sender:TObject);BeginMemo1.CopyToClipboard;End;,3.5 数据库设计Delphi开发数据库应用程序的一般步骤1.系统设计步骤1:工作活动性质鉴别 对设计者来说,当他承担了某个部门建立数据库的任务时,首先应当鉴别该部门的需要和用户的需
7、求。并做出下列决策:(1)决定该部门数据处理的一般策略。(2)估算现有数据处理能力及其性能。(3)进行可行性研究,规划各种方案。(4)选择某种方案。(5)搜集有关信息类型、确定有什么样的信息流入和流出,以及信息流入流出的频度等。步骤2:定义 此步骤是建立该部门的模型。主要工作是:(1)在书面上记载可能出现的数据类型。(2)建立原始概念:实体集合、实体属性、属性值、实体联系集合(简称关联集合)。步骤3:用数据表示实体集合和关联集合(1)确定每一个实体类型,并为其分配一个惟一的名字。(2)确定每一个定义域,并为其分配一个惟一的名字。(3)为每个实体类型确定主键。(4)用主键定义域代替每一个实体。求
8、出与实体属性对应的各个关系,并给每个关系确定一个名字。(5)求出全部的关联类型,并为其确定一个名字。(6)用相应的主键来代替关联类型。步骤4:建立E-R模型 以下的步骤是对关系型数据库来说的。步骤5:将实体和关联转化为关系步骤6:分解关系。对每个关系确定其不可分解单元,可以得到一个基本关系集合。步骤7:根据传递定律确定所得到的基本关系集合的传递闭包。步骤8:由得到的传递闭包推导最小覆盖,得到若干个最小覆盖,选择其一作为数据库总体逻辑模型。,2.系统实现 在系统实现阶段,使用Delphi可以建立和测试系统设计阶段所构想的应用程序。在此阶段,最好使用数据库的一个备份,以防止应用程序可能破坏Delp
9、hi数据库后无法恢复。如果应用程序最终要配置到使用远程终端的数据源的话,可以有两种选择:l.在本地服务器上,使用备份的数据库的数据进行开发和调试。2.在远程服务器上,使用备份的数据库的数据进行开发和调试。其中,对前者来说,它独立于服务器,因此不会影响服务器的其他特性。而后者就有一定的危险性,因为,程序的可能错误而导致服务器的瘫痪。值得说明的是,系统设计独立于特定计算机系统;而系统实现必须考虑实际的计算机系统,以及该系统所支持的数据库管理系统(DBMS)。系统实现阶段的主要工作:(1)实现物理设计。通过使用物理设计技术以选择最适合于数据模型结构的物理结构,这些技术随采用的物理设备及存取方法而异。
10、量化数据是物理设计中的一个重要因素。所选数据库逻辑结构和物理结构的定义由数据库定义语言完成。(2)选择存取数据库的方法。在选择物理结构时,存取方法是特别重要的,存取方法决定了设计完成后数据库的性能,而用户界面软件决定了数据库是否便于用户使用。一般系统中对数据库的存取是由数据库联机查询语言或嵌入在程序设计语言中的输入/输出命令完成的。(3)确定存储需求说明:存储需求定义用户关于数据的使用方法。其中的存取路径,用以说明存储需求所涉及的实体集、关联集、逻辑记录,同时还要说明这些结构的使用顺序,以及对每个结构所完成的操作,这些操作可以是检索、存储和插入。(4)确定量化数据说明:一般方法是用数据字典作为
11、数据项和记录型的描述文本。数据字典中可以包括:组织模型中各组成部分的数据项名、类型、取值范围、长度和数据量、各实体间联系的频度、存取需求执行频度等。(5)选择开发软件的技术手段(例如,使用Delphi 7)进行软件开发。3.系统运行和维护 系统运行是为了考核系统及其设备、软件系统和数据库应用程序等是否能达到预期的目标。而对应用程序来说,更多的是调试。所谓维护是指在运行中排除应用程序的错误及不合理的内容,以及在系统运行中还要根据用户提出的一些新的要求和建议,对应用程序做一定的修改,使其进一步得到完善和提高。在每个实施步骤中都有数据库的开发和应用程序界面的开发任务。数据库和应用程序开发任务的执行,
12、则会根据开发项目的大小和范围而定,可能会由不同的人来完成和执行。,3.6 例子:设计一个商品销售数据库(简称PSDB)顾客(Customer)到商店购买商品(Parts),交款后,商店要给顾客开出发票。发票上标出的内容有:顾客姓名、单位、地址、商品名、单价、总价以及购买日期等。以往这项工作是手工在发票单上填写,现在要用计算机来完成,那么该如何做呢?对商店或者计算机来说,要求有一份顾客名单,我们称之为Customer表。还要有一份商品清单,我们称之为Parts表。将这两张表联系在一起,就构成了PSDB数据库。现在给数据库下个定义:按照一定结构组织的相关的数据集合称做数据库。在数据库术语中,把顾客
13、、商品称做实体,实体之间的联系称做关联。由此可见,实体及其关联才构成数据库。在关系模型中,“关联”是不可缺少的,因此,关联也就转化为实体,也可以称之为关联实体。因此,在以后的讨论中,凡是说到实体均包括关联实体。现在,在我们的PSDB数据库中,把实体Customer和Parts联系起来的是关联实体,为其命名为Items(项目)。这样,PSDB数据库是由实体Customer、Parts和Items构成。以下就来介绍数据库逻辑设计的基本内容和方法。,在数据库通用设计方法中,通常采用一种“实体-联系”方法,简称E-R方法。这样,就可以将PSDB数据库用E-R图表示。,3.7 E-R方法,在完成实体设计
14、后,例如完成E-R图设计后,就要为每个实体标明属性。首先,数据库中的每个实体都要有个标识符,而且是惟一的,称其为主标识符(也称为主关键字或主属性)。,1.标明Customer属性,例如,在PSDB数据库中的Customer实体应有一个主关键字,显然,顾客的姓名不成,因为有重名重姓,所以只好给顾客Customer再加一个顾客编号CustNum。同样理由,要给商品Parts加一个编号PartNum,以及给关联实体Items加一个编号ItemNum。注意,为了简化数据库设计的说明,对于现在讨论的课题,我们只列出主要的属性,而不追求对它的客观需求。设Customer属性有CustNum(顾客编号)、L
15、astName(顾客的姓)和FirstName(顾客名字)。,设Parts属性有PartNum(商品编号)、Description(有关商品的说明)、QtyInStock(商品的库存量)和SellingPrice(销售价)。,标明Parts属性,设Items属性有ItemNum(Items记录编号)、CustNum(顾客编号)PartNum(商品编号)和QtySlod(商品销售量)。,标明Items属性,现在来说明为什么给Items标明这些属性。首先,为什么要建立ItemNum属性呢?因为Items需要有一个惟一的主标识符(也称为主属性),也就是需要有一个惟一的主关键字。另外,Items是把C
16、ustomer表和Parts表联系起来的关联实体,那么最简明的联系,就是在Items中放置Customer的主关键字CustNum和Parts的主关键字PartNum。事实上,根据Customer的主关键字CustNum就可以通过Items中的Parts的主关键字PartNum查到Parts表中的一切信息,例如,某商品的销售价是由Parts表中属性SellingPrice标识的。又例如有关每种商品的说明是由属性Descrption标识的。同时,依据PartNum还可以在Items表中直接查到购买了多少该种商品,即销售量是由Items表中的属性QtySold标识的。,在关系型数据库中,把实体视为
17、一种关系。关系的一般表示方法如下:关系名(属性1,属性2,属性n)在一个关系表达式中,也需要确定一个惟一的标识符(也称之为主属性,或主键,或主关键字),用以标识这个关系。如果在关系表达式中,我们假设指定“属性k”为主属性(关键字),那么在关系表达式中就把属性k放在最前面并用下划线“_”表示它是主属性(主键字)。于是,关系表达式就变成:关系名(属性k,属性1,属性2,属性n)这样,根据给Customer、Parts和Items标明的属性,就可以把它们用关系表达式表示如下:,这三个关系就是PSDB的关系数据库模型。,Customer(CustNum,LastName,FiestName)Parts
18、(PartNum,Description,QtyInStock,SellingPrice)Items(ItemNum,CustNum,PartNum,QtySlod),3.8 关系型数据库 1.关系模型,2.二维表,在关系模型中,一个关系可以用一个二维表来表示。二维表的行称为记录,列称为字段(记录项)。把这样的表统称为数据库表。一个数据库表的一般化表示。,关系Customer(CustNum,LastName,FirstName)的二维表表示。其表结构:,关系Parts(PartNum,Description,tyInStock,SellingPrice)的二维表表示。其表结构:,关系Item
19、s(ItemNum,CustNum,PartNum,QtySlod)二维表表示。其表结构:,3.数据库表结构设计,所谓表结构设计就是对表中的每个字段(Field)、字段类型(Type)、字段大小(Size)以及该字段是否为主关键字段(Key)等进行规定,以便将来能够对表进行数据操作(包括对数据的存取、增删、查询、修改等)。,设计Customer表结构,设计Parts表结构,设计Items表结构,4.设计数据库表的数据,现在给出PSDB数据库中三个表的实际使用的数据。设计好的这些数据,我们以后还要用到。,(1)Customer表的数据,注:ItemNum的类型(Type)设置为Autoincri
20、ment。这就意味,ItemNum的值会由程序自动地填入。因此,在制作Items表的数据时,不要在该字段中填入任何东西。,(2)Parts表的数据,(3)Items表的数据,第4章 创建数据库,1.构造表的结构 创建过程如下:(1)启动数据库桌面DBD。(2)设置工作目录。选择File Working Directory 命令。(3)设置工作目录的别名。选择 ToolsAlias Manager命令。选择TableRestructure命令,构造表Customer.db的结构。,2.向Customer表中输入数据选择FileOpen Table命令。打开Customer.db表。选择Table
21、Edit Data命令,将表置于编辑模式。向一个字段输入数据。即单击该字段,然后即可输入数据。使用Navigator控件对表中记录排序、移动。,3.继续向Parts.db和Items.db表输入数据,完成之后,建立PSDB完成。,4.创建Delphi数据库程序,(1)建立一个新的工程 l 运行Delphi 7;l 从主菜单中选择FileNewApplication命令,则Delphi 7 自动创建一个新工程。l从主菜单中选择FileSave As命令,保存单元文件CMyCust.Pas,保存工程文件 MyCust.Dpr。,(2)用数据库窗体向导创建窗体 在数据库窗体向导DatabaseFor
22、m Wizard命令创建的Form2窗体上,已经自动地放置了5个控件:TPanel、TDBNavigator、TDBGrid、TTable和TDataSource。,(3)执行MyCust程序 当程序被运行时,便自动生成一个可执行的.EXE程序。Delphi 7会显示Customer.DB表中的数据。其中Navigator控件中辉亮的按钮是可用的,可以使用Navigator控件的按钮在各记录之间移动。,第5章 读写字段值,5.1 字段编辑器和列编辑器,字段编辑器,列编辑器Columns Editor,Add fields命令:使用这个命令可为Table对象增加物理字段。每个增加的字段都代表窗体
23、类中的一个对象。所谓“增加物理字段”,是指有选择地使用数据库表中实际存在的字段,因为,根据需要不是总要使用数据库表中实际存在的全部字段。在实际操作中,虽然数据库表中实际存在很多字段,但有些是当前不需要的字段,就不去选择它们了。在字段编辑器Fields Editor中“增加物理字段”、不被选择的字段或者被删除的字段,都不会改变数据库表中实际存在的字段。New fields命令:使用这个命令可以创建新的数据库表中实际不存在的字段。这种字段分为三类:Data(数据字段)、Calculated(计算字段)和Lookup(查找字段)。所创建的每个新字段都代表窗体类中的一个对象。而且主要是创建计算字段(C
24、alculated)。但所创建的新字段也不会添加到实际的数据库表中。它仅用于显示的目的。不要忘记!要想创建和修改实际的数据库表,还得使用数据库桌面Database Desktop程序。,双击Grid1控件,双击ItemsTable控件,5.2 使用字段编辑器选择字段,(1)双击ItemsTable控件,Delphi 7显示数据库表字段编辑器。(2)操作过程如下图所示。,在Items.db表中选择字段,5.3 使用列编辑器选择字段,选择网格显示字段(1)双击Grid控件,显示列编辑器窗口。(2)操作过程如下图所示。,在Grid内双击,显示列编辑器,在列编辑器内单击鼠标右键,弹出菜单,选择“添加所
25、有字段”按钮或选择菜单中Add All Fields 则显示Items.db表的全部字段,Add All Fields命令,5.4 使用列编辑器选择显示字段 如下图所示,选中要删除的字段FieldName,单击“删除”按钮,字段FirstName即被删除。这里所谓删除是非永久性删除,即不是删除数据表中的字段,而是不在网格表中显示它。,现在采用上页图中的结果,即只选择含有两个字段CustNum和LastName的DBGrid1的网格表。我们看一看Delphi 7 为字段CustNum和LastName还做了些什么工作?事实上,一旦选择了这两个字段,Delphi 7 就在Form2窗体中自动地放置
26、两个不可见的附加组件CustomerTableCustNum和CustomerTableLastName,通常把这种附加组件称为字段对象。当然,可以像其他任何组件一样查看和设置它们的属性,而且这一点也是非常重要的特性。打开对象查看器(Object Inspector)上的对象选择器(Object Selector)的下拉列表框,就会看到CustomerTableCustNum和CustomerTableLastName这两个对象。如下图所示。,5.5 字段对象,5.6 用代码改变字段属性,1.设置Grid控件的边框,设置Grid控件的边框的目的是使之可以调整大小,以适应用户的要求。操作过程如图
27、5.5所示。,3.设置Checkbox1(Name设置为chkVisible)和 Checkbox2(Name设置为 chkCenter)复选框。为复选框chkVisible和chkCenter的OnClick事件添 加代码:,2.给Exit按钮的“单击”事件添加代码,在OnClick事件的cmdExitOnClick过程代码窗口中添加如下代码:Application.Terminate;,.读写字段值,(1)给cmdCustomerNumber按钮的OnClick事件添加代码,使得当该代码被执行时,作为lblValue标签的Caption属性值。选中cmdCustomerNumber按钮,并
28、打开对象查看器的Events标签页。双击Events标签页的OnClick事件右边的单元格,Delphi7弹出cmdCustomerNumberOnClick过程的代码对话窗口,添加代码,如下图所示。,()代码的含义:lblValue.Caption:=CustomerNum:+CustomerTableCustNum.AsString;现在来解释这个语句。这个语句的含义是:lblValue对象的Caption属性将接受“:=”之后的值CustomerNumber:+CustomerTableCustNum.AsString。但要知道,Caption的属性是字符型的,因此,要求所赋的值也必须是
29、字符型的。首先知道,Customer Number:是个字符串(用和括起来的内容即表示是个字符串)。但是CustomerTableCustNum是数字型,而不是字符型的,要想把其值赋给Caption,就必须转换类型。属性AsString的作用就是将“.”之前的CustomerTableCustNum转换为字符型。因此,CustomerTableCustNum.AsString的含义是,将表CustomerTable的CustNum字段值转换成字符型(串)。“+”表示将其前与后的两个字符串相继赋值给Caption属性,即将Customer Number:CustNum字段值赋值给Caption属
30、性。,选择1001为当前记录,再单击CustomerNumber按钮,此时MyCust程序更新lblValue标签的Caption属性为当前记录的CustNum字段值,即1001,如图(a)所示。改变选择的当前记录,例如,选择1003为当前记录,再单击CustomerNumber按钮,此时MyCust程序更新lblValue标签的Caption属性为当前记录的CustNum字段值,即1003,如图(b)所示。,(3)例子:读取字段CustNum之值,选择1001为当前记录,(a),单击此按钮,在此标签上显示1001,单击此按钮,(b),选择1003为当前记录,在此标签上显示1003,(4)程序
31、清单:见随书光盘中的文件CMyCust.txt。,第6章 计算字段,我们在3.2节中曾设计了一个PSDB数据库,它包含三个表:Customer.DB、Items.DB和Parts.DB。读者可以打开本书光盘中的文件Form2.txt,代码中显示了在Form2窗体上所做的工作。下面我们要学习的内容是:(1)用代码把Parts.db和tems.db表连接起来。(2)在Delphi 7中怎样定义计算字段。用Delphi7的计算字段功能来编写一个叫做购买商品的总价TotPrice.EXE程序。因为TotalPrice是可计算的,因此可以把TotalPrice视为程序中的一个字段,而且把它称做计算字段。
32、定义或增加新字段时,从数据库表字段编辑器开始:双击temsTable控件,弹出数据库表字段编辑器ItemTable。在其内单击鼠标右键,从弹出的快捷菜单上选择New Field选项,弹出定义计算字段对话窗口。然后,填入计算字段名(Name)、类型(Type)和Calculated选项,单击OK按钮。再在数据库表字段编辑器ItemTable内单击鼠标右键,从弹出的快捷菜单中选择Select All Field选项,为数据库表选择所有的字段。然后双击网格控件DBGrid1,显示网格表列编辑器Editing DBGrid1,在其中设置前面定义过的新计算字段名后,再在网格表列编辑器内单击鼠标右键,在弹
33、出快捷菜单上选择Select All Field选项,为网格表显示字段选择所有的字段。读者可以打开本书光盘中的文件TotPrice.txt,看到本章所编写的完整的程序代码。,第7章 链接表,在第6章的6.4.7节中曾提到,可以使用两种方法把数据库中两个表链接起来,一是编写代码的方法,二是用数据库窗体向导。关于使用代码链接表的方法前面已经讲过,本章学习使用数据库窗体向导的链接表功能,把Customer.db表与Items.db表链接起来的方法。此外,还要学习一个重要的数据库概念,即“一对多”关系的概念。现在用数据库窗体向导Database Form Wizard的链接表功能,实现Customer
34、.db表与Items.db表的链接。One2Many程序用于实现Customer.db表和Items.db表之间的“一对多”关系。CPartItem程序用于实现Parts.db表和Items.db表之间的“一对多”关系。实现步骤:1.启动Delphi 7。2.在Delphi 7菜单中选择FileNewApplication命令。3.启动数据库窗体向导DatabaseForm Wizard。选择Create a master/Detail form(创建主/从明细窗体)选项。建立从Customer.db表到Items.db表的一种“一对多”关系(或从Parts.db表到Items.db表的一种“
35、一对多”关系),这是一种主/从关系的窗体,因此,选择Create a master/Detail form(创建主/从明细窗体)选项。并且是以表为对象的窗体,因此,还要选择Create a form using TTable objects(创建的窗体使用表对象)。4.为Items.db表创建次级索引 制定Customer.db(或Parts.db表)和Items.db表之间的“一对多”关系。One2Many程序清单:见光盘中的文件One2Many.txt。PartItem程序清单:见光盘中的文件PartItem.txt。,第8章 查找和确认数据,查找数据是查找一个具体的记录。确认数据是检查用
36、户输入的数据的合法性,对不合法的数据拒绝接受。1基于表的确认技术 这是在用数据库桌面(Database Desktop)创建表时,设置的一种有效性检查技术。例如,设置字段允许的最小值和最大值。其好处在于不需要编写确认数据的代码。这又称为表一级(Table-Level)有效性检查。2基于编码的确认技术 为了用代码确认用户的数据,可以通过给OnValidate事件添加代码来实现。这样,当用户修改一个字段时,将自动生成该对象字段的OnValidate事件,从而将自动执行你给该事件添加的代码,该代码可以检查用户输入的数据,并根据检查结果决定接受或拒绝数据。3参照完整性 参照完整性概念与查找表的概念相似
37、。参照完整性是在两个表之间建立参照完整性联系,这种联系是建立在公共字段的基础上。参照完整性的作用在于可以防止向表中输入非法数据。从而保证了数据的安全性。源程序:见光盘中的文件CSearch.txt,第9章 制作数据输入窗体,在Delphi 7数据库应用中,通常不希望用户使用Grid控件向表中输入数据。更适宜的方法是制作一个专用的窗体,供用户输入数据。本章完成一个窗体,用来显示Clients.db表中的记录。用户可以在Clients.db表中添加记录、删除记录和在表中查找记录。可以让用户使用Navigator控件,也可以制作一个按钮来模仿Navigator控件的按钮。我们将使用DBText和DB
38、Edit控件来编辑和浏览Clients.db表中的字段。设计好的数据输入窗体如下图所示。,用来向数据库表Clients.db中输入数据和浏览表中的数据的程序,见光盘中的文件CClients.txt。,第10章 列表和查找表,本章学习了列表和查找表,以及如何在数据输入窗体中使用列表和查找表。用户为了避免用键盘输入可能产生的错误,可以使用列表和查找表,即用户通过从列表中选择来输入数据。为此,建立了MyList程序,用以说明如何在数据输入窗体中使用列表。也学习了如何使用DBLookupList控件作为显示字段内容的工具,该控件允许用户从列表项中选择数据或者直接输入数据,以及通过设置该控件的一些属性,
39、可以把该控件作为工具,用来从一个表中查找数据,然后再填入另一个表的某个字段(因此得名查找表)。为此建立了MyLookup程序。MyList程序清单:见光盘中的文件CMyList.txt MyLookup程序清单:见光盘中的文件CMyLookup.txt,参照完整性和查找表不同。在表Clients.db中的字段SalersPersonNum,包含了销售人员的编号,因此保证了编号为合法数值(必须包括在表SalesPer.db中)是十分重要的。另一种保证表Clients.db的字段SalersPersonNum拥有合法数据(必须包括在表SalesPer.db中)的方法是在表SalesPer.db和表
40、Clients.db之间建立参照完整性联系。此后,用户就不能向SalersPersonNum字段中输入一个表SalesPer.db中没有的数值。建立参照完整性联系,意味着即使使用数据库桌面也不能向SalersPersonNum字段输入数据。,第11章 查找和设定范围,本章学习了如何使用户只能浏览或编辑符合一定条件的记录。如何设置记录的范围。实现了使用静态SQL查询技术的程序OnlyJim。在程序设计期间,设置了静态SQL查询语句。同时,编写了一个SetQuery程序,以它为例说明如何实现动态查询。所谓动态查询是指在程序运行期间可以修改查询条件的查询。例如,可以设置查询条件,使Grid控件只显示
41、那些LastName字段为Smith的记录。而在程序运行期间,又希望显示那些LastName字段为Anderson的记录,那么就可以使用动态查询来达到这一目的。OnlyJim程序清单:见光盘中的文件CJim.txt。SetQuery程序清单:见光盘中的文件CSetQuery.txt。,第12章 多窗体和打印窗体,前面几章完成的工程都只是包含一个窗体。事实上,一个数据库工程通常由多个程序组成,而且所有的程序都使用同一个数据库。所以可以创建一个程序作为所有其他程序的前端界面。我们把这个程序称为主程序。这样,用户可以很方便地在各程序之间切换,也就是在各窗体之间切换。另外了解了窗口可以按模式或非模式显
42、示,以及如何实现Print按钮、Markhe、GoTo Bookmark按钮,后面两个按钮使当前记录指针指向先前标识的纪录。同时在本章中也完成了书签的制作,以便让用户利用它实现如下功能:为当前记录建立书签;为了进行计算需要把记录指针指向其他记录;当计算结束后,使用GotoBookmark方法使当前记录指针返回书签中保存的纪录指针。为此,创建了一个工程AllView和另外两个窗体(Clients和Parts),以其为例说明如何完成多窗体工程。工程AddView的程序:见光盘中文件CACP.txt中的 CAllApps.pas程序 实现Clients窗体的程序:见光盘中文件CACP.txt中的 C
43、Clients.pas程序 实现Parts窗体的程序:见光盘中文件CACP.txt中的 CParts.pas程序,第13章 制作报表,本章学习了利用表带式报表生成器QuickReport创建报表的方法。特别是根据数据库数据打印报表时,可以大大简化用户应用程序的打印工作。使用QuickReport组件创建应用程序,可以按以下步骤进行:1.在组件模板上选择Table和DataSource组件并放在窗体上。2.将属性DatabaseName设置为“数据库别名”、TableName设置为“表名”、Active设置为True、DataSet设置为Table1。3.在组件模板上选择控件QuickRep1并
44、放到Form1窗体中,创建一个空白表。4.在对象查看器中将Bands属性设置为True,创建表带类型。5.把属性HansDetail设置为True创建表带对象。6.选中QuickRep1。设置DataSet属性为Table1,把表和数据库组件连接起来。7.在表带中放置文本对象(标注为QRDBText的组件)。8.选中QRDBText1,设置DataSet属性为Table1,DataField设置为“数据库表的字段名”重复进行,直至设置完表的全部字段。9.现在可以保存应用程序。下面是为打印预览、打印按钮的BitBtn的OnClick事件编写的程序:,procedure TmainForm.Bit
45、Btn1Click(Sender:Tobject);begin QuickRep1.Priview;打印预览 End;procedure TmainForm.BitBtn2Click(Sender:Tobject);begin QuickRep1.Print;打印 End;End.,完整的程序清单:见光盘中的文件 CReport.txt,第14章 开发图表,为了说明从数据库表中向所创建的样本图表加载用户提供的数据,需要使用Delphi 7的Data Controls模板上的DBChart控件。并需要按下述步骤创建一个工程WinesChart。1.把控件Table、DataSource和DBCh
46、art,以及按钮Print Previw和Close放到窗体上。2.设置Table1的Database属性为“数据库名”,把TableName设置为“数据库表名”,Active设置为True 3.把DataSourced的DataSet属性设置为Table1,Name属性设置为DataSource1。4.选中DBChart对象,右击打开TeeChart菜单。选择显示TeeChart编辑器。5.单击Add按钮,选择一种图表系列。6.为了把图表和数据库连接起来,在TeeChart编辑器中选择Series标签页。如使用多个Series对象,就从下拉列表中选择每个对象,并重复下面步骤。7.切换到Ser
47、ies标签页,单击TeeChart编辑器中的Data Source标签页。打开第2行标签页下的下拉列表并选择DataSet选项。类似地,在DataSet编辑框里填入Table。通过这些步骤,即把图表和数据库表连接起来。,在窗体中完成的图表如下图所示。,程序清单:见光盘中的文件 Main.txt,第15章 将图或文件存入数据库,有时用户希望自己的数据库能对图和文件进行处理。但是数据库并不支持这些功能,需要数据库加上程序才可以实现。这样可以通过数据库存储信息和程序向用户展示这些信息。因为,像这样的图和文件一般都比较大,因此需要有一个能存放大文件的字段类型来支持,这就是BLOB字段。BLOB(Bin
48、ary Large Object)字段用来保存不定量的数据。本章学习了如何设计包含Memo(备注)和Graphics(图形)类型字段的表。同时,还学习了如何使用Delphi的DBMemo和DBImage控件,向Memo和Graphics字段添加记录。编写的MyAnim程序说明了如何不改变窗体的代码,就把它加入多窗体程序中,如何使用MoveBy()方法在记录之间移动,以及如何使用EOF判断表尾。,程序清单:见光盘中的文件MyAnim.txt。,第16章 编写多媒体数据库应用程序,本章编写了多媒体程序MM,完成了一个主窗体frmMM,一个向表MM.DB中添加记录的窗体frmFillMM和一个用来显
49、示表MM.DB中所有Device字段值为AviVideo的纪录的窗体。在程序的实现过程中,使用了各种Delphi数据库功能。执行了SQL语句,使用了DBRadioGroup控件,并且给DBNavigator控件的OnClick事件添加了代码,还用Query组件生成了字段对象。用MM程序可以实现播放指定的演示。,程序清单:见光盘中的文件CMFS.txt包括:CMM.pas程序清单(主窗体frmMM程序)CFillMM.pas程序清单(编辑表的窗体frmFillMM程序)CShow.pas程序清单(显示窗体frmShow程序),第17章 数据库开发实例:学生管理系统,本章的数据库开发实例,是以学生管理中的几个典型信息来说明如何建立和编制数据库应用程序。仅仅是个样本。我们把学生管理系统简称为XSGS系统。XSGS系统功能:XSGS系统将实现在校学生的学生信息登录和查询学生情况。主要功能如下:1.记录学生的信息:学号、姓名、性别、系别、专业。2.查询学生信息:按学号查询、按姓名查询、按性别查询、按系别 查询、按专业查询。,编写的代码:1.主菜单的代码(见光盘中的文件CXueSheng.txt)。2.查询事件的代码(见光盘中的文件CChaxun.txt)。3.执行查询事件的代码(见光盘中的文件CZhixingChaxun.txt)。,演示结束 再见,
链接地址:https://www.31ppt.com/p-6504491.html