第十五章-数据访问部件的应用及编程(一)(3)

15.3.4 数据集中的数据维护 

数据集中的数据维护主要包括数据记录的修改,插入和删除。Delphi为数据集部件提供了相应的方法用于其中的数据维护。这些方法如表15.所示。 

表15.3 Delphi用于数据维护的方法

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

方 法 名 功 能

──────────────────────────────

Edit 将数据集置为编辑状态

──────────────────────────────

Append 投寄所有被修改的记录,将记录指针移到表中的最后

一条记录,且将数据集置为插入状态

──────────────────────────────

Insert 投寄所有被修改的记录将数据集置为插入状态

──────────────────────────────

Post 将插入的新记录和修改的记录写回磁盘上的数据库表,

即投寄,当投寄成功时数据集回到浏览状态,若投寄

不成功数据集仍然保持原有状态

──────────────────────────────

Cancel 取消当前的操作且将数据集置为浏览状态

──────────────────────────────

Delete 删除当前记录指针所在的记录且将数据集置为浏览状态

──────────────────────────────

AppendRecord 在表的最后插入一条新记录,记录的各个字段值作为

AppendRecord的参数传递给新记录

──────────────────────────────

InsertRecord 在当前指针所在记录的后面插入一条新记录, 记录的

各个字段值作为InsertRecord的参数传递给新记录。

──────────────────────────────

SetRecords 修改当前记录,字段名和相应的字段值作为SetRecords

的参数

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

Edt方法:如果应用程序想对数据集中的数据记录进行修改,我们必须要将数据集设置成编辑状态。调用数据集部件的Edit方法便可以将数据集置成编辑状态,当数据集已经处在编辑状态时,调用Edit方法不会产生作用。当数据集处于编辑状态时,移动记录指针或调用post方法都可以将当前记录的修改写回到磁盘数据库表中。在程序中, Edit方法和post方法常常配合在一起使用,用于修改表中的记录。如: 

Table1.Edit;

Tabel1.FieldByName('CustNo').Asstring := '1234';

Table1.st; 

在上述这一段程序代码中,第一行程序是将Table1置成编辑状态,第二行程序是对当前记录指针所在的记录的CustNo字段的值修改成'1234',第二行程序是调用post方法将对当前记录的修改写回数据库表。

Append方法和Insert 方法:这两个方法都是将数据集部件置成插入状态,以在表中插入新记录,Insert方法是在当前指针位置的记录后面插入一打新记录,Append方法是在表的尾部插入一打新记录,不过这要注意,无论用户是调用Insert方法还是Append方法插入新记录,增加记录到一个具有索引的表中时,都是按照索引顺序写入其位置,也就是说对于索引表格Insert方法和Append方法的作用是一样的,Append仅适用于没有索引的表。Insert方法和Append方法实际上是将数据集置成插入状态,并且插入一条空白记录,要真正插入一条新记录,我们必须在调用Insert或Append方法之后,还要给新记录的各个字段赋值,最后调用post方法,将插入的记录写回数据库表。调用这两种方法插入新记录的一般步骤如下: 

With tabe1 DO

Begin

Insert; {调用Insert方法,插入一条空记录}

<为记录的各字段赋值>

Post;

End; 

Post方法:数据集中的记录被修改或插入新记录时调用post方法将数据集的修改写回到数据库表。根据数据集所处的状态不同,post方法所产生的作用和效果是不一样的:

● 当数据集处于编辑状态时,调用post方法,将当前记录的修改写回数据库表

● 当数据集处于插入状态时,调用post方法,将插入的新记录写回数据库表

● 当数据集处于SetKey状态时,调用post方法,将数据集置成浏览状态(Browse状态)

post方法的调用既可以显式地调用,也可以隐含地调用,当数据集处于编辑状态或插入状态时,当移动记录指针时,Delphi会隐含地调用post方法,将将当前记录的修改写回数据库表,在程序调用Insert方法或Append方法时,也会隐含地调用Post方法,将先前的数据集的修改写回数据库表。

