Delphi7數據庫編程之TDataSet(轉)


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:打開數據集。(重要)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM