简单数据库应用的创建及MASTAPP介绍(三)

2016-01-29 14:05 1 1 收藏

简单数据库应用的创建及MASTAPP介绍(三),简单数据库应用的创建及MASTAPP介绍(三)

【 tulaoshi.com - Delphi 】

 
利用GotoNearest方法执行不精确查找

窗体中的“不精确查找”按钮的事件处理过程代码如下:

procedure TForm1.Button1Click(Sender: TObject);

begin

with table1 do

begin

IndexFieldNames:='Company';

setkey;

FieldByName('Company').AsString:=Edit1.text;

GotoNearest;

label3.caption:=FieldByName('Company').AsString;

end;

end;

    读者可以利用 FindNearest 方法执行上面的不精确查找, 具体使用方法可以参看Findkey方法的使用。

在上面的例子中要设置table1的IndexFieldNames属性为Company。

GotoNearest方法进行不精确查找

14.6 修改数据库中的记录 

    我们掌握了字段对象的概念和如何查找数据库中的记录之后,下面我便可以很方便地修改数据库中现存的记录了,一般来说,在程序中修改数据库中的记录包括下面这些步骤:

1、在数据库中找到要修改的记录,并将记录指针移至该记录。

2、调用Edit方法将与数据库表相连的TTable部件设置成编辑状态。

3、修改一个或多个字段。

4、调用post方法将修改后的记录写入数据库。

    以上这几个步骤只是概述性的,具体实现时还有很多细节需要留心,我们通过一个例子来演示上面的全过程,以便让读者进一步地了解和掌握修改记录的方法。

   例14.6 我们为四个按钮分别编写了事件处理过程,用来遍历数据库中的记录并对每个客户记录的Company字段进行修改,在程序对记录进行更新操作时窗口中的控件都是无效的,在这个例子中我们还编写了一个简单的异常代码块用来确保在更新过程中出现异常时使控件恢复正常操作。 

修改数据库记录

14.6.1 Edit方法Post方法 

    为了能让用户通过程序修改数据库表中的记录,TTable部件必须要处在编辑状态下。在大多数情况下,数据库表都是以浏览(只读方式)方式打开的,也就是说它的每一个字段可以被读取介不能被编辑修改。调用Edit 方法能够将 TTable 部件置成编辑状态, 当TTable部件处于编辑状态后,我们才可以通过程序修改当前记录指针所指向的记录,但这样修改后的记录不会立即被写入到磁盘上的实际数据库表中。要想保存对记录的修改,必须要调用Post方法,Post方法才真正将我们对记录的修改写入实际的数据库表中。

一般来说,用来扫描整个数据库表并修改每个记录的某一个字段的程序如下所示:

with Table Do

begin

DisableControls;{在修改记录的过程中,使其它部件无效}

First; {将记录指针指向第一条记录}

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/delphi/)

while not EOF do

begin

<读取记录的一个字段值到一个变量中

<做适当的修改

Edit; {将TTable部件置成编辑状态}

<将修改后的字段值写回到其对应的字段

post; {将修改后的记录写回数据库}

next; {修改下一条记录}

end;

enablecontrols; {恢复其它部件的功能}

end;

    程序都是对TTable部件进行操作,因此使用With语句来防止错误的扩散是很有意义的。在这里要注意Disablecontrols方法和EnableControls方法的使用。DisableControls方法是在程序修改TTable部件中的记录时,切断TTable部件与数据访问部件TDatasource 部件的联系。否则,在对TTable中的每一修改之后,TDataSource 部件都会更新窗体中所有数据浏览部件的显示内容,这样会急剧减慢处理过程而且浪费时间。EnableControls方法是与DisableControle方法执行相反的操作,它是用来恢复TTable部件与TDatasource部件的联系并促使所有的数据浏览部件更新显示。

    调用First方法是将记录指针移到数据库表中的第一条记录,确保程序从表中的第一条记录开始进行修改。调用Next方法是将记录指针从当前的记录移到下一条记录,这样保证了从表中的第一条记录开始逐条记录进行修改,直到修改完最后一条记录。如果不调用Next方法,程序将会陷入无穷的死循环。 

14.6.2 实现异常保护的TRY...FINALLY语句 

    上面的程序存在着潜在的危险,在实际应用过程中,可能因为某些原因使得对数据库表的更新不能进行下去。如当程序试图执行Post方法将修改后的记录写回磁盘时,而又因为某种原因磁盘没有准备好,这时便出现了异常。当出现异常时,应用程序会暂停下来并且会弹出一对话框显示有关的错误信息,在用户单击错误信息对话框之后,程序将继续执行到某一个地方去,而这个地方常常不是用户所能预料到的。在我们的程序中, 在执行Post方法之前,窗体中所有的部件与TTable部件都已失去联系。因此,这种异常将导致窗体中显示的数据和数据库无关。

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/delphi/)

        Object Pascal中的Try...Finally语句为我们解决上述异常问题提供了一个解决方法。在Delphi中仍然

来源:https://www.tulaoshi.com/n/20160129/1492498.html

延伸阅读
以下是引用片段: 代码如下: ImportsSystem.Data ImportsSystem.Data.SqlClient PublicClassForm1 InheritsSystem.Windows.Forms.Form PrivateConnectionStringAsString="DataSource=.;InitialCatalog=;UserId=sa;Password=;" PrivatereaderAsSqlDataReader=Nothing PrivateconnAsSqlConnection=Nothing ...
标签: PHP
  来源:奥索网 桌面中心(一)创建数据库 作者:elong 这是小弟第一次写文章。不知道能不能发布呀。。我把程序写出来是想要大家参考一下。如果有哪位高手能改出更好的程序, 请别忘了和我说一声呀。 :P 源程序的演示页面在elong.oso.com.cn/desk/ 第一步创建数据库: 我们就以OSO的数据库为列说明一下。 先登入数据库。然后在...
标签: PHP
  这是小弟第一次写文章。不知道能不能发布呀。。我把程序写出来是想要大家参考一下。如果有哪位高手能改出更好的程序, 请别忘了和我说一声呀。 :P 源程序的演示页面在elong.oso.com.cn/desk/ 第一步创建数据库: 我们就以OSO的数据库为列说明一下。 先登入数据库。然后在点自己的的数据库名,就在左边。 在输入命令那儿输入以...
一、J2EE 技术简介 J2EE是 SUN 公司提出的在分布式环境中的一种体系结构,它提供了一种基于组件的设计、开发、集成、部署企业应用系统的方法,J2EE平台提供了多层分布式的应用系统模型、重用组件的能力、统一的安全模型和灵活的事务控制。!-- frame contents -- !-- /frame contents --基于组件的J2EE企业应用系统具有平台独立...
  1.创建目录   a.  在admin目录下,创建一个文件夹,文件夹名字为将创建数据库的SID。在此文件夹中创建cdump,bdump,udump等目录;   b.  在oradata目录下,创建数据文件,联机日志,归档日志文件夹,日志至少两个文件夹。   2.创建pfile,默认NT路径为Oracle_HOME下的database。我采用的是Oracle的OMF...

经验教程

657

收藏

77
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部