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

710898513

710898513

2016-01-29 14:05

简单数据库应用的创建及MASTAPP介绍(三),简单数据库应用的创建及MASTAPP介绍(三)
 
利用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; {将记录指针指向第一条记录}

while not EOF do

begin

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

<做适当的修改

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

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

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

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

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

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部件都已失去联系。因此,这种异常将导致窗体中显示的数据和数据库无关。

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

展开更多 50%)
分享

猜你喜欢

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

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

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

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

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

Delphi 简单数据库应用的创建及MASTAPP介绍

编程语言 网络编程
Delphi 简单数据库应用的创建及MASTAPP介绍

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

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

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

多层数据库开发三:创建多层应用程序

编程语言 网络编程
多层数据库开发三:创建多层应用程序

用MySQL创建数据库和数据库表

编程语言 网络编程
用MySQL创建数据库和数据库表

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

Delphi自定义部件开发(四)

Delphi自定义部件开发(四)

剪贴板和动态数据交换(二)

剪贴板和动态数据交换(二)
下拉加载更多内容 ↓