Visual Query Builder 以可视化的方式建立SQL语句对数据库表和表中的记录进行 *** 作
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
SQL links使得Delphi数据库应用程序利用SQL语言访问驻留在远程服务器上的数据 这些服务器包括ORACLE Sybase Microsoft SQL Server Informix InterBase 当安装SQL Link驱动程序之后 SQL语句便可以直接 *** 作服务器上的数据
Delphi可以访问的数据源(DataSource)
Delphi数据库应用程序是通过BDE获取它们所需的数据的 BDE与不同类型的数据源打交道 BDE可以使用的数据源有如表 所示
表 Delphi可访问的数据源
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
数据源(DataSource) 特 性 描 述 文件扩展名
─────────────────────────────────────
dBASE数据库 数据库表是通过dBASE数据库管理系统或DBD建立的 每个表是一个独立的文件 DBF
─────────────────────────────────────
Paradox数据库 数据库表是通过Paradox数据库管理系统 DB或DBD建立的 每个表是一个独立的文件
─────────────────────────────────────
ASCII文件 表是通过Database Desktop建立的 每个 TXT表是一个独立的文件
─────────────────────────────────────
本地InterBase服务器 数据库是通过InterBase数据库管理系统 GDB建立的 多个表包含在一个数据库文件中
─────────────────────────────────────
SQL数据库服务器 数据库是通过相应的数据库服务器提供的 依赖不同的ORACLE Sybase Informix 专用或通用工具建立的 也可以通过DBD来 数据库管理Microsoft SQL Server 创建数据库 并通过SQL Link访问数据库 系统InterBase
─────────────────────────────────────
ODBC数据源 主要是指那些具有ODBC接口的数据库系统 依赖于相应如MS Access Btrieve等的数据库
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Delphi数据库的体系结构
Delphi使用可视化的部件创建数据库应用 跟创建其它的非数据库应用程序一样 数据库部件都具备一定的属性 程序设计人员可以在设计过程中设置部件的多种属性 也可以在程序运行过程中通过程序来设置部件的各种属性
在Delphi部件板上有两页数据库部件用于开发数据库应用程序
数据访问部件页 该页上的部件主要用于说明有关的数据库的信息 如应用程序要访问(连接)的数据库 要访问数据库中的具体的数据库表 以及要访问表中哪些字段等 在实际的开发应用中常用的部件有TDataSource TTable TQuery等
数据控制部件页 该页上的部件主要用于显示浏览数据库中的数据信息 为用户提供了一个可视化的界面 常用的部件有 TDBGrid TDBEdit TDBCheck等 可以让用户对数据库中的信息进行有效的浏览 编辑 插入 删除等 *** 作
TTable TQuery TStoredproc部件负责与实际的数据库表联系 并从中获取数据信息 因而它们又常常被称为数据集部件 它们在程序设计过程中是可见的 但在程序运行时是不可见的 它们通过 BDE 为应用程序提供与数据库的连接 数据控制部件通过TDataSource部件与数据集部件相连 为用户提供一个可视化的界面 并在其中显示数据库中的数据信息
数据访问部件
数据访问部件页上提供了一组数据访问部件用来访问数据库中的数据
当要创建一个数据库应用时 首先在窗体中选择一个数据访问部件 然后为数据访问部件设置有关的属性 说明要访问的数据库 数据表以及表中的记录等 数据访问部件为数据控制部件与数据源建立一条通道 数据访问部件在程序运行时是不可见的 下表列出了数据访问页上的数据访问部件以及它们的主要用途
表 数据访问部件
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
部件名称 主 要 用 途
────────────────────────────
作为数据集部件TTable TQuery StoredProc组TDataSource 件与数据浏览件TDBGrid TDBEdit之间传送数据的通道
────────────────────────────
TTable 它是存取磁盘上数据库表的媒介 它通过BDE存取数据库表中的数据 TTable再与TDataSource进行 对话 使得数据浏览部件能够有效地从TTable中访问数据并能显示和编辑其中的数据
────────────────────────────
TQuery 它利用SQL语言访问磁盘上数据库表中的数据 并与TDataSource 对话 实现数据浏览部件对数据库的访问
────────────────────────────
TStoredProc 在应用程序中 它主要用来访问远程服务器中的存贮过程
────────────────────────────
TDatabase 当应用程序要登录到一个远程服务器上的数据库时 可以用该部件来建立应用程序与数据库永久
性的连接
────────────────────────────
TBatchMove 用于复制数据库表的结构或表中的记录
────────────────────────────
TReport 用于创建数据库的输出报表
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
lishixinzhi/Article/program/Delphi/201311/25180
在数据库应用程序中 数据控件是经常要用到的 数据控件都是可视的 也就是说 如果修改了这些构件的属性 能在窗体上马上反映出来 如果这些构件的Enabled属性设为True并且数据集的Active属性也设为True 在设计期就可以看到数据
下面就来介绍一下这些控件的简单应用
指定一个数据源
数据控件必须通过TDataSource构件连接数据集 TDataSource构件扮演的角色实际上就是数据控件与数据集之间的桥梁 首先 把一个数据集构件放到窗体或数据模块上 设置它的DatabaseName属性指定要访问的数据库 设置它的TableName属性指定要访问的表 接着 把一个TDataSource构件放到窗体或数据模块上 设置它的DataSet属性指定数据集 然后 把一个数据控件放到窗体上 设置它的DataSource属性指定TDataSource构件 而这个TDataSource构件的DataSet属性已经指定了一个数据集 最后 设置数据控件的DataField属性指定要显示的字段 不过 对于TDBGrid TDBCtrlGrid和TDBNavigator构件来说 不需要设置DataField属性 因为这几个控件是以整个数据集为工作内容的
编辑和更新数据
除了TDBNavigator构件外 其他数据控件都是用来显示和编辑数据的 这里要介绍怎样编辑数据
要使用户能编辑数据 数据集必须进入dsEdit状态 如果TDataSource的AutoEdit属性设为False 用户不能直接编辑数据 除非程序调用Edit函数
要使用户能够在数据控件中修改数据 必须把数据控件的ReadOnly属性设为False 如果ReadOnly属性设为True 数据控件中显示的数据就是只读的 一般情况下 TDataSource构件的Enabled属性设为True 如果这个属性设为False 数据控件就无法显示数据 更不能修改数据
如果数据集构件的ReadOnly属性设为True 数据集就是只读的 用户在数据控件中所作的修改不能写到数据集中 除了TDBGrid构件外 当用户修改了一个字段的值 还需要把输入焦点移走 新的数据才写到数据集中 在移走输入焦点之前 用户随时可以按ESC键取消修改 在TDBGrid构件建立的栅格中 当用户修改了一个字段的值 还需要把输入焦点移到另一条记录上 新的数据才写到数据集中
禁止和允许数据刷新
当程序正在遍历整个数据集或者搜索一个特定的记录时 应当暂时禁止数据控件刷新数据 这样能加快遍历或搜索的速度 防止屏幕总是在闪烁 调用数据集的DisableControls可以暂时禁止连接这个数据集的数据控件刷新数据 DisableControls函数通常在循环 *** 作前调用 等循环结束后 程序应当立即调用数据集构件的EnableControls函数重新允许刷新数据 为了确保最后总是能恢复刷新 建议采用Try Finally结构 这样 即使在循环中出现异常 也可以保证总能调用EnableControls
下面的代码演示了怎样调用DisableControls和EnableControls函数
CustTable DisableControlsTryCustTable FirstWhile not CustTable EOF DoBegin CustTable NextEndFinallyCustTable EnableControlsEnd
手动刷新数据
调用数据集的Refresh可以读取数据集中最新的数据并刷新数据控件 这个功能在多用户环境尤其有用 因为其他用户有可能已改变了数据集中的数据 有时候 调用Refresh可能会导致意想不到的结果 例如 如果另一个用户已经删除了一条记录 调用Refresh后 这条记录将从数据控件中消失
显示单个字段的数据控件
有的数据控件以数据库的一个或几个字段作为工作内容 如TDBText和TDBEdit 而有的数据控件以整个数据集为工作内容 如TDBGrid和TDBNavigator 显示单个字段的数据控件往往是从一个标准的Windows控件演化而来的 例如 TDBEdit构件就可以认为是TEdit的数据感知版本
把数据作为标签显示
TDBText构件是一个只读的数据控件 它非常类似于TLabel构件和TStaticText构件 TDBText构件能够把数据作为标签显示 用来标注其他控件 例如 可以用一个TDBText构件显示名称(Common_Name字段)
TDBText构件需要指定一个字段 当用户使用导航器或其他手段浏览记录时 TDBText构件显示的数据将自动变化 因为TDBText构件总是显示当前记录的数据
TDBText构件的AutoSize属性一般要设为True 这是因为字段的内容长度可能是不同的 如果AutoSize属性设为False 有些较长的内容可能会被截断
显示和编辑数据
TDBText构件只能显示数据 不能编辑数据 要既能显示数据 又能编辑数据 就要用到TDBEdit构件 TDBEdit可以认为是TEdit的数据感知(Data Aware)版本 例如 有一个TDataSource构件叫CustomersSource 它的DataSet属性指向一个TTable构件叫CustomersTable 把一个TDBEdit构件放在窗体上 其DataSource属性设为CustomersSource 把它的DataField属性设为CustNo 这个TDBEdit构件马上就能显示CustNo字段的值 用户可以在编辑框中键入新的值
显示和编辑多行文本
TDBMemo构件是TMemo构件的数据感知版本 可以显示dBASE和Paradox数据库中备注字段的内容
与TDBEdit不同的是 TDBMemo能够以多行的形式显示文本 同时也允许用户键入多行文本
默认情况下 TDBMemo允许用户修改它显示的文本 如果不想让用户修改文本 只要把ReadOnly属性设为True即可
要允许用户在文本中插入一个制表符 应当把WantTabs属性设为True 否则 当用户按下Tab键 将把输入焦点移走 而不是插入制表符 要限制用户最多可输入的字符数 可以设置MaxLength属性 如果这个属性设为 表示没有限制
此外 ScrollBars属性可以设置要不要加上滚动栏 WordWrap属性可以设置是否允许自动绕回 Alignment属性可以设置文本的对齐方式 在运行期 您可以调用CutToClipboard和CopyToClipboard函数把选择的文本剪切和复制到剪贴板中 调用PasteFromClipboard能够粘贴剪贴板中的文本
lishixinzhi/Article/program/Delphi/201311/8453
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)