![DELPHI基础教程:简单数据库应用的创建及MASTAPP介绍(三)[4],第1张 DELPHI基础教程:简单数据库应用的创建及MASTAPP介绍(三)[4],第1张](/aiimages/DELPHI%E5%9F%BA%E7%A1%80%E6%95%99%E7%A8%8B%EF%BC%9A%E7%AE%80%E5%8D%95%E6%95%B0%E6%8D%AE%E5%BA%93%E5%BA%94%E7%94%A8%E7%9A%84%E5%88%9B%E5%BB%BA%E5%8F%8AMASTAPP%E4%BB%8B%E7%BB%8D%EF%BC%88%E4%B8%89%EF%BC%89%5B4%5D.png)
基于数据库表的有效性验证
在用户创建数据库表时就建立有效性验证机制 如在使用DBD创建一个表时 我们可以为创建的数据库表说明一些验证手段 包括字段的最大值 最小值 图形字段的显示格式等等 在设定这些有效性验证机制时 不需要编写任何程序代码 基于数据库表的有效性验证是当数据写到数据库之前 由数据库本身来执行 Delphi也执行一些有效性验证 如在数据写到数据库之前Delphi会验证每一个字段是否被填入相应的值 有关这种途径来验证数据的有效性的详细情况请参考DBD的使用
基于字段的有效性验证
一般有两种方法来进行这种方式的有效性验证
①为记录中需要设置有效性验证的字段编写Onvalidate事件处理过程 这样每当该字段的值被修改时 该字段的OnValidate事件处理过程就会被调用 进而对被修改的字段值进行验证
②对于记录中要求非空的字段(如口令或关键字等) 我们必须首先设置这些字段的Required属性为True 然后为这些字段编写OnValidate事件处理过程 这样在修改现存记录或插入新记录时 在写入数据库之前 如果要求非空的字段中没有填入适当的字段值 那么会出现错误信息提示用户必须输入字段值
基于记录的有效性验证
这种验证方式一般在TTable部件的BeforePost事件处理过程中进行处理 即在记录写回到数据库之前对记录的每个字段值进行有效性验证
例 在程序中对字段值的有效性进行验证
创建一个用TEdit部件浏览ORDERS DB表的应用 如图 所示
修改TDataSource部件的AutoEdit属性为True
双击TTable部件打开字段编辑器Fields Editor 并单击SaleDate字段
在Object Inspector中双击SaleDate字段对象的OnValidate事件 为该字段对象编写事件处理过程如下
TForm Table SaleDateValidate(Sender:TField)
begin
If SaleDate Value>Now then
raise Exception Create( 不能输入一个未来的日期 )
end;
当这个应用程序运行时 用户修改或插入ORDERS DB中的记录时 该应用程序会对销售日期(SaleDate)字段的值进行验证 该字段值不能晚于系统的当前日期 程序中调用Now方法获得系统的当前日期 如果字段值大于系统的当前日期会出现一错误信息提示框 告知用户不能输入一个未来的日期
使用TDBComBox部件和TDBLookupComBox部件来限制用户输入字段值的范围
创建查看orders db表的应用 窗体中显示Terms 字段的是TDBComBox部件 显示EmpNo字段的是TDBLookupComBox部件
TDBComBox和TDBLookupComBox部件的属性值如表 所示
表 窗体中各部件的属性设置
━━━━━━━━━━━━━━━━━━━━━━━━━━━
部 件 属 性 属 性 值
───────────────────────────
DataField Terms
DBComBox DataSource DataSource
Items Prepaid
Net
COD
───────────────────────────
DataField EmpNo
DataSource DataSource
DBLookupComBox LookupSource DataSource
KeyField EmpNo
LookupField EmpNo
───────────────────────────
DataSource DataSet Table
AutoEdit True
───────────────────────────
DataSource DataSet Table
AutoEdit True
───────────────────────────
Table DatabaseName DemosDB
TableName orders db
───────────────────────────
Table DatabaseName DemosDB
TableName orders db
━━━━━━━━━━━━━━━━━━━━━━━━━━━
该应用运行时 当用户修改和插入记录到ORDERS DB表中时 Terms字段的值可以从组合框中的Prepaid Net COD三个值中任选 EmpNo字段的值是从另一个表Employee中获得的雇员号码 用户可以从中选择
返回目录 DELPHI基础教程
编辑推荐
Java程序设计培训视频教程
J EE高级框架实战培训视频教程
Visual C++音频/视频技术开发与实战
Oracle索引技术
ORACLE G数据库开发优化指南
Java程序性能优化 让你的Java程序更快 更稳定
C嵌入式编程设计模式
Android游戏开发实践指南
lishixinzhi/Article/program/Delphi/201311/25166
Delphi作为一种目前十分流行的数据库开发语言 在数据库开发领域有着十分重要的地位 它不仅提供了可视化的开发环境 使得开发变得相对容易 而且还是一种面向对象的语言 使得程序员能够充分利用面向对象编程的种种优势——如封装 继承等等 从而大大减轻了开发的难度和工作量 下面 我们就谈一谈利用面向对象的特性来开发数据库控件的方法
Delphi本身提供了一些数据库控件 如DBGrid Table等 它们给开发带来了很多方便 下面我们来以一个能够显示数据表中的所有字段的控件为例来说明如何用Delphi来进行控件的编程
首先要为控件选择一个合适的父类 Windows的一个好处就在于它将许多 *** 作标准化了 通过这些标准的 *** 作 使得学习和使用都有章可循 用户就很容 易融会贯通地掌握整个系统 在Delphi中提供了许多控件 这些控件生成的应用程序足以满足Windows编程的要求 而一些新的控件也可以在此基础上 产生 它一方面继承了一部分控件标准的 *** 作 另一方面也在程序中加入一些代码来实现特定的功能 这样用户使用起来不会觉得突兀 也简化了程序的开发 根据 我们的目标可以看出 利用 下拉框 控件作为新控件的父类比较合适 因为它提供了下拉框中的所有标准 *** 作 这就可以大大减少我们的编程量 然后就是为 特定的功能编写代码 我们应该想到 如果一个下拉框能够显示一个数据库中的所有字段 那么它一定有一个属性能够与数据库相连 我们将这个属性定名为 DataSource 并将这一属性添加到控件中 添加的方法是 首先在Private段中加入如下代码
FDataLink:TFieldDataLink; function GetDataSource:TDataSource; Procedure SetDataSource( Value:TDataSource);其中TfieldDataLink是一个十分重要的类 我们之所以能够很容易地进行数据库控件的开发全是拜它之赐 它有一些十分有用的属性 如 DataSource 利用这个属性 我们就能很容易地指定新控件的DataSource属性
第三步就是为控件的功能编写代码 可以想到 如果我们想要在拉下下拉框时显示数据库中的所有字段 就要在它的DropDown事件中加入代码来将所有 的字段加入到下拉框的下拉区域中 这应该分两步走 第一就是要取得指定数据库的所有字段 第二就是将这些字段以字符串的格式加入到下拉框中(而拉下时显示 所有字段的功能则由下拉框控件自己完成) 在取得数据库的字段时 用到了我们上面提到的TfieldDataLink类 下面的代码就可以获得指定数据库 的字段数目
j:= ; j:=FDataLink DataSource DataSet FieldCount ;//取得数据库中的所有字段的名字 I:= ;
然后再用下面的代码将这些字段的名字加入到下拉框的items属性中 值得注意的是在每次拉下这个下拉框时都要将items属性清空 否则这个下拉框将每次都会因加入重复的内容而变得越来越长 并且一次选择可以选定许多项 使得控件看起来有点怪
items Clear ; //清空items属性
repeat //循环 *** 作将字段加入下拉框中
items Add (FDataLink DataSet Fields[I] FieldName ); //将字段名加入到下拉框中
I:=I+ ;
until I>j- ; //直到所有的字段加入完为止
第四步 就是将以上代码加入到Delphi的控件编辑窗口中去 点击Delphi的 Component/New Component 菜单 系统出现一个对话框 将对话框如图 所示填写
填写完毕点击 OK 按钮 就可以创建一个文件 将上面提供的代码加入到文件的适当位置 就可以完成这个控件的编写 图 是带有这个控件的程序的例子
可以想见 这个控件有着十分广泛的功能 例如 我们能够利用它设置指定字段的值来运行查询 也可以返回数据库中指定字段的数据类型 长度等信息 给我们的编程提供了极大的方便
但是也应该看到 这个控件也有一些缺点 那就是它只能显示字段的名称 一般的数据库中字段的名称都是英文的 这给中文版的应用软件带来不便 下面我们 就用FdataLink的另一个属性来显示中文化的字段 这个属性就是DisplayName 它所指定的是数据库字段的显示名称 而这个名称我们可以在 设计时将其汉化 这样在应用程序中显示出来的就是有意义的中文了
lishixinzhi/Article/program/Delphi/201311/8535
下面我们将上面提供的一段代码作如下修改
j:= ; j:=FDataLink DataSource DataSet FieldCount; I:= ; repeat items Add (FDataLink DataSet Fields[I] DisplayName ); //在items属性中加入DisplayName的值 I:=I+ ; until I>j- ;另外 还要加入下面一段代码 来判断显示的DisplayName和哪个FieldName相对应
function TListBox GetField:string;var I j:integer;beginj:=FDataLink DataSource DataSet FieldCount ; for I := to j- do begin if FDataLink DataSource DataSet Fields[I] Displayname=text then begin Result:=FDataLink DataSource DataSet Fields[I] FieldName; exit; end; end;end;这样 当选择了一个中文化的字段显示名称时 就将返回它的真正的字段名 这下用起来就更方便了 图 就是我们将中文字段显示在下拉框中的例子
程序中的字段以中文显示能够给用户带来很大的方便 最后 下面附上这段程序的完整代码 谨供参考
unit DBFieldComboBox;interfaceuses Windows Messages SysUtils Classes Graphics Controls Forms Dialogs StdCtrls db dbctrls;type TDBFieldComboBox = class(TComboBox) private FDataLink:TFieldDataLink; function GetDataSource:TDataSource; function TListBox GetField:string; Procedure SetDataSource( Value:TDataSource); procedure StartDrag(Sender: Tobject; var DragObject: TDragObject); procedure DropDown(Sender : Tobject); { Private declarations } protected { Protected declarations } publicconstructor create(Aowner:Tponent);override; destructor Destroy;override; { Public declarations } published property DataSource :TDataSource read GetDataSource write SetDataSource; property text; { Published declarations } end;
lishixinzhi/Article/program/Delphi/201311/8536
Sybase和MicroSoft SQL Server数据库
在建立Sybase或MicroSorft SQL Server的SQL Link时除了需要下列文件外 应用程序还需要Sybase数据库管理系统的客户端的连接产品与网络协议接口
表 建立Sybase数据库的SQL Link所需的文件
━━━━━━━━━━━━━━━━━━━━━━━━━━━
文件名 描 述
───────────────────────────
SQLD_SS DLL BDE SQL Link for Sybase的驱动程序
SQLD_SS HLP 联机帮助文件
SQL_SS CNF Sybase驱动程序的BDE配置文件
W DBLIB DLL Sybase/MC SQL Server客户端的DLL文件
DBNMP DLL Sybase/MC SQL Server客户端的DLL文件
SYDC LD Sybase语言驱动程序
SYDC LD Sybase语言驱动程序
━━━━━━━━━━━━━━━━━━━━━━━━━━━
Informix数据库
在建立Informix的SQL Link时除了需要下列文件外 应用程序还需要Informix数据库管理系统的客户端的连接产品与网络协议接口
表 建立Informix 数据库的SQL Link所需的文件
━━━━━━━━━━━━━━━━━━━━━━━━━━━
文件名 描 述
───────────────────────────
SQLD_ss DLL BDE SQL Link for Informix的驱动程序
SQLD_INF HLP 联机帮助文件
SQL_INF CNF Informix驱动程序的BDE配置文件
LDLLSQLW DLL Informix客户端的DLL文件
ISAM IEM Informix错误信息文件
OS IEM Informix错误信息文件
RDS IEM Informix错误信息文件
SECURITY IEM Informix错误信息文件
SQL IEM Informix错误信息文件
━━━━━━━━━━━━━━━━━━━━━━━━━━━
InterBase 数据库
在建立InterBase的SQL Link时除了需要下列文件外 应用程序还需要InterBase数据库管理系统的客户端的连接产品与网络协议接口
表 建立InterBase数据库的SQL Link所需的文件
━━━━━━━━━━━━━━━━━━━━━━━━━━━
文件名 描 述
───────────────────────────
SQLD_IB DLL BDE SQL Link for InterBase的驱动程序
SQLD_IB HLP 联机帮助文件
SQL_IB CNF InterBase驱动程序的BDE配置文件
CONNECT EXE InterBase连接测试诊断工具
CONNECT HLP InterBase连接测试诊断工具的帮助文件
GDS DLL InterBase API DLL
REMOTE DLL InterBase与网络的接口的DLL文件
INTERBASE MSG InterBase错误信息文件
━━━━━━━━━━━━━━━━━━━━━━━━━━━
返回目录 DELPHI基础教程
编辑推荐
Java程序设计培训视频教程
J EE高级框架实战培训视频教程
Visual C++音频/视频技术开发与实战
Oracle索引技术
ORACLE G数据库开发优化指南
Java程序性能优化 让你的Java程序更快 更稳定
C嵌入式编程设计模式
Android游戏开发实践指南
lishixinzhi/Article/program/Delphi/201311/25179
以上就是关于DELPHI基础教程:简单数据库应用的创建及MASTAPP介绍(三)[4]全部的内容,包括:DELPHI基础教程:简单数据库应用的创建及MASTAPP介绍(三)[4]、Delphi 开发数据库控件的方法[1]、Delphi 开发数据库控件的方法[2]等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)