Delphi7数据库编程学习捷径_第1页
Delphi7数据库编程学习捷径_第2页
Delphi7数据库编程学习捷径_第3页
Delphi7数据库编程学习捷径_第4页
Delphi7数据库编程学习捷径_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目录第1章Delphi7集成开发环境(IDE)介绍第2章Delphi7数据库系统概述第3章Delphi7和数据库第4章创建数据库第5章读写字段值第6章计算字段第7章链接表第8章查找和确认数据第9章制作数据输入窗体第10章列表和查找表第11章查询和设定范围第12章多窗体和打印窗体第13章制作报表第14章开发图表第15章将图或文件存入数据库第16章编写多媒体数据库应用程序第17章数据库开发实例——学生管理系统第1章Delphi7集成开发环境(IDE)介绍1.Delphi7IDE运行界面通常,启动Delphi7的方法是:单击“开始”按钮,然后依次从级联菜单中选择“程序”\BorlandDelphi7\Delphi7选项,就进入了Delphi7IDE运行界面,如图1.1所示。其各组成部分的功能见教材1.3~1.7节。

图1.1Delphi7IDE运行界面的组成12453①主窗口②窗体窗口③代码编辑窗口④对象查看器⑤对象树形结构浏览窗口1232.Delphi7主窗口主窗口是Delphi7IDE的核心,开发人员通过主窗口进行创建工程、编写程序、调试程序、运行和维护应用程序等一系列管理工作。

Delphi7主窗口由3个部分组成(其功能见教材1.3节),如下图所示。②组件模板(ComponentPalette)①主菜单(Menu)③快捷工具条(SpeedBar)3.组件模板及组件设置

放置组件、设置属性和为“终止”事件编写代码的步骤:②单击窗体空闲部分,放置一个按钮。③设置按钮标题为“终止”。④在事件标签页上双击OnClick右边单元格。⑤在代码编辑窗口中编写终止程序的代码。①在组件模板上选择组件,例如Ok按钮。

①②③④⑤第2章Delphi7数据库系统概述1.Delphi7数据库特性

数据访问组件(DataAccessComponents):主要用于说明数据库的有关信息,如应用程序要访问(连接)的数据库和要访问数据库中的具体的数据库表,以及要访问表中的哪些字段等。常用的数据访问组件有TTable、TQuery、TDataSource等。数据控制组件(DataControlComponents):主要用于显示浏览数据库中的数据信息,为用户提供可视化的界面,可以让用户对数据库中的数据信息,进行浏览、编辑、插入、删除等操作。因而,数据控制组件也被称之为数据浏览组件。数据控制组件既能够把数据库中的数据显示到窗体中,又能将其自身的经过修改的数据写回到数据库中。常用的数据控制组件有TDBGrid、TDBEdit、TDBCheckBox等。BDEDataAccessComponents

数据访问组件TTableTDataSourceTQueryTDataSourceDataControlComponents

数据控制组件TDBGridTDBEditTDBCheckBoxTDBGridTDBEditTDBCheckBox(用户接口)数据库数据库引擎:BDE数据访问组件数据控制组件DBD窗口工具条DBD窗口菜单2.数据库桌面(DBD:DatabaseDesktop)

数据库桌面DBD是数据库维护和数据定义的工具,利用它可以完成查询、连接、建立、重建结构(简称重构)、索引、修改和复制数据库表,而且在操作时,用户不必拥有Paradox或dBASE数据库管理系统。使用数据库桌面DBD还可以把一种格式的数据和数据字典拷贝为另一种格式,例如,将一个dBASE的表拷贝到远程的SQL服务器上的一个数据库中去。另外,数据库桌面DBD程序可以建立数据库并执行与数据库有关的其他操作。例如,设置工作目录、设置工作目录别名、创建数据库表、在数据库表中输入数据、对表中记录排序、移动记录、用不同字体或其他形式显示表中的数据,以及用表来检查和测试Delphi7程序等。3.部分数据访问组件的主要用途