Delete方法:Delete方法用于删除表中的记录,调用Delete方法时,将会删除表中当前的记录,并且自动地将记录指针移到被删记录的下一条记录,同时将数据集置成Browse状态。

Cancel方法:Cancel方法用于取消当前的操作,当程序还没有调用Post方法,将对记录的修改写回数据库表时,调用Cancel方法,可以将记录恢复到没有修改之前的状态。并且在调用Cancel方法时,它总是将数据集置成Browse状态。

AppendRecord方法和InsertRecord方法:这两个方法分别与Append方法和Insert方法相似。它们都是用于在表中插入一条新记录,但AppendRecord方法和InsertRecord方法比Append和Insert方法更简单更方便一些,它们直接在表中插入一条新记录,新记录的各个字段值作为AppendRecord或InsertRecord方法的参数传递给新记录并且不需显式地调用post方法,将插入的新记录写回数据库表。在给插入的新记录赋字段值时,将由多个字段值组成的数组作为AppendRecord或InsertRecord的参数,在字段值数组中可以为每一个字段提供一个值,或从左边一列开始依次为任意多个字段赋值。也就是说,用户可以从数据库表的最左一列起,把许多列的值同时传递给InsertRecord,直到所有的字段被赋值,用户也可以省略字段序列后面的的一些字段值,InsertRecord会用空值来填充这些字段:用户也可以对那些明确希望用空填充的字段传递保留字NIl。

例如:如果表Country有Name,Captial,Continent,Area和Population字段,并且数据集部件Table1与它相连,下面的代码便可以在Country表中当前记录的后面插入一条新记录。

Table1.InsertRecord (["中国","北京","五洲"]);

在上述代码中没有为Area和population字段赋值,InsertRecord会用空值来填这两个字段。

时间: 2024-08-03 20:00:59

第十五章-数据访问部件的应用及编程(一)(3)的相关文章

第十五章-数据访问部件的应用及编程(一)(1)

在这一章里我们主要介绍Delphi的数据访问部件的层次结构.多部件之间的关系.部件的属性.方法.事件以及各部件的应用.这些部件包括: ● TSession部件 ● 数据集部件(TTable和TQuery) ● TDatasource部件 ● 字段对象TField ● 字段编辑器的使用 ● TReport部件和TBatchMove部件 我们对这些部件的属性.方法和事件进行一般性的描述,读者在实际使用Delphi开发应用程序时,还可以通过联机帮助获得有关部件更详细的信息. 15.1 Delphi数据

第十五章-数据访问部件的应用及编程(三)(4)

15.6.2.3 删除字段部件 用字段编辑器Fields Editor为数据集部件创建好的字段部件都会显示在字段编辑器的Fields列表框中,如果用户认为其中的一些字段部件不合适或不再需要时,可以单击这些不需要的字段部件,然后单击鼠标右键弹出一佣弹出式菜单,从弹出式菜单中选择Delete菜单项,便可删除相应的字段部件,如果在弹出式菜单中单击Select All菜单项,然后选择Delete菜单项,这样会删除已创建好的所有的字段部件.某一个字段部件被删除以后,通过单击Add Fields菜单项可以重

第十五章-数据访问部件的应用及编程(三)(3)

15.6.1.4 字段部件的访问 字段部件对应着数据库表中实际的字段,用户要读写数据库表中的字段值其实是通过访问相应的字段部件进行的.在前面的章节中我们介绍过在Delphi的数据库应用程序中有两类字段部件:一类是利用字段编辑器创建的永久性字段部件:另一类是随着数据集部件被激活(被打开)而动态生成的字段部件.对于永久性字段部件的访问可以直接调用使用字段部件的名字进行.假设我们在设计阶段利用字段编辑器创建了对应于Customer.DB表中Company字段的字段部件Table1Company,下面的

第十五章-数据访问部件的应用及编程(三)(1)

