知识大全 简单数据库应用的创建及MASTAPP介绍(三)[1]

Posted 部件

篇首语:知识就是飞上天的羽翼。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 简单数据库应用的创建及MASTAPP介绍(三)[1]相关的知识,希望对你有一定的参考价值。

DELPHI基础教程:简单数据库应用的创建及MASTAPP介绍(三)[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

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

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

  procedure TForm Button Click(Sender: TObject)

  begin

  with table do

  begin

  IndexFieldNames:= Company ;

  setkey;

  FieldByName( Company ) AsString:=Edit text;

  GotoNearest;

  label caption:=FieldByName( Company ) AsString;

  end;

  end;

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

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

  GotoNearest方法进行不精确查找

   修改数据库中的记录

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

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

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

   修改一个或多个字段

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

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

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

  修改数据库记录

   Edit方法Post方法

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

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

  with Table Do

  begin

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

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

  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方法 程序将会陷入无穷的死循环

   实现异常保护的TRY…FINALLY语句

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

  Object Pascal中的Try…Finally语句为我们解决上述异常问题提供了一个解决方法 在Delphi中仍然采用了这一语句用来处理异常问题 实际上 Try…Finally 语句是把两组语句组合在一起 语句的Try部分包含了可能产生异常的程序代码 Finally部分包含了即使发生了异常也必须执行的一条或多条语句 在本例中 Finally 部分只包含了EnableControls方法调用这一条语句 我们将前面的代码改写并组合进Try…Finally 语句

  with Table Do

  begin

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

  Try;

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

  while not EOF do

  begin

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

  <做适当的修改>

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

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

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

  next; 修改下一条记录

  end;

  enablecontrols;

  Finally;出现异常时 执行下面的程序

  enablecontrols; 恢复其它部件的功能

  end; 结束Try…Finally语句

  end;

  在保留字Try和Finally之间的代码跟前面的代码是一样的 它们用于在记录之间移动记录指针并处理对记录的修改 这一段代码可能会出现异常 当异常发生时 我们想保证执行EnableControls 以便窗体中各控件恢复与 TTable 部件的联系 因此我们必须将EnableControls语句放在Finally和结束语句End之间

  在这里要特别注意 请读者们不要混淆了Try…Finally语句和Try…Except 语句 如果真正想在发生异常时采取相应的处理 就要使用Try…Except语句 Try… Finally语句只是用来处理当异常出现时 使应用程序执行Finally部分的语句 使程序继续执行下去 Try…Except语句是实现异常处理 Try…Finally语句是实现异常保护

  有了上述这些概念 我们便可以提供这个例子的一些程序代码 它涉及了所有这些内容

cha138/Article/program/Delphi/201311/25167

相关参考

知识大全 简单数据库应用的创建及MASTAPP介绍(三)[4]

DELPHI基础教程:简单数据库应用的创建及MASTAPP介绍(三)[4]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我

知识大全 简单数据库应用的创建及MASTAPP介绍(三)[3]

DELPHI基础教程:简单数据库应用的创建及MASTAPP介绍(三)[3]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我

知识大全 简单数据库应用的创建及MASTAPP介绍(二)[2]

DELPHI基础教程:简单数据库应用的创建及MASTAPP介绍(二)[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我

知识大全 简单数据库应用的创建及MASTAPP介绍(二)[1]

DELPHI基础教程:简单数据库应用的创建及MASTAPP介绍(二)[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我

知识大全 简单数据库应用的创建及MASTAPP介绍(一)[3]

DELPHI基础教程:简单数据库应用的创建及MASTAPP介绍(一)[3]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我

知识大全 简单数据库应用的创建及MASTAPP介绍(一)[1]

DELPHI基础教程:简单数据库应用的创建及MASTAPP介绍(一)[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我

知识大全 简单数据库应用的创建及MASTAPP介绍(一)[2]

DELPHI基础教程:简单数据库应用的创建及MASTAPP介绍(一)[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我

知识大全 简单数据库应用的创建及MASTAPP介绍(二)[4]

DELPHI基础教程:简单数据库应用的创建及MASTAPP介绍(二)[4]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我

知识大全 简单数据库应用的创建及MASTAPP介绍(二)[3]

DELPHI基础教程:简单数据库应用的创建及MASTAPP介绍(二)[3]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我

知识大全 创建一个三层的数据库应用程序

概论    本文将介绍如何创建一个三层应用程序并且将介绍如何创建一个WebService服务    ADONET创建Wi