部分数据访问组件的主要用途组件名称主要用途TDataSource是数据集组件与数据控制组件之间传送数据的通道TTable是存取数据库表的媒介,通过BDE存取数据库表中的数据,再与TDataSource进行对话,使得数据控制组件能在TTable中访问数据,以及显示、编辑数据TQuery利用SQL语言访问数据库表中的数据,并与TDataSource进行对话以实现数据控制组件访问数据库TStoredProc在应用程序中用于访问远程服务器中的存储过程(它封装了数据库服务器上的存储过程)TQuickRep在应用程序中用于创建数据库的输出报表TSession这是一个全局的组件,用户可以在程序中使用它的属性和方法TDatabase它可以连接到单一数据库上,例如,当需要与数据库持续连接、使用了定制的数据库服务、使用事物处理组件或程序中确定了BDE别名时,就可以使用TDatabase组件。但最主要的用途是在SQL数据库的应用中4.部分数据控

制组件的主要用途

部分数据控制组件的主要用途组件名称主要用途TDBText是一个只读的数据显示组件,它显示的是表中的当前记录值,因此它的显示是动态变化的TDBEdit专门用来显示和编辑数据库表中的单个字段。通过它的DataSource属性和DataField属性来指定对应的表和字段TDBGrid以网格方式显示数据库中的数据并可以进行编辑。利用字段编辑器(FieldEditor)可以对数据库中字段的显示格式、顺序或者是否显示进行控制TDBCheckBox浏览数据库中数据的复选框,用于显示和编辑数据库中布尔型字段的字段值TDBNavigator称为导航控件,可用来前后移动记录指针,对单个记录进行编辑(包括插入、删除、刷新显示和取消等操作)TDBImage用于显示、复制、粘贴数据库表中的图像类型的字段第3章

Delphi7和数据库3.1创建一个Delphi7工程(Project)的步骤3.2定制窗体(1)启动Delphi7,从File菜单中选择File\New\Applicatin

命令,创建一个新工程。(2)保存新的工程。从File菜单中选择File\SaveAs命令,

保存单元文件CHello.pas和工程文件Hello.dpr。(3)执行程序便生成一个可执行的EXE文件Hello.EXE。①第3章第1节完成的定制窗体CdmHello清除欢迎终止②执行程序后单击“欢迎”按钮的程序窗口

欢迎清除终止3.3编写代码为“终止”按钮编写代码的目的是,当用户单击“终止”按钮时,可以终止CHello.EXE程序的运行。那么,应该为cmdExitClick过程输入下列代码:Application.Terminate;。这样,当用户单击“终止”按钮时,程序执行“Application.Terminate;”语句,即终止CHello.EXE程序。3.4Methods(方法)现在,我们来介绍有关Methods(方法)的主题。在Pascal语言中,在对象中说明的过程或函数称为方法。它的语法是:

例如,Application.Terminate;,这个程序语句说明Terminate(终止)方法被调用,或者说,Application对象调用了Terminate方法。当程序执行这个语句时,就实现这个Terminate方法,即终止程序运行。又例如程序语句Memo1.CutToClipboard;,表明调用一个名为Memo1的Memo组件的CutToClipboard(剪贴)方法。其中,Memo1是一个对象的名称,当程序执行这个语句时,就实现这个CutToClipboard方法,即把Memo1中的文本剪贴到剪贴板上去。举例:作为一个例子,打开一个空窗体,加入一个Memo组件和一个按钮,设置按钮的Name属性为Cut,再将按钮的Caption属性设置为&Cut。以及双击按钮的OnClick事件右边单元格,弹出代码编辑窗口,输入语句Memo1.CutToClipboard;。这样就为Cut按钮建立了CutClick事件处理过程:

方法CutToClipboard实现剪贴:

ProcedureTform1.CutClick(Sender:TObject);BeginMemo1.CutToClipboard;End;

方法CopyToClipboard实现拷贝:

ProcedureTform1.CopyClick(Sender:TObject);BeginMemo1.CopyToClipboard;End;再看一个例子3.5数据库设计

Delphi开发数据库应用程序的一般步骤

1.系统设计步骤1:工作活动性质鉴别对设计者来说,当他承担了某个部门建立数据库的任务时,首先应当鉴别该部门的需要和用户的需求。并做出下列决策:(1)

决定该部门数据处理的一般策略。(2)

估算现有数据处理能力及其性能。(3)

进行可行性研究,规划各种方案。(4)

选择某种方案。(5)

搜集有关信息类型、确定有什么样的信息流入和流出,以及信息流入流出的频度等。步骤2:定义此步骤是建立该部门的模型。主要工作是:(1)

在书面上记载可能出现的数据类型。(2)

建立原始概念:实体集合、实体属性、属性值、实体联系集合(简称关联集合)。步骤3:用数据表示实体集合和关联集合(1)

