Delphi中嵌入的数据库应用开发工具如Database Form Expert具有很强大的功能我们不需要编写任何程序代码便可以快速地创建一个简单的数据库应用程序甚至还能创建基于多个数据库表的主要──明细型数据库应用程序
本章主要介绍用Delphi开发简单的数据库应用程序的一般方法和步骤首先让读者对Delphi强劲的数据库应用开发工具有一个直观的印象然后在此基础上进行复杂的数据库应用程序的设计本章主要包括以下内容
● 创建数据库应用窗体
包括用Database Form Expert 或手工方式创建简单的无需编写程序代码的应用程序或者利用多个部件并编写功能复杂的程序代码创建主要──明细型数据库应用程序
● 在应用程序中控制字段有关的属性
描述怎样读写数据库表中字段的值和控制字段的显示格式等
本章所介绍的例子中用到的窗体数据库表以及相关的文件都是在安装Delphi时缺省安装在C:\DELPHI\DEMOS\DB\MASTAPP目录中并且用别名DBDEMOS表示这一子目录在本章例子中除特殊声明外所有的TTable和 TQuery 部件的 DatabaseName 属性都设置为DBDEMOS
简单的基于单表的据库应用
用Decphi创建显示一个数据库表中的内容的应用非常简单和方便只需要三个部件只要将这三个部件通过相关的属性相互联系起来不需要编写任何程序代码便可以实现例如用户想查看数据库表CustomerDB中的内容时可以按下面步骤来实现
选择相关的部件
选择菜单Project/New开始一个新工程并修改Form的Caption属性为CustomerFrom并把Name属性设置为CustomerForm然后从部件选择板上的Data Access 页上选取一个Datasounce部件和一个Table部件放到窗体的左上角它们是非可见的部件在窗体中我们看到的只是部件的图标从Data Control页上选取DBGrid部件放到窗体中前两个部件的下面完成这些工作之后窗体如图所示
图在CustomerFrom窗体中放置三个部件
设置部件的属性
为了使TDBGrid部件能够显示数据库表CustomerDB中的客户信息我们必须修改窗体三个部件相关的属性这些属性的设置如表所示
表 CustomerFrom窗体中三个部件的属性设置
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
属 性 属 性 值
──────────────────────────────
DataSourceAutoEdit False
DataSourceDataSet Table
TableDatabaseName DBDEMOS
TableTableName CUSTOMERDB
TableActive True
DBGridDataSource DataSource
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
这里要注意的是DBDEMOS是Delphi缺省安装时C:\Delphi\DEMO\DB\MASTAPP目录的别名而且数据库表CustomerDB存在该目录下用户在使用这一例子时请注意这两项设置都是正确的另外 DatasourceDatasetTableTableName和DBGridDatasource属性都有下拉式列表框允许用户从可能的值列表中选择它们的值这样能方便我们进行属性的设置而且不容易出错
DatasouuceAutoEdit属性设置为False是为了防止用户修改数据库表中的数据在下面的讨论中我们将详细地进行说明
TableActive设置为True时Delphi会打开TableTableName所指定的数据库表如果这个数据库表不存在(或表中什么也没有即空表) Delphi 会弹出出错信息并且TableActive变成False当TableActive被设置成True之后Table 部件的一些属性就不能再修改了如TableDatabaseName和TableTablename属性若要修改它们必须首先要将TableActive属性设置为False然后再进行修改否则Delphi会弹出错误信息Cannot perform this operation on an open database当看到这个错误信息时只需把TableActive置成False完成相关的修改后再把 Table Active 属性设置为True
当我们把DBGridDataSource的值设置成DataSource时Delphi会把CustomerDB中的数据填充到DBGrid部件中并且可以用DBGrid中的滚动条来浏览数据库表中的所有记录
运行程序
保存文件命名代码单元为Custpas命名工程名为CustPRJDPR然后按F编译并运行程序程序执行之后我们可以使用滚动条或键盘移动键在字段和记录间移动但不能修改表中的数据因为DatasoucAutoEdit属性已被设置为False
Cust程序中的三个部件都有各自的特殊用途三个部件的相关属性在内部相互联系生成最终的应用程序TTable部件连接磁盘上的实际数据库表和应用程序中其他部件的通道TTable部件具有打开和关闭读取更新以及其他处理磁盘数据库文件的方法
TDatasource部件是连接TTable部件和数据浏览部件如TDBGrid部件的桥梁 TDBGrid部件用于显示数据库表中的数据信息它为应用程序提供一个直观的界面图阐述了这三个部件之间的关系
Cust程序中三个部件之间的内部关系
TDBGrid 部件的奇妙之处在于它知道如何去获取数据库表中的下一条或前一条记录我们使用滚动条或箭头键便可以完成这项任务TDBGrid部件不知道如何增加删除和修改记录如果想让 Cust 程序能够修改数据库表中的记录只要把 Datasource 部件的AutoEdit属性设置成True 并重新编译和运行程序就可以达到目的 使用箭头键 把DBGrid的高亮度条定位到某一个字段上然后键入新值该字段中的值将被键入的新值所取代并且当移动到另一条记录时健入的信息会自动写入数据库表中如果想放弃所做的改动只需在离开该字段前按一下Escape键
如果想在表中增加新记录可以把高亮度条移到网格底端的空白记录上并输入新记录的有关字段值也可以在用户指定的某一条记录的后面插入一条新记录只要把高亮度条定位到指定的记录上按Ins键使可以在该记录的后面插入新记录
删除某一条记录时把高亮度条定位在想删除的记录的任何字段上按Ctrl+ del键这时会出现保护信息我们可以确认是否真的想删除该项记录
TDBGrid为用户提供了较完备的功能用于控制是否编辑增加或删除记录若想禁止对数据库表作任何修改设置TDBGrid部件的Readonly属性为 True 并设置 OptiondgEDiting为False(这将为我们提供一个只读的数据库表浏览器而不是数据库编辑器但它隐含着增加编辑和删除记录的能力)TDBGrid部件的这些属性和Option属性其它选项的各种不同组合可以让我们很方便地对数据库表进行有效的浏览编辑等操作
如果我们经常使用像电子表格那样的界面来显示和编辑数据记录TDBGrid 部件便是一个很方便的工具但那并不是最友好的用户界面如果想拥有更优美更直观的界面我们还可以使用单独的数据浏览部件来显示数据库表中各个字段的值并利用TDBNavigator部件控制对数据库表的存取
[] [] []