第7章用TADOTable组件操纵数据

上传人:汽*** 文档编号:568254988 上传时间:2024-07-23 格式:PPT 页数:39 大小:821KB
返回 下载 相关 举报
第7章用TADOTable组件操纵数据_第1页
第1页 / 共39页
第7章用TADOTable组件操纵数据_第2页
第2页 / 共39页
第7章用TADOTable组件操纵数据_第3页
第3页 / 共39页
第7章用TADOTable组件操纵数据_第4页
第4页 / 共39页
第7章用TADOTable组件操纵数据_第5页
第5页 / 共39页
点击查看更多>>
资源描述

《第7章用TADOTable组件操纵数据》由会员分享,可在线阅读,更多相关《第7章用TADOTable组件操纵数据(39页珍藏版)》请在金锄头文库上搜索。

1、潭哎呜眼逊咏唯系牧卢槐磁夏忧狭襄齿桂咕心符胳抑乖郊烙尼显篡号巳盐第7章用TADOTable组件操纵数据第7章用TADOTable组件操纵数据第第7章章 用用TADOTable组件操纵数据组件操纵数据 本章主要内容:TADOTable组件概述记录的读取与修改记录的添加与删除数据查询记录指针数据过滤涟腑银撞弄站纸诺读参崭盖裔唾采岁存踞京巳嫉扒翁琼长沽韭懦蛛罕纺旦第7章用TADOTable组件操纵数据第7章用TADOTable组件操纵数据7.1 TADOTable组件概述 作为数据集组件,TADOTable、TADODataSet、TADOQuery和TADOStoreProc 组件都是继承自父类T

2、CustomADODataSet,TCustomADODataSet是由TDataSet继承而来,如图7-1所示。所以它们在属性、事件及方法上有许多相同的地方。TADOTable 组件只能通过ADO 访问数据库中单个数据表的数据 喇返震姚瘦蜂轨势出蘑妨篱矾妥幸给橱摆耗腋繁算奉织刁郴椰缨倘半椿宫第7章用TADOTable组件操纵数据第7章用TADOTable组件操纵数据7.1 TADOTable组件概述7.1.1 TADOTable组件的属性组件的属性1. ADO数据集组件的共同属性属 性说 明ActiveActive属性指定数据集是否处于打开状态。设置Active属性为True,则数据集被打开

3、;设置Active属性为False,则数据集被关闭。StateState属性表明了当前数据集的状态CacheSize指定数据集的缓冲区大小。CommandTimeoutCommandTimeout属性是一个整型数,指定执行一个命令的最大允许时间,默认值是30秒。Connection指定所使用的数据源连接组件的名称,即TADOConnection 组件的名称。ConnectionString即连接字符串,用于指定数据库的连接信息。CursorLocation指定数据库记录指针是采用客户端模式还是服务器端模式。CursorType指定在数据集中使用的记录指针类型。AutoCalcFields设为

4、True 则允许应用程序触发OnCalcFields事件。BOF为True时,表示当前指针指向第一条记录,否则为False。EOF为True时,表示当前指针指向最后一条记录,否则为False。Bookmark在数据集中设定标记,用于在一个数据集中获得或者设置当前记录。Filter设置过滤条件。粮煽悉翠惫眩射悄缸龙柳产兵玉鲸吊罩瑚奋京兔冠或馈休窃鸭诵丰或逗军第7章用TADOTable组件操纵数据第7章用TADOTable组件操纵数据7.1 TADOTable组件概述Filtered相当于过滤的开关,当Filtered属性的值为True时,数据集从数据库中获取符合条件的记录;当Filtered属性

5、的值为False时不执行过滤。FilterOptions确定过滤方式。FieldCount返回该数据集的字段数。FieldDefList返回数据集字段定义列表。FieldDefs表明数据集中字段的定义信息。如字段的数据类型、数据长度、名称等。FieldList数据集中字段组件的连续列表。Fields数据集中字段的集合,用于访问数据集中的字段。FieldValues可访问当前记录所有字段值列表。Found表示FindFirst、FindNext、FindLast或者FindPrior是否成功。IndexName指定当前使用的索引。LockType指定了数据集打开数据库时,对数据表中的记录的锁定类

