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

Posted

篇首语:人无常识,百事难成。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 简单数据库应用的创建及MASTAPP介绍(三)[3]相关的知识,希望对你有一定的参考价值。

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

  要想删除表中的某一条记录 首先将记录指针移到该记录处 然后调用delete方法 这样 当前指针所在的记录就会被删除 而且我们在进行删除操作时 不必将TTable部件设置成编辑状态 当前指针所在的记录被删除之后 被删除记录下面的所有记录都向前移动 记录指针自动移到紧挨着被删除的记录的下一条记录 在删除记录的过程中没有提醒用户是否真的想删除当前记录的信息确认框 因此在进行此项操作时要倍加小心 如果是开发应用程序 最好的办法是提供一个确认信息框确保用户不会意外删除记录

  插入一条记录也很简单 Delphi为用户提供两种方法用来插入记录到现存数据库表中 一种方法是在当前记录指针所在的记录处插入记录 另一种方法是在数据库表的尾部插入记录 这两种方法是分别调用Insert方法和Append方法实现的 但是无论是调用Insert方法还是调用Append方法在具有索引的数据库表中插入记录 增加到索引表中的记录都将按照索引顺序写入到数据库表中 也就是说对于索引表 调用Insert和Append方法的效果是一样的 事实上 Append方法只适用于那些没有索引的表 这种没有索引的表并不十分有用因而通常不创建这种表 几乎任何情况下我们都是用Insert方法来插入记录

  用户在插入记录时一般可以采用两种方式插入 逐步插入即首先建立一条空记录 然后再填充记录的各个字段 最后再将记录写回到磁盘 共分三个独立的操作步骤 而使用InsertRecord方法便可以一次将插入记录的操作完成

   逐步插入方法

  逐步插入方法分为三个明确的步骤 先调用TTable部件的Insert方法在TTable中创建一条新的空记录 然后填充该记录的各个字段 最后调用post方法把新记录写到磁盘上的实际数据库文件中 在填充并传送记录以前 考虑插入记录到表中的什么位置是毫无意义的 假设插入的表是有索引的 在调用post方法时 Delphi会自动地把插入的新记录按照索引顺序插入到表中的正确位置 如果插入的表中没有索引 那么新记录将插入到当前指针所在记录的后面

  因此 采用逐步插入方法插入记录的程序代码一般如下形式

  With Table do

  begin

  Insert; 插入一条空白记录

  <填充该记录的各个字段>

  post; 将插入的记录写回到磁盘文件

  end;

  对于没有索引的数据库表 可以用Append方法替代Insert方法把新记录插入到表的尾部

   调用InsertRecord插入记录

  对于简单的应用程序 Delphi允许用户用一条语句插入一个新记录 而且这个新记录可以带有任意多个新字段值 InsertRecord方法把新记录中字段的赋值语句和psot方法调用组合进一条语句中

  InsertRecord方法把记录的各个字段值组合成一个字段值数组作为它的唯一参数 在字段值数组中 可以为插入的记录的每个字段提供一个字段值 或从最左一列开始依次为任意多个字段赋值 也就是说用户可以从表的最左边一列起 把多个列的值同时传递给InsertRecord 直到所有字段都被赋值 用户也可以省略后面的字段 InsertRecord会用空值填充这些没有赋值的字段 用户还可以对那些明确希望用空值填充的字段传递保留字NIL来标明该字段为空

  如我们希望在Customer DB表中插入一条记录 可以用下面的代码来实现

  InsertRecord([ NIL NIL NIL])

  在上面的程序代码中 我们只填充了四个字段 CustNo Company Add Add InsertRecord会自动将其它字段赋以空值

  例 在这个例子中 我们在CustNo DB表中插入和删除记录 都是在程序中完成这类操作的 而不再是使用DBD或数据浏览部件完成

  插入/删除记录

  

  unit tt;

  interface

  uses

  SysUtils Windows Messages Classes Graphics Controls

  StdCtrls Forms DBCtrls DB DBGrids Buttons DBTables Grids

  ExtCtrls Mask Dialogs;

  type

  TForm = class(TForm)

  DBGrid : TDBGrid;

  DBNavigator: TDBNavigator;

  Panel : TPanel;

  DataSource : TDataSource;

  Panel : TPanel;

  customerTable: TTable;

  BitBtn : TBitBtn;

  Label : TLabel;

  Label : TLabel;

  BitBtn : TBitBtn;

  BitBtn : TBitBtn;

  CustNoEdit: TEdit;

  CompEdit: TEdit;

  procedure FormCreate(Sender: TObject)

  procedure BitBtn Click(Sender: TObject)

  procedure BitBtn Click(Sender: TObject)

  procedure FormActivate(Sender: TObject)

  private

   private declarations

  public

   public declarations

  end;

  var

  Form : TForm ;

  implementation

  $R * DFM

  procedure TForm FormCreate(Sender: TObject)

  begin

  customerTable Open;

  end;

  procedure TForm BitBtn Click(Sender: TObject)

  begin

  If (Length(CustNoEdit text)= )and

  (Length(CompEdit text)= )

  then

  MessageDlg( 没有输入新记录的字段值! mtError [mbCancel] )

  else

  with customerTable do

  begin

  IndexFieldNames:= CustNo ;

  If FindKey([CustNoEdit text]) then

  MessageDlg( 已经存在这条记录! mtError [mbCancel] )

  else

  InsertRecord([StrToInt(CustNoEdit text) CompEdit text nil])

  CustNoEdit text:= ;

  CompEdit text:= ;

  end;

  end;

  procedure TForm BitBtn Click(Sender: TObject)

  begin

  If (Length(CustNoEdit text)= )and

  (Length(CompEdit text)= )

  then

  MessageDlg( 没有输入删除的记录的字段值! mtError [mbCancel] )

  else

  with customerTable do

  begin

  IndexFieldNames:= CustNo ;

  If FindKey([CustNoEdit text]) then

  begin

  If MessageDlg( 你确定要删除这条记录吗? mtConfirmation

  [mbYes mbno] )=mrYes then Delete;

  end

  else

  MessageDlg( 没有你要删除的记录! mtError [mbCancel] )

  CustNoEdit text:= ;

  CompEdit text:= ;

  end;

  end;

  procedure TForm FormActivate(Sender: TObject)

  begin

  CustNoEdit setfocus;

  end;

  end

   输入数据的有效性验证

  当用户向一个数据库表中插入新记录或修改原有记录时 我们必须确保用户输入的数据是有效的 为此Delphi通过三种不同的途径用来验证用户输入的数据是否有效

  这三种途径是 基于数据库表的有效性验证 基于字段的有效性验证 基于记录的有效性验证

cha138/Article/program/Delphi/201311/25165

相关参考

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

DELPHI基础教程:简单数据库应用的创建及MASTAPP介绍(三)[4]  以下文字资料是由(全榜网网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