字段部件在应用程序中始终是不可见的部件.在程序运行过程中是如此,在程序设计阶段也是如此,但是它在应用中起着非常重要的作用,可以说它是所有数据浏览部件从数据库表中显示.编辑数据的基础.这是因为字段部件直接对应着数据库表中的字段,浏览和修改表中的数据必须要通过字段部件,同时字段部件所拥有的属性可以用来说明数据库表中对应的字段的数据类型.当前的字段值.显示格式.编辑格式等,字段部件的事件如OnValidate可以用来设定输入字段值时进行有效性检验. 数据库表的每一列在应用程序中都有其对应的一个字段部件

第十五章-数据访问部件的应用及编程(二)(1)

数据集部件TTable或TQuery具有很多的事件.为这些事件编写相应的程序代码可以进行有效性验证.计算可计算字段的值.确认对数据库表的多种操作等等.这些事件及其描述如表15.4所示. 表15.4 数据集部件常用的事件 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 事 件 描 述 ─────────────────────────────────── BeforeOpen,Afteropen 在数据集部件被打开之前/之后被触发 ─────────────────────

第十五章-数据访问部件的应用及编程(二)(4)

15.5.1 TDataSource部件的属性 TDataSource部件除了其他部件都拥有的Name属性和Tag属性之外,主要有下面几个属性: DataSet属性:该属性说明TDataSource部件从中获取数据的数据集的名字,它可以是TTable部件的名字,也可以是TQuery部件的名字,甚至还可以指定其他窗体内的数据集作为该属性的值,如在下面的程序中我们指定窗体Form2中的table1作为窗体Form1中的DataSource1的DataSet属性值: TForm1.Formcreate

第十五章-数据访问部件的应用及编程(二)(3)

15.4.2.2 查找数据库表中的记录 如果想查找数据库表中的记录,必须想指定查找记录的一些字段的字段值,然后在表中进行检索,检索出与查找值相匹配的记录来.如果我们是在Paradox或dBASE数据库中的表中查找记录,那么查找值所对应的字段必须是表中的关键字段或辅助索引字段.如果查找SQL数据库服务器中的表,那么查找值必须是表的IndexFieldNames属性中指定的字段. Delphi提供了两种方式在数据库表中查找记录:Goto方式和Find方式.这两种方式十分相似,它们的主要区别在于为查找

第十五章-数据访问部件的应用及编程(一)(4)

SetRecords方法:调用该方法可以修改表中当前记录的多个字段的值,调用该方法之前必须将数据集部件置成编辑状态,调用该方法之后,还要调用post方法,才能真正将当前记录的修改写回数据库表.调用SetRecord方法时,被修改的字段值必须要与表中实际存在的字段名对应,并且数据类型要相匹配.例如,下面的代码是修改上面刚刚插入的那条记录. Table1.Edit; Tabel1.SetRecord(, , ,9600000,1200000000); Tabel1.post; 这一段代码是修改上面刚

第十五章-数据访问部件的应用及编程(三)(2)

表15.6中的属性并不是所有类型的字段部件都拥有的,如一个TStringField类型的字段部件是没有Currency.MaxValue.MinValue和DisplayFormat属性的,一个TFloatField类型的字段部件是没有Size属性的. 对于布尔型属性,在设计过程中的Object Inspector中双击该属性,该属性的值将会在True和False之间来回切换,其他属性需要用户输入属性值或从下拉式列表框中选取属性值.所有的属性都可以通过程序代码进行设置.大多数属性可以独立地设置,

第十五章-数据访问部件的应用及编程(二)(2)

15.4.2 TTable部件的方法及应用 15.4.2.1 设定数据库表的使用范围 在我们实际应用中的数据库表中常常存放着大量的数据信息,其中包含着很多的记录,而我们的应用程序可能只需对其中一部分记录进行操作,因此,为应用程序指定一个使用范围就显得特别重要了,为方便有效地指定数据库表的使用范围Delphi为TTable部件提供了下列方法供用户使用: ● SetRangeStart和EditRangeStart方法 ● SetRangeEnd和EditRangeEnd方法 ● SetRange(