6、型。MaxRecords指定记录集中一次允许从数据库中返回的最大记录数。 默认值为0,表示不限制返回行数。Modified表示数据集是否被更改了。布尔型。Name数据集组件名称RecNo数据集的记录号。RecordCount与数据集相关的记录总数。RecordSize表示数据集中记录缓冲区的大小。跌敞拎钢噶法耸石捏变米草娱臀轿瘴肮侣狭漂立枷迟戌碑竞馆谜铀粪珍稿第7章用TADOTable组件操纵数据第7章用TADOTable组件操纵数据7.1 TADOTable组件概述2. 对重要属性的说明(1)Active属性Active属性确定数据集是否处于打开状态。设置Active属性为True,则数据集

7、被打开,相当于调用Open方法,可以对数据库进行读或写操作;设置Active属性为False,则数据集被关闭,相当于调用Close方法。设置Active为True,将触发BeforeOpen事件,然后设置state属性为dsBrowse,打开一个数据库游标,然后触发AfterOpen事件。设置Active为False,将触发BeforeClose事件,然后设置state属性为dsInactive,最后触发AfterClose事件。在更改影响到数据库的状态或数据显示组件的状态的数据集属性时,要提前将数据集的Active属性设置为False。 冷成纸景剪禾赫呕贮鲁颠孤削美吊稿县衬呐箱尾至劲痪增厅海

8、擎落搔啸叭第7章用TADOTable组件操纵数据第7章用TADOTable组件操纵数据7.1 TADOTable组件概述(2) State属性 State属性表明了当前数据集的状态,其取值的含义见表。状态值含 义dsInactive数据集处于关闭状态dsSetKey数据集处于查找键状态dsBrowse数据集处于浏览状态,用户可以浏览数据,但不能修改dsEdit数据集处于编程状态dsInsert数据集处于插入状态dsCalcFields数据集处于计算字段数据时的状态,这时不能修改数据dsFilter数据集处于过滤状态,可以显示数据,不能修改dsNewValue这是一个临时状态,当某个字段对应的T

9、Field组件的NewValue属性被修改时数据集处于这个状态。dsOldValue这是一个临时状态,当某个字段对应的TField组件的OldValue属性被修改时数据集处于这个状态。dsCurValue这是一个临时状态,当某个字段对应的TField组件的CurValue属性被修改时数据集处于这个状态。dsBlockRead数据集处于禁止读取状态dsInternalCalc数据集处于内部计算状态dsOpening数据集处于正被打开的状态嗽蔬冒巫锋六缩卒劝练范麻卓造湾愉对暑拒彦董涎寝敝汪赁汝顾蝉虱蝴淹第7章用TADOTable组件操纵数据第7章用TADOTable组件操纵数据7.1 TADOTa

10、ble组件概述(3) Connection属性和ConnectionString属性指定所使用的数据源连接组件的名称,即TADOConnection 组件的名称。 (4) CacheSize属性指定数据集的缓冲区大小。数据集首先把数据从数据库中取出,然后保存在内存的一块区域中,这块内存区域就是所谓的缓冲区。如果设置CacheSize属性值为20则表示数据集将一次从数据库中提取20条记录,并将这 20 条记录保存在缓冲去中。缺省值为1,也是其最小值。 (5) CursorLocation属性指定数据库游标是采用客户端模式还是服务器端模式。clUseServer 使用服务器端的数据库游标,适用于数

11、据量大的数据集;clUseClient 使用客户端的数据库游标的时候,数据将被下载到本地计算机上,并 在本地进行操作; 唁委汞例解偿满防涣拆环磁嫉嗡肘鲁痪梭吁阶盟仅滩撰汤仰誉坟扰癣历败第7章用TADOTable组件操纵数据第7章用TADOTable组件操纵数据7.1 TADOTable组件概述(6) AutoCalcFields属性该属属设为 True 则允许应用程序触发OnCalcFields事件。计算字段依赖于当前记录的一个或多个字段,通过已有的字段数据进行计算。(7) BOF属性和EOF属性BOF属性和EOF属性用于判断当前记录指针的位置是否位于文件开始和结束处。它们都是只读的,为Boo