确定每一个实体类型,并为其分配一个惟一的名字。(2)

确定每一个定义域,并为其分配一个惟一的名字。(3)

为每个实体类型确定主键。(4)

用主键定义域代替每一个实体。求出与实体属性对应的各个关系,并给每个关系确定一个名字。(5)

求出全部的关联类型,并为其确定一个名字。(6)

用相应的主键来代替关联类型。步骤4:建立E-R模型以下的步骤是对关系型数据库来说的。步骤5:将实体和关联转化为关系步骤6:分解关系。对每个关系确定其不可分解单元,可以得到一个基本关系集合。步骤7:根据传递定律确定所得到的基本关系集合的传递闭包。步骤8:由得到的传递闭包推导最小覆盖,得到若干个最小覆盖,选择其一作为数据库总体逻辑模型。2.系统实现在系统实现阶段,使用Delphi可以建立和测试系统设计阶段所构想的应用程序。在此阶段,最好使用数据库的一个备份,以防止应用程序可能破坏Delphi数据库后无法恢复。如果应用程序最终要配置到使用远程终端的数据源的话,可以有两种选择:

l.在本地服务器上,使用备份的数据库的数据进行开发和调试。

2.在远程服务器上,使用备份的数据库的数据进行开发和调试。其中,对前者来说,它独立于服务器,因此不会影响服务器的其他特性。而后者就有一定的危险性,因为,程序的可能错误而导致服务器的瘫痪。值得说明的是,系统设计独立于特定计算机系统;而系统实现必须考虑实际的计算机系统,以及该系统所支持的数据库管理系统(DBMS)。系统实现阶段的主要工作:(1)实现物理设计。通过使用物理设计技术以选择最适合于数据模型结构的物理结构,这些技术随采用的物理设备及存取方法而异。量化数据是物理设计中的一个重要因素。所选数据库逻辑结构和物理结构的定义由数据库定义语言完成。(2)选择存取数据库的方法。在选择物理结构时,存取方法是特别重要的,存取方法决定了设计完成后数据库的性能,而用户界面软件决定了数据库是否便于用户使用。一般系统中对数据库的存取是由数据库联机查询语言或嵌入在程序设计语言中的输入/输出命令完成的。(3)确定存储需求说明:存储需求定义用户关于数据的使用方法。其中的存取路径,用以说明存储需求所涉及的实体集、关联集、逻辑记录,同时还要说明这些结构的使用顺序,以及对每个结构所完成的操作,这些操作可以是检索、存储和插入。(4)确定量化数据说明:一般方法是用数据字典作为数据项和记录型的描述文本。数据字典中可以包括:组织模型中各组成部分的数据项名、类型、取值范围、长度和数据量、各实体间联系的频度、存取需求执行频度等。(5)选择开发软件的技术手段(例如,使用Delphi7)进行软件开发。

3.系统运行和维护系统运行是为了考核系统及其设备、软件系统和数据库应用程序等是否能达到预期的目标。而对应用程序来说,更多的是调试。所谓维护是指在运行中排除应用程序的错误及不合理的内容,以及在系统运行中还要根据用户提出的一些新的要求和建议,对应用程序做一定的修改,使其进一步得到完善和提高。在每个实施步骤中都有数据库的开发和应用程序界面的开发任务。数据库和应用程序开发任务的执行,则会根据开发项目的大小和范围而定,可能会由不同的人来完成和执行。3.6例子:设计一个商品销售数据库(简称PSDB)

顾客(Customer)到商店购买商品(Parts),交款后,商店要给顾客开出发票。发票上标出的内容有:顾客姓名、单位、地址、商品名、单价、总价以及购买日期等。以往这项工作是手工在发票单上填写,现在要用计算机来完成,那么该如何做呢?对商店或者计算机来说,要求有一份顾客名单,我们称之为Customer表。还要有一份商品清单,我们称之为Parts表。将这两张表联系在一起,就构成了PSDB数据库。现在给数据库下个定义:按照一定结构组织的相关的数据集合称做数据库。在数据库术语中,把顾客、商品称做实体,实体之间的联系称做关联。由此可见,实体及其关联才构成数据库。在关系模型中,“关联”是不可缺少的,因此,关联也就转化为实体,也可以称之为关联实体。因此,在以后的讨论中,凡是说到实体均包括关联实体。现在,在我们的PSDB数据库中,把实体Customer和Parts联系起来的是关联实体,为其命名为Items(项目)。这样,PSDB数据库是由实体Customer、Parts和Items构成。以下就来介绍数据库逻辑设计的基本内容和方法。

