关于delphi数据集的详细网址说明
http://www.360doc.com/content/11/0906/17/7662927_146249467.shtml
关于delphi数据库编程
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组件的几种状态在调用相应的方法之后相互转化的关系。
图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