12、lean型。BOF属性为True时,表示当前指针指向第一条记录。EOF属性为True时,表示当前指针指向最后一条记录。 例如:if ADOTable1.BOF and ADOTable1.EOF then ShowMessage(数据集是空的。); (8) Fields属性数据集中的字段集合,用于访问数据集中的字段。 刽萎壕缕拔撅猿谁杠蛙艺唤旦盒簿芬菱隧榴移邮尤闪饲题祥改芜撬安柄姐第7章用TADOTable组件操纵数据第7章用TADOTable组件操纵数据7.1 TADOTable组件概述例如:Edit1.Text:=ADOTable1.Fields.Fields6.AsString; /读取

13、字段值ADOTable1.Edit; /将数据集设为编辑状态ADOTable1.Fields.Fields6.AsString:=Edit1.Text; /设置字段值ADOTable1.Post; /提交到数据库保存硷康尿堂狭稳鼠赎莉厦那姬眨更堰绝闯挫炙语灼醉攘奏隙伪尔孵目晃涉奴第7章用TADOTable组件操纵数据第7章用TADOTable组件操纵数据7.1 TADOTable组件概述3. TADOTable组件特有的属性(1) MasterSource属性指定一个数据源组件用于主-细表关系。该数据源组件所连接的数据集组件将作为主表用于与本数据集组件建立主-细表关系。(2) ReadOnly

14、属性指定数据集中的数据是否只读。(3) TableDirect属性指定这个表是通过表名访问还是通过SQL语句访问(仅限Select语句)。TableDirect属性为True表示可以通过SQL语句访问,为False,则只能通过表名访问。默认为False。(4) TableName属性指定数据表名,数据集从中读取数据。钻纪务喧蛀咯捞磷毙汾颖袭暗卉肚犯芋译币著理覆签氓愉庐器疙舶略票现第7章用TADOTable组件操纵数据第7章用TADOTable组件操纵数据7.1 TADOTable组件概述7.1.2 TADOTable组件的方法组件的方法1. ADO数据集类组件的共同方法 方 法说 明Activ

15、eBuffer返回一个PChar,包含激活记录的数据Append添加一个新的记录到数据集中AppendRecord添加一个新的记录到数据集中。以数组参数传递来的值填充字段BookmarkValid该方法传递一个Bookmark参数,如果此Bookmark在数据集中有效则返回TrueCancel取消对数据集的修改,并设置数据集的状态为dsBrowseCancelBatch在批更新模式下,撤销一批正等待处理的更新CancelUpdates撤消一个准备执行的更新操作。用于一般更新模式,在Post执行之前调用Clone克隆另外一个数据集到当前调用组件CheckBrowseMode当前记录更改时,自动提

16、交或取消数据更改。ClearFields清除激活记录的所有字段值Close关闭数据集CompareBookmarks比较两个书签,如果这两个书签引用同样的记录则返回0,如果第一个书签指定所引用的记录在数据集中的位置比第二个书签在数据集中的位置靠前则返回一个小于0的值,否则返回一个大于0的值ControlsDisabledBoolean特性,表示相应的控件是否失效犀酚绒判鸥法重器透紊栅她圣腕睬痉败捞御炼符蔷坍烟仍薪烂孺链诱赞廉第7章用TADOTable组件操纵数据第7章用TADOTable组件操纵数据7.1 TADOTable组件概述方 法说 明Create构造函数CreateBlobStrea

17、m从一个Field参数创建一个BlobStreamCursorPosChanged使内部光标定位无效Delete删除当前的记录DeleteRecords删除记录集中的一行或多行记录。Destroy析构函数DisableControls在更新过程中使相应的控件无效Edit将记录的状态设置为dsEdit;记录在编辑模式下EnableControls使相应的控件有效FieldByName返回动态的TField,通过字段名搜索FindField如果找到指定的字段名则返回一个TField;否则返回nilFindFirst返回一个Boolean值,表示查找的成功或者失败;将光标定位在数据集中的第一个记录上

18、FindLast返回一个Boolean值,表示查找的成功或者失败;将光标定位在数据集中的最后一个记录上FindNext返回一个Boolean值,表示查找的成功或者失败;将光标定位在数据集中当前记录的下一个记录上饮怖藩彪杏过僚貉富貉颧羞斑贬掺家奶凌承幌蘑敏窜激章拒盔澎灯夹擦跳第7章用TADOTable组件操纵数据第7章用TADOTable组件操纵数据7.1 TADOTable组件概述方 法说 明FindPrior返回一个Boolean值,表示查找的成功或者失败;将光标定位在数据集中当前记录的前一个记录上First将光标定位在第一条记录上FreeBookmark该方法传递一个用GetBookmar

19、k方法返回的书签,释放这个书签GetBlobFieldData返回BLOB字段值,根据FieldNo将值返回到一个字节数组:TBlobFieldDataGetBookmark返回代表当前记录的书签GetCurrentRecord返回一个Boolean值,表示Buffer参数是否被当前记录缓冲区的值所填充GetDetailDataSets用每一个嵌套的数据集填充TList参数GetDetailLinkFields用字段组件(此组件构成了一个主细节关系)填充两个TList参数GetFieldData如果成功的话以字段数据填充一个缓冲区GetFieldList将所有由FieldNames参数指定的字

20、段组件拷贝到TList参数中GetFieldNames返回数据集中所有字段名的一个列表,保存在TStrings参数中GetIndexNames获取当前数据集的索引名称的列表。GotoBookmark将光标定位到由Bookmark参数指定的记录中Insert将数据集设置为插入模式(State = dsInsert)InsertRecord插入一个记录,字段值由传递过来的变体数的常量数组填充镐慢中菱族柏区排峻豌培地攒肉烽涟恢逝犊呈者哨扎勾样胆娶吭囚部渝牡第7章用TADOTable组件操纵数据第7章用TADOTable组件操纵数据7.1 TADOTable组件概述方 法说 明IsEmpty一个Boo

21、lean值,表示数据集是否为空IsLinkedTo如果数据集已经连接到参数TDataSource,则返回TrueIsSequenced如果数据库表格由数据集表示则返回True,表示记录号码是否代表记录的顺序Last将光标定位到数据集中的最后一个记录LoadFromFile从一个文件中读以数据到ADO数据集中。Locate定位一条记录并把这条记录作为当前记录。如果找到记录则返回TrueLookup由找到的记录中返回指定字段的值MoveBy将光标定位到由当前记录加上偏移量所代表的记录上Next将光标定位到下一个记录Open打开数据集Post将记录中的修改发送到数据库Prior将光标定位到前一个记录

22、Refresh重新从数据库读取数据Requery刷新记录集,可以保持数据集的数据和数据库一致Resync从数据库中重新获取前一个、当前的和下一个记录斤虎化弗约向币墅壳迅闪坪东泻鸿瞥度憨实这泰犊褂磨釜胀痈渠虎寻晋席第7章用TADOTable组件操纵数据第7章用TADOTable组件操纵数据7.1 TADOTable组件概述方 法说 明SaveToFile与LoadFromFile方法对应,将一个ADO数据集中的数据保存到一个文件中Seek使用当前索引搜索记录,并移动数据集的指针。SetFields变体数组参数(这个数组中的值被传递到记录的字段中)设置字段值;状态必须设置为dsEdit或者dsIn

23、sertTranslate拷贝源字符串到目标字符串,使字符串值在ANSI字符映射和BDE字符映射之间进行转换UpdateBatch在批更新模式下,将一批更新提交到数据库。UpdateCursorPos内部使用,以确保该光标被定位在激活的记录上UpdateRecord用于更新数据感知控件和数据集,以反映记录的更改UpdateStatus高速缓存的记录更新状态(usUnmodified,usModified,usInserted,usDeleted)椭疼鹤急炉庞范避辱舶穴减押熊鹃捐饥沁洋陷乡版胎笑状谱盂嫁红晓梧锈第7章用TADOTable组件操纵数据第7章用TADOTable组件操纵数据7.1 T

24、ADOTable组件概述2. 重要方法的说明及使用(1) 打开(Open)和关闭(Close)数据集的方法调用Open方法将Active属性设置为True。当Active属性为True时,可以从数据库中读取数据或向数据库中写数据。调用Close方法设置Active属性值为False。当Active属性值为False时,数据集将被关闭,无法对数据库进行读/写操作。 例如:在实际程序代码中,语句: ADOTable1.Open;就等价于语句:ADOTable1.Active:=True;而语句:ADOTable.Close;等价于语句:ADOTable1.Active:=False;详贡擅绣秩咯沧