ItemsCustomer

Parts

PSDB数据库的E-R图关联实体实体实体CustNumLastNameFirstNameCustomer

标明Customer的属性实体属性

在数据库通用设计方法中,通常采用一种“实体-联系”方法,简称E-R方法。这样,就可以将PSDB数据库用E-R图表示。3.7

E-R方法

在完成实体设计后,例如完成E-R图设计后,就要为每个实体标明属性。首先,数据库中的每个实体都要有个标识符,而且是惟一的,称其为主标识符(也称为主关键字或主属性)。1.标明Customer属性

例如,在PSDB数据库中的Customer实体应有一个主关键字,显然,顾客的姓名不成,因为有重名重姓,所以只好给顾客Customer再加一个顾客编号CustNum。同样理由,要给商品Parts加一个编号PartNum,以及给关联实体Items加一个编号ItemNum。注意,为了简化数据库设计的说明,对于现在讨论的课题,我们只列出主要的属性,而不追求对它的客观需求。设Customer属性有CustNum(顾客编号)、LastName(顾客的姓)和FirstName(顾客名字)。

设Parts属性有PartNum(商品编号)、Description(有关商品的说明)、QtyInStock(商品的库存量)和SellingPrice(销售价)。标明Parts属性实体属性PartNumDescriptionQtyInStock

Parts

标明Parts的属性SellingPrice

设Items属性有ItemNum(Items记录编号)、CustNum

(顾客编号)PartNum(商品编号)和QtySlod(商品销售量)。标明Items属性

现在来说明为什么给Items标明这些属性。首先,为什么要建立ItemNum属性呢?因为Items需要有一个惟一的主标识符(也称为主属性),也就是需要有一个惟一的主关键字。另外,Items是把Customer表和Parts表联系起来的关联实体,那么最简明的联系,就是在Items中放置Customer的主关键字CustNum和Parts的主关键字PartNum。事实上,根据Customer的主关键字CustNum就可以通过Items中的Parts的主关键字PartNum查到Parts表中的一切信息,例如,某商品的销售价是由Parts表中属性SellingPrice标识的。又例如有关每种商品的说明是由属性Descrption标识的。同时,依据PartNum还可以在Items表中直接查到购买了多少该种商品,即销售量是由Items表中的属性QtySold标识的。ItemNumCustNumPartNum

Items图3.2.3标明Items的属性(关联)实体属性QtySlod

在关系型数据库中,把实体视为一种关系。关系的一般表示方法如下:

关系名(属性1,属性2,……,属性n)

在一个关系表达式中,也需要确定一个惟一的标识符(也称之为主属性,或主键,或主关键字),用以标识这个关系。如果在关系表达式中,我们假设指定“属性k”为主属性(关键字),那么在关系表达式中就把属性k放在最前面并用下划线“_”表示它是主属性(主键字)。于是,关系表达式’就变成:关系名(属性k,属性1,属性2,……,属性n)这样,根据给Customer、Parts和Items标明的属性,就可以把它们用关系表达式表示如下:

这三个关系就是PSDB的关系数据库模型。

Customer(CustNum

,LastName,FiestName)

Parts(PartNum

,Description,QtyInStock,SellingPrice)

Items(ItemNum

,CustNum,PartNum,QtySlod)3.8关系型数据库1.关系模型2.二维表

在关系模型中,一个关系可以用一个二维表来表示。二维表的行称为记录,列称为字段(记录项)。把这样的表统称为数据库表。一个数据库表的一般化表示。⑴关系Customer(CustNum

,LastName,FirstName)的二维表表示。其表结构:⑵关系Parts(PartNum

,Description,tyInStock,SellingPrice)的二维表表示。其表结构:

PartNumDescription

tyInStockSellingPrice

ItemNumCustNumPartNumQtySlod

⑶关系Items(ItemNum

,CustNum,PartNum,QtySlod)二维表表示。其表结构:

CustNumLastNameFiestName

字段名称

记录

字段

用二维表表示关系3.数据库表结构设计

所谓表结构设计就是对表中的每个字段(Field)、字段类型(Type)、字段大小(Size)以及该字段是否为主关键字段(Key)等进行规定,以便将来能够对表进行数据操作(包括对数据的存取、增删、查询、修改等)。

⑴设计Customer表结构⑵设计Parts表结构Field(字段)Type(类型)Size(大小)Key(主关键字)ItemNumAutoincriment(+)n/aYesCustNumNumericn/aYesPartNumNumericn/aYesQtySlodNumericn/aNo⑶设计Items表结构Field(字段)Type(类型)Size(大小)Key(主关键字)CustNumNumeric(N)n/aYes(是)LastNameAlpha(A)30No(不是)FiestNameAlpha(A)25No(不是)Field(字段)Type(类型)Size(大小)Key(主关键字)PartNumNumericn/aYesDescriptionAlpha40NotyInStockNumericn/aNoSellingPriceNumericn/aNo4.设计数据库表的数据

现在给出PSDB数据库中三个表的实际使用的数据。设计好的这些数据,我们以后还要用到。(1)Customer表的数据注:ItemNum的类型(Type)设置为Autoincriment。这就意味,ItemNum的值会由程序自动地填入。因此,在制作Items表的数据时,不要在该字段中填入任何东西。

CustNumLastNameFiestName1001KennedyTom1002AndersonJean1003GeorgeTim1004SamJean(2)Parts表的数据PartNumDescription

QtyInStockSellingPrice1001PartNum1011,000301002PartNum102542001003PartNum103211231004PartNum104200751005PartNum1051110(3)Items表的数据ItemNum[注]CustNumPartNumQtySlod10011013

10031022

10011051

10011026第4章创建数据库1.构造表的结构

创建过程如下:(1)启动数据库桌面DBD。(2)设置工作目录。选择File\WorkingDirectory命令。(3)设置工作目录的别名。选择Tools\AliasManager命令。选择Table\Restructure命令,构造表Customer.db的结构。

2.向Customer表中输入数据①选择File\Open\Table命令。打开Customer.db表。②选择Table\EditData命令,将表置于编辑模式。③向一个字段输入数据。即单击该字段,然后即可输入数据。使用Navigator控件对表中记录排序、移动。3.继续向Parts.db和Items.db表输入数据,完成之后,建立PSDB完成。4.创建Delphi数据库程序

(1)建立一个新的工程

l

运行Delphi7;

l

从主菜单中选择File\New\Application命令,则Delphi7自动创建一个新工程。

l

从主菜单中选择File\SaveAs命令,保存单元文件CMyCust.Pas,保存工程文件

MyCust.Dpr。

(2)用数据库窗体向导创建窗体

在数据库窗体向导Database\FormWizard命令创建的Form2窗体上,已经自动地放置了5个控件:TPanel、TDBNavigator、TDBGrid、TTable和TDataSource。Navigator控件

TTable控件

DBGrid控件

Tpanel控件

TDataSource控件

(3)执行MyCust程序当程序被运行时,便自动生成一个可执行的.EXE程序。Delphi7会显示Customer.DB表中的数据。其中Navigator控件中辉亮的按钮是可用的,可以使用Navigator控件的按钮在各记录之间移动。第5章

读写字段值

5.1字段编辑器和列编辑器

字段编辑器

列编辑器ColumnsEditorAddfields命令:使用这个命令可为Table对象增加物理字段。每个增加的字段都代表窗体类中的一个对象。所谓“增加物理字段”,是指有选择地使用数据库表中实际存在的字段,因为,根据需要不是总要使用数据库表中实际存在的全部字段。在实际操作中,虽然数据库表中实际存在很多字段,但有些是当前不需要的字段,就不去选择它们了。

在字段编辑器FieldsEditor中“增加物理字段”、不被选择的字段或者被删除的字段,都不会改变数据库表中实际存在的字段。

Newfields命令:使用这个命令可以创建新的数据库表中实际不存在的字段。这种字段分为三类:Data(数据字段)、Calculated(计算字段)和Lookup(查找字段)。所创建的每个新字段都代表窗体类中的一个对象。而且主要是创建计算字段(Calculated)。但所创建的新字段也不会添加到实际的数据库表中。它仅用于显示的目的。

不要忘记!要想创建和修改实际的数据库表,还得使用数据库桌面DatabaseDesktop程序。双击Grid1控件双击ItemsTable控件5.2使用字段编辑器选择字段①双击ItemsTable控件,弹出数据库表字段编辑器②在编辑器内单击鼠标右键,弹出快捷菜单③在快捷菜单中选择Addallfield,然后选择Selectall,则Itemss.db表的所有字段被选择。(1)双击ItemsTable控件,Delphi7显示数据库表字段编辑器。(2)操作过程如下图所示。在Items.db表中选择字段5.3使用列编辑器选择字段

