TDataSet類由TBDEDataSet(BDE組件)、TCustomADODataSet(ADO組件)、TIBCustomDataSet(InterBase組件)、TCustomSQLDataSet(dbExpress組件)和TCustomClientDataSet子類組成。
下面介紹DataSet類中比較重要的屬性(可能會有取舍,等到真正做項目用到的時候在進行補充)
1.Active:判斷數據庫是否已打開;
2. Bof:判斷數據集的第一條記錄是否激活(且在以下狀態下為true:1.打開一個數據集;2.用First方法訪問數據集;3.使用Prior方法且該方法已失效;4.設置一個空范圍或數據集的setRange方法);
3. BookMark:在DataSet中設置一個書簽;
4. Buffers:在內部緩存中提供索引來存取記錄的緩沖區;
5. CurrentRecord:在記錄緩存區的內部緩存中的當前記錄的索引;
6. DataSource:表示其他提供值的數據集的數據源,其默認值為nil;
7. Eof:判斷數據集是否指向最后一條記錄(在以下狀態下為true:1.打開一個空的數據集;2.調用Last方法;3.調用next方法但當前記錄已經是最后一條記錄;4.對空范圍或記錄調用SetRange方法);
8. Found:移動到一個不同的記錄上是否成功;
9. IsUniDirectional:判斷數據集是否為TCustomSQLDataSet的子集;
10. Modifid:活動的記錄是否可以修改;
11. RecNo:返回在一個數據集中已活動的記錄條數;
12. RecordCount:與數據集關聯的記錄條數;
13. RecordSize:表示需要內部緩沖區的大小(在TDataSet中,RecordSize為0);
14.State:設定當前數據集的操作模式的狀態(打開一個數據集,狀態由dslnactive變成dsBrowse;編輯狀態(dsEdit);插入狀態(dsInsert);調用SetKey或SetRange(dsSetKey);Posting或canceling(由當前狀態變為dsBrowse);Closing數據集(由當前狀態變為dslnactive));
15.FieldValue:在數據集的活動記錄中提供對所有字段的值的訪問方法。(重要)
下面介紹TDataSet類中比較重要的方法:
1.ActiveBuffer:返回一個指向活動記錄緩存的指針。(經常與bookmark配合來記錄活動記錄緩存中bookmark的信息)
2.Append:添加一個新的、空的記錄到這個數據集的末尾。(重要)
2.1 AppendRecord:添加一個新的、空的記錄到數據集的末尾並自動post。例如
Customer.AppendRecord([CustNoEdit.Text,CoNameEdit.Text, AddrEdit.Text, Null, Null, Null, Null, Null, Null, DiscountEdit.Text]);
3.FieldByName:根據字段的名稱來訪問(只用用來訪問已存在的字段,否則會報EDatabaseError錯誤)。(重要)
4.Post:將已修改過的記錄寫入到數據庫或日志中[ADO組件直接將數據提交到數據庫服務器]。(重要)
procedure TForm1.Button1Click(Sender: TObject); begin SampleTable.Append; //添加一個新的記錄 SampleTable.FieldValues['ALPHANUMERIC'] := Edit1.text; //設定兩個字段並賦值 SampleTable.FieldValues['INTEGER'] := StrToInt(Edit2.text); SampleTable.Post; //提交記錄到數據庫或日志 end;
5.Cancel:如果活動的記錄沒有post,則可以取消活動的記錄。但如果記錄的狀態不為(dsEdit or dsInsert),則方法無效。(重要)
6.ClearFields:清空活動記錄的所有字段的值。
7.Close:關閉一個數據集。(重要)
8.Create:創建一個TDataSet對象。(重要)
9.Delete:刪除一個活動記錄並指針移動到DataSet對象的下一個記錄。(重要)
10.Destory:銷毀DataSet對象(通常情況下DataSet有系統自動回收)。(重要)
11.1 DisableControls:利用數據控件顯示與一個DataSet對象關聯的禁用數據。
11.2 EnableControls:與DisableControl剛好相反。
12.Edit:DataSet對象進入編輯狀態。(重要)
13.FindField:搜索指定DataSet的字段。(如果未找到,則返回nil)(重要)例如:
with Table1 do begin FindField('CustNo').AsString := '1234'; Fields[0].AsString := '1234'; end;
14.1 FindFirst:是否指定DataSet對象的第一條記錄,返回bool類型。(重要)
14.2 FindLast:與FindFirst方法剛好相反。(重要)
14.3 FindNext:判斷指針是否定位到DataSet對象的下一個數據記錄,返回bool類型。(重要)
14.4 FindPior:與FindNext方法剛好相反。(重要)
以上方法如返回false,則表示活動記錄為成功修改;返回true,則表示修改成功。
15. First:移動到DataSet的第一條記錄。調用該方法的目的是為了讓DataSet的第一條記錄設置為active。(重要)
16. 1 BookMarkVid:指定書簽的有效性。
16.2 CompareBookMarks:用虛方法來比較兩個書簽。(如果BookMark1>BookMark2,則CompareBookMarks(BookMark1,BookMark2)>0)
16.3 GetBookMark:為數據集的活動記錄分配標簽。(由TBookMark得到)
16.4 SetBookMark:為數據集的活動記錄設置標簽。
16.5 GotoBookMark:定位到數據集活動記錄被書簽標記的位置上。(重要)
16.6 FreeBookMark:釋放分配給指定標簽的內存。(重要)例如:
procedure TForm1.CopyDataClick(Sender: TObject); var SavePlace: TBookmark; PrevValue: Variant; begin with MyData do begin { get a bookmark so that we can return to the same record } SavePlace := GetBookmark; //得到一個標簽 try { move to prior record} FindPrior; { get the value } PrevValue := Fields[0].Value; {Move back to the bookmark this may not be the next record anymore if something else is changing the dataset asynchronously } GotoBookmark(SavePlace); { Set the value } Fields[0].Value := PrevValue; { Free the bookmark } finally FreeBookmark(SavePlace); end; end; end;
17. GetCurrentRecord:返回在緩存中的記錄。(如返回false,則表示緩存區填充失敗;如返回true,則緩存成功)(重要)
18. GetDetailDataSets:將不是嵌套的數據集填充到一個數據集列表中。
19. GetFiledData:在緩存中檢索當前字段的值。(返回bool值,如返回false,則表示值未被成功提取)
20.1 Insert:向數據集插入一個新的、空的記錄。(重要)
20.2 InsertRecord:向數據集插入一個新的、空的記錄並自動post。(重要)
21. IsEmpty:判斷數據集是否為空。(重要)
22. IsLinkedTo:判斷數據集是否通過DataSource連接。(重要)
23. Last:將指針移動到數據集的最后一條記錄。(重要)
24. MoveBy:從一個活動記錄移動到另一個記錄。(重要)
25. Next:移動到下一條記錄。(重要)
procedure TForm1.Button1Click(Sender: TObject); var i: Integer; begin with ProgressBar1 do begin Min := 0; Max := Customers.RecordCount; Customers.First; for i := Min to Max do begin Position := i; Customers.Next; end; end; end;
26. Open:打開數據集。(重要)