25、逢络莎戈裔塌溃畴耀战争休鳞李韧狗青取牛稗芒栽冕株杀第7章用TADOTable组件操纵数据第7章用TADOTable组件操纵数据7.1 TADOTable组件概述(2) DeleteRecords方法删除记录集中的记录。(3) SaveToFile方法 把当前数据集中的数据按照指定的格式保存到指定的文件中 ,FileName为指定的文件名,Format为保存的文件格式。(4) GetIndexNames方法 查询表中的全部索引名,返回值将保存在参数List中,调用方法为:ADODataSet1.GetIndexNames(ListBox1.Items); (5) FieldByName方法 Fi

26、eldByName方法是根据一个特定的字段名查询一个字段。FieldName是一个已存在的字段名。当只知道字段名时,可以调用FieldByName来获取关于该字段的信息。 乒甸筛朱迹团菲了炬扩吼郴续焙剁受飞札踌泵辨塔冤蜒矗嫉驹浙厄浙搞勺第7章用TADOTable组件操纵数据第7章用TADOTable组件操纵数据7.1 TADOTable组件概述(6) 关于立即更新和批更新ADO数据集可支持两类更新模式:立即更新和批更新。使用立即更新,一旦调用Update方法,对数据的所有更改被立即写入数据库。使用批更新,可以将多个记录的更改存入缓存,然后用UpdateBatch方法一次写入到数据库。默认情况下

27、为立即更新模式。要设置为批更新模式,必须设置下列属性的值:CursorType属性为ctKeySet(默认)或ctStatic;LockType属性为ltBatchOptimistic。 精哥滤局踏残旦垮逞董潦狠玫卸铱独超伸莹边舒目萌屁玫肉判调颜焊僧棠第7章用TADOTable组件操纵数据第7章用TADOTable组件操纵数据7.1 TADOTable组件概述7.1.3 TADOTable组件的事件组件的事件TADOTable组件与其他ADO数据集组件具有完全相同的事件,如下表所示 。事 件说 明AfterCancel在Cancel方法之后触发该事件AfterClose在Close方法之后触发

28、该事件AfterDelete在Delete方法之后触发该事件AfterEdit在数据集设置为编辑模式之后触发该事件AfterInsert当一个新记录插入到该数据集中时触发该事件AfterOpen打开数据集之后触发该事件AfterPost在Post方法之后触发该事件(比如说,当当前记录被修改了且激活的记录被更新的时候将触发该事件)AfterRefreshRefresh方法之后触发该事件AfterScroll当光标定位被改变的时候触发该事件BeforeCancel当调用Cancel方法的时候,在执行Cancel行为之前触发该事件BeforeClose当调用Close方法的时候,在执行Close行为

29、之前触发该事件BeforeDelete当调用Delete方法的时候,在执行Delete行为之前触发该事件愉溃伦癣孟骡赠胆舒洼烫县奏挚殃币碑陵耙弱举甫彼棒腊酋咖噬枕茬妊封第7章用TADOTable组件操纵数据第7章用TADOTable组件操纵数据7.1 TADOTable组件概述事 件说 明BeforeEdit当调用Edit方法的时候,在执行Edit行为之前触发该事件BeforeInsert当调用Insert方法的时候,在记录被插入到数据集之前触发该事件BeforeOpen当调用open方法的时候,在数据集被打开之前触发该事件BeforePost当调用Post方法的时候,在记录被发送到数据集之前

30、触发该事件BeforeScroll当调用Scroll的时候,在光标位置改变之前触发该事件OnCalcFields当Calculated字段需要指定一个值的时候触发该事件OnDeleteError当执行Delete操作的时候,如果发生了一个EDatabaseEngine异常,将由CheckOperation触发该事件OnEditError在修改或添加记录时产生了意外会触发该事件OnEndOfRecordset在记录指针试图移动到末尾之后时发生OnFetchComplete当一次从数据库读取数据的操作完成时触发该事件OnFetchProgress在异步方式运行时,数据集组件读取数据时会周期性触发该

31、事件OnFieldChangeComplete当某个字段被更新后触发该事件OnFilterRecord编写这个事件处理程序来测试过滤条件对于每个记录的过滤过程OnMoveComplete在一次记录指针移动完成后触发该事件OnNewRecord当一个新的记录添加到数据集中的时候触发该事件OnPostError在提交修改的记录时产生了意外会触发该事件蛮书拿箔达邯瑰埔抬赃番蝶谩巡抿火姥仟隙骏程险姓反阂痹妊美秀恍捏矢第7章用TADOTable组件操纵数据第7章用TADOTable组件操纵数据7.1 TADOTable组件概述事 件说 明OnRecordChangeComplete当一条记录被修改完成后

32、触发该事件OnRecordsetChangeComplete当记录刷新后触发该事件OnRecordsetCreate在记录集被初始化完成后触发该事件OnWillChangeField在字段更新之前发生OnWillChangeRecord在记录被改变之前发生OnWillChangeRecordset在记录集被更新之前发生OnWillMove在移动记录指针之前发生湃隋邓臀笋棋街恩熊扎宴滚肮哗阵糯杏芭犹稠险诣臻椎婆缩帚漓烽腆遁祈第7章用TADOTable组件操纵数据第7章用TADOTable组件操纵数据7.2 记录的读取与修改 7.2.1 Field对象对象Field对象对应着数据集中的字段。Fie

33、ld对象可以在应用程序运行的过程中动态地产生,也可以利用字段编辑器创建成为永久字段。TField类封装了所有字段操作的行为和数据类型,它的属性、方法和事件被用于:(1)改变数据集中字段的值。(2)将字段的值由一种类型转换为另一种类型。(3)验证用户为字段键入的数据。(4)定义字段中的数据如何显示和编辑。(5)计算字段的值,当OnCalcFields产生时。7.2.2 使用Fields属性 TFields有两个基本属生。一个是Count属性,指明Fields对象中的字段数;一个是Fields属性,包含Fields对象铰造畦绷篇逗游指害旁奋韩荡斧纬石哎霖殉赎搅今女遭兴泉础肉错拭气橇第7章用TADO

34、Table组件操纵数据第7章用TADOTable组件操纵数据7.2 记录的读取与修改所管理的字段列表,通过指定索引号,可以访问单字段,索引号从0开始。 7.2.3 使用使用FieldValues属性属性使用FieldValues属性,可以通过字段名读取字段的值。如果要显示name字段的内容,可使用语句:showmessage(adotable1.FieldValuesname);FieldValues是数据集默认属性,因此,使用下面的语句效果是一样的。showmessage(adotable1name);7.2.4 使用FieldByName方法 FieldByName方法返回指定名称的字段对

35、象,因此,可以使用FieldByName方法完成对字段的操作。 窿猴材捆跨佛黄讫谎季侵炳伶茫沤谷牺涝舀扇闭搪嘘楞横偿苫误蘸谰幽农第7章用TADOTable组件操纵数据第7章用TADOTable组件操纵数据7.3 记录的添加与删除记录的添加与删除7.3.1 记录的添加记录的添加可以使用数据集组件的Append、Insert、AppendRecord、InsertRecord方法添加记录,其中Append是在表末尾添加一条空白记录,Insert是在表的当前位置添加一条空白记录,AppendRecord用于在表末追加一条记录并对其赋值,InsertRecord是在表的当前位置添加一条记录并对其赋值。

36、 1. 使用Append和Insert方法添加记录2. 使用AppendRecord、InsertRecord方法添加记录7.3.2 记录的删除记录的删除1. 使用Delete方法2. 使用DeleteRecords方法 (1) 删除当前记录(2) 删除所有记录年辰住创殷海意份疥物共贤褂荣世呸佰眩霜谈乞风板案宠撰肉铱鬃菜姥乓第7章用TADOTable组件操纵数据第7章用TADOTable组件操纵数据7.4 数据查询 ADO数据集组件提供的有关数据查询的方法有3个:Locate方法、lookup方法和Seek方法。 7.4.1 Locate方法方法定位一条记录并把这条记录作为当前记录。7.4.2

37、 Lookup方法方法搜索符合条件的记录,获取指定字段的值。找到记录后,记录指针不移动。 7.4.3 Seek方法方法搜索记录并移动数据集的指针。 沮胺爷侄惭郝挨孪牧孽厩本涡抱惫姚嫁榔涕盔戌勃列贱吨咋稗儿柒昧呆缝第7章用TADOTable组件操纵数据第7章用TADOTable组件操纵数据7.5 记录指针 每一个激活的数据集都有一个记录指针指向数据集中当前记录。在窗体中,TDBEdit、TDBText、TEBMemo等组件显示的数据就是当前记录的字段值。 通过移动记录指针,可以改变当前记录。 例如:在数据集组件ADOTable1中移动记录指针到第一条记录:ADOTable1.First;移动记录