选择网格显示字段(1)双击Grid控件,显示列编辑器窗口。(2)操作过程如下图所示。①在Grid内双击,显示列编辑器②在列编辑器内单击鼠标右键,弹出菜单③选择“添加所有字段”按钮或选择菜单中AddAllFields则显示Items.db表的全部字段

AddAllFields命令5.4使用列编辑器选择显示字段

如下图所示,选中要删除的字段FieldName,单击“删除”按钮,字段FirstName即被删除。这里所谓删除是非永久性删除,即不是删除数据表中的字段,而是不在网格表中显示它。恢复字段添加字段删除字段添加所有字段列编辑器快捷菜单按钮的功能

现在采用上页图中的结果,即只选择含有两个字段CustNum和LastName的DBGrid1的网格表。我们看一看Delphi7为字段CustNum和LastName还做了些什么工作?

事实上,一旦选择了这两个字段,Delphi7就在Form2窗体中自动地放置两个不可见的附加组件CustomerTableCustNum和CustomerTableLastName,通常把这种附加组件称为字段对象。当然,可以像其他任何组件一样查看和设置它们的属性,而且这一点也是非常重要的特性。

打开对象查看器(ObjectInspector)上的对象选择器(ObjectSelector)的下拉列表框,就会看到CustomerTableCustNum和CustomerTableLastName这两个对象。如下图所示。5.5字段对象③在对象查看的Properties标签页中设置Align属性为

alNone,并使Grid框变小。5.6用代码改变字段属性

①启动Delphi7

执行MyCust程序②选中Grid控件,

打开对象查看器的Properties标签页。1.设置Grid控件的边框

设置Grid控件的边框的目的是使之可以调整大小,以适应用户的要求。操作过程如图5.5所示。3.设置Checkbox1(Name设置为chkVisible

)和Checkbox2(Name设置为

chkCenter)复选框。为复选框chkVisible和chkCenter的OnClick事件添加代码:2.给Exit按钮的“单击”事件添加代码

在OnClick事件的cmdExitOnClick过程代码窗口中添加如下代码:

Application.Terminate;

填写的代码beginif(条件)Then语句1else语句2;end;如果满足条件执行语句1如果不满足条件执行语句2程序语句结构

说明4.读写字段值(1)

给cmdCustomerNumber按钮的OnClick事件添加代码,使得当该代码被执行时,作为

lblValue标签的Caption属性值。

①选中cmdCustomerNumber按钮,并打开对象查看器的Events标签页。

②双击Events标签页的OnClick事件右边的单元格,Delphi7弹出cmdCustomerNumberOnClick过程的代码对话窗口,添加代码,如下图所示。(2)

代码的含义:

lblValue.Caption:=‘CustomerNum:’+

CustomerTableCustNum.AsString;现在来解释这个语句。这个语句的含义是:lblValue对象的Caption属性将接受“:=”之后的值‘CustomerNumber:’+CustomerTableCustNum.AsString。但要知道,Caption的属性是字符型的,因此,要求所赋的值也必须是字符型的。首先知道,‘CustomerNumber:’是个字符串(用‘和’括起来的内容即表示是个字符串)。但是CustomerTableCustNum是数字型,而不是字符型的,要想把其值赋给Caption,就必须转换类型。属性AsString的作用就是将“.”之前的CustomerTableCustNum转换为字符型。因此,CustomerTableCustNum.AsString的含义是,将表CustomerTable的CustNum字段值转换成字符型(串)。“+”表示将其前与后的两个字符串相继赋值给Caption属性,即将CustomerNumber:CustNum字段值赋值给Caption属性。

选择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)程序清单:见随书光盘中的文件CMyCust.txt。第6章计算字段

