Delphi数据集相关

关于delphi数据集的详细网址说明

http://www.360doc.com/content/11/0906/17/7662927_146249467.shtml

 

关于delphi数据库编程

http://ylilike.blog.163.com/blog/static/11503601200741710491414/?fromdm&fromSearch&isFromSearchEngine=yes

 

Delphi手动创建数据集

http://www.cnblogs.com/dashan9zj/articles/1386970.html


1、

delphi 中filter 和filtered 是用来干什么的

table1.filter:='id'''+edit1.text+'''';//设置数据集的过滤条件

table1.filterd:=true;//执行过滤。

t_user.open

补充:

如同在SQL语句里加上Where条件 。

追问:

是用 ID 列的数据和EDIT1里数据过滤?

回答:

比如如果edit1.text= 2

那么数据集控件就会过滤ID字段等于2的记录,并返回。

假如数据集的执行SQL语句是Select *From 表 。

就如同Select *From 表Where ID = 2



2、


TDataSet是不可见的组件,由它派生出来的两个重要组件是TTable 组件和TQuery组件,这两个组件有着许多共同的属性、方法和事件,习惯上我们把这两个组件统称为数据集组件。本节首先介绍TTable组件和TQuery组件共有的属性,然后重点介绍TTable组件和TQuery组件的属性及应用。

6.4.1 数据集组件的几种状态

因为数据集组件TTable和TQuery直接与磁盘上的实际数据库联系,这些组件中的数据对应于数据库表中的数据记录。为了便于应用程序对数据库文件中的数据进行读写操作,Delphi为TTable和TQuery设定了几种状态。数据集组件的状态及其含义见表6.6。

表6.6 TTable和TQuery的几种状态

状态

中文名称

含义

Inactive

非活动状态

TTable和TQuery组件对应的表是关闭的

Browse

浏览状态

当默认情况下,TTable和TQuery组件对应的表被打开时处于该状态,只能浏览表中的数据,不能修改或插入记录

Edit

编辑状态

能够浏览表中的记录而且能够修改当前的记录或删除记录

Insert

插入状态

能够在表中插入一条新记录或删除记录

SetKey

查找状态

在该状态下,可以调用FindKey,GotoKey,GotoNearest,FindNearest方法查找表中的记录,此状态只适用于TTable组件

CallFields

处理计算

字段状态

当TTable和TQuery组件中设置了计算字段,并且当组件的OnCalcFields事件处理程序被执行时,Delphi会自动将TTable和TQuery组件置为CallFields状态,以防止其他非计算字段的值被修改

当TTable和TQuery组件中设置了计算字段,并且当组件的OnCalcFields事件处理程序被执行时,Delphi会自动将TTable和TQuery组件置为CallFields状态,以防止其他非计算字段的值被修改

我们可以在应用程序中调用适当的方法来改变或切换TTable组件和TQuery组件的这几种状态。

数据集组件具有一个State属性,该属性的值表示当前数据集所处的状态。相应于数据集的几种状态,State属性可能的属性值有:dsInactive、dsBrowse、dsEdit、dsInsert、dsSetkey、dsCallFields。数据集组件还具有一个OnStateChange事件,数据集状态发生变化时,该事件就会被触发。

图6.14比较详细地阐述了TTable组件的几种状态在调用相应的方法之后相互转化的关系。

delphi数据集组件的几种状态 - 小月 - 小月

图6.14 TTable组件的状态转换图6.4.2 数据集组件的打开和关闭

数据集组件TTable或TQuery虽然直接与磁盘上的数据库表发生联系,但是应用程序通过数据集组件访问数据库中的数据时,必须把将要被访问的数据库表调入内存,也即将与TTable或TQuery组件相连接的数据库表调入内存。这一操作对数据集组件而言就是打开,反之则称为关闭。

1. 数据集组件的打开

Delphi为我们提供了两种方法打开数据集组件:

(1)通过设置数据集组件的Active属性为True来打开与数据集相连的数据库表。

代码如下所示:

Table1.Active := true;

Query1.Active := true;

这种方法可以在设计阶段进行,也可以在应用程序运行过程中通过程序进行。

(2)调用数据集组件的Open方法,打开与数据集组件相连的数据库表。

代码如下所示:

Table1.Open;

Query1.Open;

这种方法只能在程序运行过程中通过程序进行。

2. 数据集组件的关闭

同理Delphi同样提供了两种方法关闭数据集组件:

(1)设置数据集组件的Active属性为False,以关闭与数据集组件相连的数据库表。

代码如下所示:

Table1.Active := False;

Query1.Active := False;

(2)调用Close方法以关闭与数据集组件相连的表。

代码如下所示:

Table1.close;

Query1.close;6.4.3 数据集的导航

数据集中存放着数据库表中的多条数据记录。在我们的应用中,常常需要将记录指针定位到特定的记录上,数据记录的定位过程也称为数据库表的导航。Delphi为方便我们在数据集中定位记录指针,提供了表6.7所示的方法。

表6.7 Delphi的记录定位方法

方法

功能

First

移动记录指针到表中的第一条记录

Next

移动记录指针到表中的下一条记录

Prior

移动记录指针到表中的前一条记录

Last

移动记录指针到表中的最后一条记录

数据集组件中还有两个重要的属性,用于数据集的导航,它们是EOF属性和BOF属性。这两个属性都是布尔型变量,它们用来测试记录指针是否位于表中的最后一条或第一条记录。只有当记录指针位于表中最后一条记录时EOF的值才为True。同样,只有当记录指针位于表中第一条记录时BOF的值才为True。记录指针位于表中的其他记录位置时,EOF和BOF的值都为False。在一个空表中EOF和BOF的值都为True。

下面是利用数据集组件的方法和属性在数据集中导航的例子。这一段程序代码提供了一个简单的方法遍历Table1中的全部记录:

Table1.DisableControls; {切断Table1与其他数据控制组件的联系}

Table1.First; {将当前指针移到表中的第一条记录}

While not Table1.EOF do {遍历表中的记录,直到最后一条记录}

Begin

<处理当前的记录> {对当前的记录进行处理}

Table1.Next; {移动当前指针到表中的下一条记录}

end;

Table1.enableControls; {恢复Table1与其他数据控制组件的联系}

Next方法和Prior方法在数据集的导航中一次只能向前、向后移动一步记录指针。Delphi还提供一个MoveBy函数,调用该函数可以向前或向后将记录指针移动到用户指定的地方,也即这一次可以移动多步。MoveBy函数只有一个整数型参数,当参数是正整数时,将记录指针向前移动,当参数是负整数时,将记录指针向后移动。

例如,在Table1中将记录指针向前移动两条记录的代码为:

Table1.MoveBy(2);

在Table1中将记录指针向后移动两条记录的代码为:

Table1.MoveBy(-2);

显然,Table1.MoveBy(1)和Table1.Next的作用是一样的,Table1.MoveBy(-1)和Table1.Prior的作用也是一样的。



3、

关于delphi数据集的详细网址说明

http://www.360doc.com/content/11/0906/17/7662927_146249467.shtml

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值