九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
Delphi中ClientDataSet的用法小結(jié)

      TClientDataSet控件繼承自TDataSet,其數(shù)據(jù)存儲文件格式擴(kuò)展名為 .cds,是基于文件型數(shù)據(jù)存儲和操作的控件。該控件封裝了對數(shù)據(jù)進(jìn)行操作處理的接口和功能,而本身并不依賴上述幾種數(shù)據(jù)庫驅(qū)動(dòng)程序,基本上能滿足單機(jī)"瘦"數(shù)據(jù)庫應(yīng)用程序的需要。

     一、TClientDataSet的基本屬性和方法介紹

    1、FieldDefs: 字段定義列表屬性

     開發(fā)者可通過單擊屬性編輯器中該屬性編輯按鈕,或在該控件上單擊右鍵選擇彈出菜單中的"Fields Editor"菜單進(jìn)行字段編輯。設(shè)置完此屬性后,實(shí)際上就相當(dāng)于定義了表的結(jié)構(gòu);如果想裝入已有的

使用注意:

  對于自定義的字段

      2、FileName屬性

      說明:數(shù)據(jù)存儲文件的名稱。因該控件是基于文件型的數(shù)據(jù)操作控件,因此,必須指定所操作的數(shù)據(jù)文件名稱(默認(rèn)擴(kuò)展名稱.cds),從而打開和激活該控件,進(jìn)而進(jìn)行數(shù)據(jù)編輯。

      例1:利用此屬性打開指定的.cds文件

  1. var  
  2.   Path: string;  
  3. begin  
  4.  Path := ExtractFilePath(Application.ExeName); //取得可執(zhí)行文件路徑  
  5.  CDataSet1.FileName := Path + 'test.cds';  
  6.  CDataSet1.Open;  
  7. end;  

    3、CreateDataSet方法

    說明:該方法以FieldDefs中的字段名表為結(jié)構(gòu)建立數(shù)據(jù)集,常用來進(jìn)行動(dòng)態(tài)定義表。

    例2:動(dòng)態(tài)創(chuàng)建一具有姓名和年齡兩個(gè)字段的數(shù)據(jù)集。

   

Delphi代碼  
  1. //創(chuàng)建字段名表  
  2. CDataSet.FieldDefs.Clear;  
  3. with CDataSet.FieldDefs.AddFieldDef do  
  4. begin  
  5.  Name := 'Name';  
  6.  Size := 10;  
  7.  DataType := ftString;  
  8. end;  
  9. with CDataSet.FieldDefs.AddFieldDef do  
  10. begin  
  11.  Name := 'Age';  
  12.  DataType := ftInteger;  
  13. end;  
  14.   
  15. //動(dòng)態(tài)創(chuàng)建數(shù)據(jù)集  
  16.  CDataSet.CreateDataSet;  
  17. //激活和打開該數(shù)據(jù)集  
  18.  CDataSet.Open;  

    4、Open方法

    說明: 打開和激活數(shù)據(jù)集控件,從而進(jìn)行數(shù)據(jù)編輯。a. 如果指定了FileName屬性,則直接用Open方法即可打開和激活該控件,見例1。b. 如果未指定FileName屬性,可使用例2方法動(dòng)態(tài)創(chuàng)建和打開數(shù)據(jù)集,進(jìn)而操作數(shù)據(jù)。

    5、LoadFromFile和SaveToFile

    說明:從文件中裝入表結(jié)構(gòu)和數(shù)據(jù)以及存儲數(shù)據(jù)到文件。該方法類似于Word中的打開新文件和另存為的功能。

    例3:將數(shù)據(jù)集的數(shù)據(jù)存儲到指定文件中

   

Delphi代碼  
  1. CDataSet.SaveToFile('C:\Windows\ZHU\Test.cds');  

    6、First(到首),Prior(向前),Next(向后),Last(到尾),Edit(編輯),CanCel(取消編輯),Post(保存),Insert(插入記錄),Append(添加記錄),Delete(刪除),Refresh(數(shù)據(jù)刷新)等數(shù)據(jù)集常用方法。

    說明:當(dāng)指定了FileName屬性時(shí),其Post方法可將數(shù)據(jù)存入指定的文件中,類似其SaveToFile方法;如果未指定存儲文件名,則Post方法只將數(shù)據(jù)存儲在RAM中。其它方法,同一般數(shù)據(jù)集控件使用方法,略。

    7、Filter, Filtered: 過濾篩選屬性

    說明:用于篩選指定條件的記錄,用法同一般數(shù)據(jù)集控件,略。

    例4:在已經(jīng)激活打開的數(shù)據(jù)集中篩選性別為男性的記錄 

  