我们在3.2节中曾设计了一个PSDB数据库,它包含三个表:Customer.DB、Items.DB和Parts.DB。读者可以打开本书光盘中的文件Form2.txt,代码中显示了在Form2窗体上所做的工作。下面我们要学习的内容是:(1)用代码把Parts.db和tems.db表连接起来。(2)在Delphi7中怎样定义计算字段。用Delphi7的计算字段功能来编写一个叫做购买商品的总价TotPrice.EXE程序。因为TotalPrice是可计算的,因此可以把TotalPrice视为程序中的一个字段,而且把它称做计算字段。定义或增加新字段时,从数据库表字段编辑器开始:双击temsTable控件,弹出数据库表字段编辑器ItemTable。在其内单击鼠标右键,从弹出的快捷菜单上选择NewField选项,弹出定义计算字段对话窗口。然后,填入计算字段名(Name)、类型(Type)和Calculated选项,单击OK按钮。再在数据库表字段编辑器ItemTable内单击鼠标右键,从弹出的快捷菜单中选择SelectAllField选项,为数据库表选择所有的字段。然后双击网格控件DBGrid1,显示网格表列编辑器EditingDBGrid1,在其中设置前面定义过的新计算字段名后,再在网格表列编辑器内单击鼠标右键,在弹出快捷菜单上选择SelectAllField选项,为网格表显示字段选择所有的字段。

读者可以打开本书光盘中的文件TotPrice.txt,看到本章所编写的完整的程序代码。第7章链接表

在第6章的6.4.7节中曾提到,可以使用两种方法把数据库中两个表链接起来,一是编写代码的方法,二是用数据库窗体向导。关于使用代码链接表的方法前面已经讲过,本章学习使用数据库窗体向导的链接表功能,把Customer.db表与Items.db表链接起来的方法。此外,还要学习一个重要的数据库概念,即“一对多”关系的概念。现在用数据库窗体向导DatabaseFormWizard的链接表功能,实现Customer.db表与Items.db表的链接。

One2Many程序用于实现Customer.db表和Items.db表之间的“一对多”关系。

CPartItem程序用于实现Parts.db表和Items.db表之间的“一对多”关系。实现步骤:

1.启动Delphi7。

2.在Delphi7菜单中选择File\New\Application命令。

3.启动数据库窗体向导Database\FormWizard。选择Createamaster/Detailform(创建主/从[明细]窗体)选项。建立从Customer.db表到Items.db表的一种“一对多”关系(或从Parts.db表到Items.db表的一种“一对多”关系),这是一种主/从关系的窗体,因此,选择Createamaster/Detailform(创建主/从[明细]窗体)选项。并且是以表为对象的窗体,因此,还要选择CreateaformusingTTableobjects(创建的窗体使用表对象)。

4.为Items.db表创建次级索引制定Customer.db(或Parts.db表)和Items.db表之间的“一对多”关系。

One2Many程序清单:见光盘中的文件One2Many.txt。

PartItem程序清单:见光盘中的文件PartItem.txt。第8章查找和确认数据

查找数据是查找一个具体的记录。确认数据是检查用户输入的数据的合法性,对不合法的数据拒绝接受。1.基于表的确认技术这是在用数据库桌面(DatabaseDesktop)创建表时,设置的一种有效性检查技术。例如,设置字段允许的最小值和最大值。其好处在于不需要编写确认数据的代码。这又称为表一级(Table-Level)有效性检查。2.基于编码的确认技术为了用代码确认用户的数据,可以通过给OnValidate事件添加代码来实现。这样,当用户修改一个字段时,将自动生成该对象字段的OnValidate事件,从而将自动执行你给该事件添加的代码,该代码可以检查用户输入的数据,并根据检查结果决定接受或拒绝数据。3.参照完整性参照完整性概念与查找表的概念相似。参照完整性是在两个表之间建立参照完整性联系,这种联系是建立在公共字段的基础上。参照完整性的作用在于可以防止向表中输入非法数据。从而保证了数据的安全性。源程序:见光盘中的文件CSearch.txt第9章制作数据输入窗体

在Delphi7数据库应用中,通常不希望用户使用Grid控件向表中输入数据。更适宜的方法是制作一个专用的窗体,供用户输入数据。本章完成一个窗体,用来显示Clients.db表中的记录。用户可以在Clients.db表中添加记录、删除记录和在表中查找记录。可以让用户使用Navigator控件,也可以制作一个按钮来模仿Navigator控件的按钮。我们将使用DBText和DBEdit控件来编辑和浏览Clients.db表中的字段。设计好的数据输入窗体如下图所示。用来向数据库表Clients.db中输入数据和浏览表中的数据的程序,见光盘中的文件CClients.txt。

第10章列表和查找表