38、指针到最后一条记录:ADOTable1.Last;向后移一条记录:ADOTable.Next;向前移一条记录:ADOTable.Prior;向前移2条记录:蚀甭搔乡肿弛均痈珐蕴诫边锰眩互婿聘恋蔓吉媳慈普芹蟹钉租买睹冶哥脉第7章用TADOTable组件操纵数据第7章用TADOTable组件操纵数据7.5 记录指针ADOTable1.MoveBy(-2);判断数据集为空:if ADOTable1.Bof and ADOTable1.eof then ShowMessage(记录集为空。); 尾勃倪系雾拾僳带业弗娱枕现勃钞谣坛誓梦喘蛮喊布酚葫肌湃剥焊鉴揉弟第7章用TADOTable组件操纵数据第7章

39、用TADOTable组件操纵数据7.6 数据过滤数据过滤当我们在操作数据集时,往往需要对数据进行筛选。选用数据集组件Filter属性、Filtered属性、FilterOptions属性可以实现该功能,其行为类似于SQL语句中的WHERE子句。7.6.1 利用利用TADOTable的的Filter属性和属性和Filtered属性属性1. 在设计时设置Filter属性例如,设置Filter属性为:Country=China,然后改变Filtered属性为True。则只能看到对应的Country字段内容为China的记录。FilterOptions属性确定过滤方式,可以包含2个选项,若包含foCa

40、seInsensitive,表示忽略字母大小写;若包含foNoPartialCompare,表示可以用来进行局部匹配,把星号(“*”)当作一个字符,否则星号(“*”) 被当作一个掩码字符。折孪宙僚敞蛆拈拖垦旬羊幕忿锤恫拈熊杆厌蒲镊运楔梦念弄妖熄幢季缺个第7章用TADOTable组件操纵数据第7章用TADOTable组件操纵数据7.6 数据过滤数据过滤2. 在程序运行期间进行动态过滤要在程序运行时改变Filter属性,这包括两种情况: (1)操作符右边为常量,例如:with ADODataSet1 dobegin Filtered:= False; Filter := State=+Quoted

41、Str(CA)+ OR+State=+QuotedStr(HI); Filtered := True;end; QuotedStr()的作用是将字符串转换为带引号的字符串。也可以使用双单引号。比如:ADOtable1.Filter := State=CA OR State=HI;祁刁萍殊绽肾枝漏遁卫扇疹旬巨靖粤恕印遮盏娥断爵触痰尔吏寒医鼻铡结第7章用TADOTable组件操纵数据第7章用TADOTable组件操纵数据7.6 数据过滤数据过滤(2)操作符右边不为常量,可能是通过一个变量指定的值,或由一输入框给出的值。这时需要用到Format函数。其代码形式为:procedure TForm1.f

42、ilterClick(Sender: TObject);var StateValue:string;begin StateValue:=CA; ADOtable1.filtered:=False; ADOtable1.Filter:=Format(State=%s,StateValue); /可改为:ADOtable1.Filter:= State=+QuotedStr(StateValue); ADOtable1.filtered:=True;end;良跟短翟逃鹅核铭苯寨躇皂丸递茄喊耐钵拾庸弛刽烫尤雪寇脖窍厩盖叫执第7章用TADOTable组件操纵数据第7章用TADOTable组件操纵数据7

43、.6 数据过滤数据过滤7.6.2 用用OnFilterRecord事件筛选事件筛选当Filtered属性由False变为True时触发该事件。在OnFilterRecord事件处理程序中可以设置筛选条件。例如: procedure TForm1.ADOTable1FilterRecord(DataSet: TDataSet; var Accept: Boolean);begin Accept:=DataSetState=CA;end; 骸魂壳或类澄摔澈毅形递忱幼斯胀罩嗓蠕藩鼻醒概传侠贱袍宋槽扎皂挞扎第7章用TADOTable组件操纵数据第7章用TADOTable组件操纵数据7. 应用实例应用实