Delphi代碼  
  1. CDataSet.Close;  
  2. CDataSet.Filter := '性別=''' + '男' + '''';  
  3. CDataSet.Filtered := True;  
  4. CDataSet.Open;  

 

二、使用TClientDataSet控件的應(yīng)用程序發(fā)布的注意事項(xiàng):

    如前所述,使用TClientDataSet控件的程序發(fā)布時(shí)不需要任何數(shù)據(jù)庫驅(qū)動(dòng)程序,大大節(jié)省了安裝文件的大小。但是,在發(fā)布程序時(shí)別忘了將Windows系統(tǒng)目錄下midas.dll(257KB)與應(yīng)用程序一起發(fā)布(運(yùn)行必須),否則,程序仍然無法正常運(yùn)行。

    通過使用Delphi中TClientDataSet控件,既實(shí)現(xiàn)了應(yīng)用程序可徹底脫離數(shù)據(jù)庫驅(qū)動(dòng)程序,也實(shí)現(xiàn)了常規(guī)數(shù)據(jù)集控件簡單易用的特性,為編寫"瘦"數(shù)據(jù)庫應(yīng)用程序提供了一種技術(shù)方法和手段。

 

三、TClientDataSet在三層結(jié)構(gòu)中,TClientDataSet的地位是不可估量的,本文從以下幾個(gè)方面闡述她的使用。

    1、動(dòng)態(tài)索引

   

Delphi代碼  
  1. procedure TForm1.DBGrid1TitleClick(Column: TColumn);  
  2. begin  
  3.    if (not column.Field is Tblobfield) then//Tblobfield不能索引,二進(jìn)制  
  4.   ClientDataSet1.IndexFieldNames:=column.Field.FieldName;  
  5. end;  

    2、多層結(jié)構(gòu)中主從表的實(shí)現(xiàn)

    設(shè)主表ClientDataSet1.packetrecord為-1,所有記錄;

    設(shè)從表ClientDataSet1.packetrecord為0,當(dāng)前記錄。

    3、Taggregates使用

   (1)在字段編輯中add new field類型為aggregates
     后設(shè)置expression(表達(dá)試)
     設(shè)置active:=true即可
     使用dbedit的field為前者即可
    (2)使用Aggergates屬性add設(shè)計(jì)表達(dá)試
     調(diào)用

   

Delphi代碼  
  1. ShowMessage(FloatTostr(ClientDataSet1.Aggregates.Count));  
  2. ShowMessage(ClientDataSet1.Aggregates.Items[0].Value);  

    4、在單層數(shù)據(jù)庫中不要BDE

    使用ClientDataSet代替table,使用ClientDataSet的loadfilename裝入cds代替table的tablename的db或者dbf

引用:
原來的程序改造方法:
加一個(gè)ClientDataSet,使用右鍵assign locate data
后savetofile,再loadfromfile,后刪除table
將原連table的datasource設(shè)為ClientDataSet
唯一注意的是:要將midas.dll拷到system或者當(dāng)前目錄

    5、三層結(jié)構(gòu)的公文包的實(shí)現(xiàn)方法

    同時(shí)設(shè)定:filename(*.cds)2.remote server

    6、可以對data賦值(從另一個(gè)數(shù)據(jù)集取值)

    

Delphi代碼  
  1. ClientDataSet2.Data:=ClientDataSet1.Data;  
  2. ClientDataSet2.Open;  

    或者

   

Delphi代碼  
  1. ClientDataSet2.CloneCursor(ClientDataSet1,true);  
  2. ClientDataSet2.Open;  

    7、附加數(shù)據(jù)取得

     客戶程序向應(yīng)用服務(wù)器請求數(shù)據(jù)。如果TClientDataSet 的FetchOnDemand 屬性設(shè)為True,客戶程序會(huì)根據(jù)需要自動(dòng)檢索附加的數(shù)據(jù)包如BLOB字段的值或嵌套表的內(nèi)容。否則,客戶程序需要顯式地調(diào)用GetNextPacket 才能獲得這些附加的數(shù)據(jù)包。ClientDataSet的packetrecords設(shè)置一次取得的記錄個(gè)數(shù)。

     8、ClientDataSet與服務(wù)器端query連接方法

     (1)sql內(nèi)容為空

    

Delphi代碼  
  1. ClientDataSet1.Close;  
  2. ClientDataSet1.CommandText:=edit1.Text;//即sql內(nèi)容  
  3. ClientDataSet1.Open;  

    對于沒有應(yīng)用服務(wù)器設(shè)置filter 如:country like 'A%',filtered=true可實(shí)現(xiàn)sql功能。

    (2)有參數(shù)

   

如服務(wù)端query的sql為
select * from animals
where name like :dd

    則:客戶端ClientDataSet

Delphi代碼  
  1. var  
  2.      pm:Tparam;  
  3. begin  
  4.      ClientDataSet1.Close;  
  5.      ClientDataSet1.ProviderName:='DataSetProvider1';  
  6.      pm:=Tparam.Create(nil);  
  7.      pm.Name:='dd';  
  8.      pm.DataType:=ftString;  
  9.      ClientDataSet1.Params.Clear;  
  10.      ClientDataSet1.Params.AddParam(pm);  
  11.      ClientDataSet1.Params.ParamByName('dd').AsString:=edit1.Text ;  
  12.      ClientDataSet1.Open;  
  13.      pm.Free;  
  14. end;  

    9、數(shù)據(jù)的更新管理

    (1)savepoint 保存目前為止數(shù)據(jù)狀態(tài),可以恢復(fù)到這個(gè)狀態(tài)

   

Delphi代碼  
  1. var  
  2.      pp:integer;  
  3. begin  
  4.      pp:=ClientDataSet1.SavePoint;  
  5.      ClientDataSet1.Edit;  
  6.      ClientDataSet1.FieldByName('姓名').asstring:='古話';  
  7.      ClientDataSet1.Post;  
  8.      table1.Refresh;  
  9. end;  

    恢復(fù)點(diǎn) : ClientDataSet1.SavePoint:=pp;

    (2)Cancel,RevertRecord

     取消對當(dāng)前記錄的修改,只適合沒有post的,如果post,調(diào)用 RevertRecord 。

    (3)CancelUpdate

     取消對數(shù)據(jù)庫所有的修改

    (4)UndoLastChange(boolean),changecount

      取消上一次的修改,可以實(shí)現(xiàn)連續(xù)撤消。參數(shù)為true:光標(biāo)到恢復(fù)處;false:光標(biāo)在當(dāng)前位置不動(dòng)。changecount返回修改記錄的次數(shù),一個(gè)記錄修改多次,返回只一次,但UndoLastChange只撤消一次。

    10、可寫的recno

     對于Ttable和Tquery的recno是只讀的,而TClientDataSet的recno可讀可寫ClientDataSet1.recno:=5;是設(shè)第五個(gè)記錄為當(dāng)前記錄。

     11、數(shù)據(jù)保存

     對于table使用post可更新數(shù)據(jù),而ClientDataSet1的post只更新內(nèi)存數(shù)據(jù),要更新服務(wù)器數(shù)據(jù)要使ApplyUpdates(MaxErrors: Integer),他有一個(gè)參數(shù),是允許發(fā)出錯(cuò)誤的次數(shù),-1表示無數(shù)次,使用simpleobjectbroker時(shí)常設(shè)為0,實(shí)現(xiàn)自動(dòng)容錯(cuò)和負(fù)載平衡。

      

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Delphi開發(fā)單機(jī)瘦數(shù)據(jù)庫程序要點(diǎn)
體驗(yàn) Delphi2009 的 JSON
ClientDataset+TDataSetProvider的數(shù)據(jù)保存問題
FastReport Studio 和 FastReport.net 用法
Delphi 7中快速得到本機(jī)IP地址
Delphi 制作自定義數(shù)據(jù)感知控件并裝入包(dpk文件)中(與DBText類似的數(shù)據(jù)感知控件)
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服