本章学习了列表和查找表,以及如何在数据输入窗体中使用列表和查找表。用户为了避免用键盘输入可能产生的错误,可以使用列表和查找表,即用户通过从列表中选择来输入数据。为此,建立了MyList程序,用以说明如何在数据输入窗体中使用列表。也学习了如何使用DBLookupList控件作为显示字段内容的工具,该控件允许用户从列表项中选择数据或者直接输入数据,以及通过设置该控件的一些属性,可以把该控件作为工具,用来从一个表中查找数据,然后再填入另一个表的某个字段(因此得名查找表)。为此建立了MyLookup程序。

MyList程序清单:见光盘中的文件CMyList.txtMyLookup程序清单:见光盘中的文件CMyLookup.txt参照完整性和查找表不同。在表Clients.db中的字段SalersPersonNum,包含了销售人员的编号,因此保证了编号为合法数值(必须包括在表SalesPer.db中)是十分重要的。另一种保证表Clients.db的字段SalersPersonNum拥有合法数据(必须包括在表SalesPer.db中)的方法是在表SalesPer.db和表Clients.db之间建立参照完整性联系。此后,用户就不能向SalersPersonNum字段中输入一个表SalesPer.db中没有的数值。建立参照完整性联系,意味着即使使用数据库桌面也不能向SalersPersonNum字段输入数据。

第11章查找和设定范围

本章学习了如何使用户只能浏览或编辑符合一定条件的记录。如何设置记录的范围。实现了使用静态SQL查询技术的程序OnlyJim。在程序设计期间,设置了静态SQL查询语句。同时,编写了一个SetQuery程序,以它为例说明如何实现动态查询。所谓动态查询是指在程序运行期间可以修改查询条件的查询。例如,可以设置查询条件,使Grid控件只显示那些LastName字段为Smith的记录。而在程序运行期间,又希望显示那些LastName字段为Anderson的记录,那么就可以使用动态查询来达到这一目的。

OnlyJim程序清单:见光盘中的文件CJim.txt。

SetQuery程序清单:见光盘中的文件CSetQuery.txt。第12章

多窗体和打印窗体

前面几章完成的工程都只是包含一个窗体。事实上,一个数据库工程通常由多个程序组成,而且所有的程序都使用同一个数据库。所以可以创建一个程序作为所有其他程序的前端界面。我们把这个程序称为主程序。这样,用户可以很方便地在各程序之间切换,也就是在各窗体之间切换。另外了解了窗口可以按模式或非模式显示,以及如何实现Print按钮、Markhe、GoToBookmark按钮,后面两个按钮使当前记录指针指向先前标识的纪录。同时在本章中也完成了书签的制作,以便让用户利用它实现如下功能:为当前记录建立书签;为了进行计算需要把记录指针指向其他记录;当计算结束后,使用GotoBookmark方法使当前记录指针返回书签中保存的纪录指针。为此,创建了一个工程AllView和另外两个窗体(Clients和Parts),以其为例说明如何完成多窗体工程。工程AddView的程序:见光盘中文件CACP.txt中的

CAllApps.pas程序实现Clients窗体的程序:见光盘中文件CACP.txt中的

CClients.pas程序实现Parts窗体的程序:见光盘中文件CACP.txt中的

CParts.pas程序第13章制作报表

本章学习了利用表带式报表生成器QuickReport创建报表的方法。特别是根据数据库数据打印报表时,可以大大简化用户应用程序的打印工作。使用QuickReport组件创建应用程序,可以按以下步骤进行:

1.在组件模板上选择Table和DataSource组件并放在窗体上。

2.将属性DatabaseName设置为“数据库别名”、TableName设置为“表名”、Active设置为True、DataSet设置为Table1。

3.在组件模板上选择控件QuickRep1并放到Form1窗体中,创建一个空白表。

4.在对象查看器中将Bands属性设置为True,创建表带类型。

5.把属性HansDetail设置为True创建表带对象。

6.选中QuickRep1。设置DataSet属性为Table1,把表和数据库组件连接起来。

7.在表带中放置文本对象(标注为QRDBText的组件)。

8.选中QRDBText1,设置DataSet属性为Table1,DataField设置为“数据库表的字段名”重复进行,直至设置完表的全部字段。

9.现在可以保存应用程序。

下面是为打印预览、打印按钮的BitBtn的OnClick事件编写的程序:

procedureTmainForm.BitBtn1Click(Sender:Tobject);begin

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论