44、例【例7-1】编写一应用程序,对dbdemos.mdb数据库中的表Customer进行以下操作:根据输入的CustNo修改Phone和Contact字段的内容。要完成以上功能,可以分两步操作:(1)用一个文本编辑框输入CustNo,根据输入的CustNo查询表customer中对应的记录。将Phone和Contact字段的值显示在另外两个文本编辑框中。(2)在文本编辑框中修改Phone和Contact的值后,再将修改后的内容写入到数据库中。为便于观察结果,在窗体中可放置一个DBGrid组件。【实现步骤】(1) 启动Delphi 7(2)新建应用程序涡艳滥抽似粟零归下筑站盈筑械返穗枪少函狰诣栈刑

45、反汰甭缠笆柔饲球翘第7章用TADOTable组件操纵数据第7章用TADOTable组件操纵数据7. 应用实例应用实例图7-2 窗体界面 (3)定制窗体窗体界面如图7-2所示。腆氨曹嫩立挡举拘胸莽防瓦钩子卵君吠趋垄旦惹榨项病奖三拘幻读阵声恩第7章用TADOTable组件操纵数据第7章用TADOTable组件操纵数据7. 应用实例应用实例组件名属 性属 性 值说 明ADOTable1ConnectionString使用连接串生成器建立数据库连接。TableNamecustomer指定打开的表名:customerActiveTrueDataSource1DataSetADOTable1指定使用的数据

46、集为ADOTable1。DBGrid1DataSourceDataSource1Label1Caption请输入CustNoLabel2CaptionPhone Label3CaptionContactEdit1TextEdit2TextEdit3TextButton1Caption查询Button2Caption修改表7-8 各组件属性设置筋考击翠杖典娶你写倦铆暮签戍聪檬籍泡氰终胳棒砸千矛粥蔫傻极滩罕巧第7章用TADOTable组件操纵数据第7章用TADOTable组件操纵数据7. 应用实例应用实例【例7-2】在浏览数据表Customer时,根据输入的Country值过滤记录。要完成以上功能

47、,可以用一个文本编辑框输入Country值,根据输入的Country来设置过滤条件。【实现步骤】(1) 启动Delphi 7(2)新建应用程序(3)定制窗体窗体界面如图7-3所示。 石磅鄙搽缕麻类尤袋辜阅揉反潍澈锣埂寇驯遵淀劈残滞卵芜舔盎趴填戍滩第7章用TADOTable组件操纵数据第7章用TADOTable组件操纵数据7. 应用实例应用实例图7-3 窗体界面 株那环曲拙订演柔杭芍年帜转诚炉共戳昂滓返造誓眺刘挞泼画拾挟啦旦蔑第7章用TADOTable组件操纵数据第7章用TADOTable组件操纵数据7. 应用实例应用实例组件名属 性属 性 值说 明ADOTable1ConnectionStri

48、ng使用连接串生成器建立数据库连接。TableNamecustomer指定打开的表名:customerActiveTrueDataSource1DataSetADOTable1指定使用的数据集为ADOTable1。DBGrid1DataSourceDataSource1GroupBox1Caption设置过滤Label1Caption请输入Country Edit1TextButton1Caption执行表7-9 各组件属性设置蔗牢民单轨漆篡茎淖隆烹赵木教遍护肛侄椽擒左龄幅瘁无酸拓援悟直倪姿第7章用TADOTable组件操纵数据第7章用TADOTable组件操纵数据7. 应用实例应用实例(4)

49、编写代码(5)运行程序挠醚尸涨组百镜菊篙膛池稼遂酶登纯怔皋仑佰突琐平嫌那煮遮亏蛤序舌蛔第7章用TADOTable组件操纵数据第7章用TADOTable组件操纵数据本章实训指导本章实训指导1. 理解数据集组件,了解数据集组件共有的方法、属性和事件。2. 掌握TADOTable组件操作数据的基本方法:读取与修改记录、添加与删除记录、查询记录、根据条件过滤记录。3. 理解指针的概念,掌握指针的基本操作。4. 使用所掌握的TADOTable组件的方法,为通讯录程序添加数据浏览和查询功能模块。滁淄闪题慈抒醋失食鲜求育署嘛怠愁碱绘争好简后名狈昧涅讥勾楚虚域偏第7章用TADOTable组件操纵数据第7章用TADOTable组件操纵数据

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 资格认证/考试 > 自考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号