免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
ClientDataSet的隱含功能-計算機(jī)二級考試-考試大
 ClientDataSet組件支持很多特性,其中一些與三級結(jié)構(gòu)有關(guān),而且還可以用在其他環(huán)境中。該組件說明了一個數(shù)據(jù)庫完全映象在內(nèi)存中,這使得可以進(jìn)行動態(tài)的操作,如建立一個索引,其他數(shù)據(jù)集合通常不支持該特性。例如,為了對查詢分類,我們通常是重新執(zhí)行它。為了索引一個局部表格,需要定義索引。只有ADO數(shù)據(jù)集合有一些與ClientDataSet一樣的動態(tài)索引功能。
  索引并不是ClientDataSet提供的全部功能。當(dāng)我們擁有了索引之后,可以基于它定義組,可能是多級別的分組。對于確定一個記錄在組中的位置(頭、尾或中間位置),甚至有專門的支持。在組或整個數(shù)據(jù)表格中,我們可以定義總計;也就是說,可以動態(tài)計算整個表格或當(dāng)前組中一列的總和或平均值。數(shù)據(jù)不需要發(fā)送給物理服務(wù)器,因為這些總計操作發(fā)生在內(nèi)存中。我們甚至可以定義新的總計字段,可以直接與數(shù)據(jù)敏感控件相連。
  注意,所有這些特性不但可以用與MIDAS應(yīng)用程序,還可以用與客戶機(jī)/服務(wù)器,甚至是局部瘦應(yīng)用程序。事實上,ClientDataSet組件可以從遠(yuǎn)程MIDAS連接、局部數(shù)據(jù)集合(建立起數(shù)據(jù)的快照)、或局部文件(就象在公文包模式中一樣,但使用的只是在客戶機(jī)數(shù)據(jù)集合中定義的整個表格)中獲得起數(shù)據(jù)。
  這是另一個需要研究的領(lǐng)域,所以將向讀者演示兩個范例來突出關(guān)鍵特性。這些范例沒有基于MIDAS,而是基于局部表格。
  1、定義抽象的數(shù)據(jù)的數(shù)據(jù)類型
  VCL數(shù)據(jù)庫支持的一個有趣的特性是,當(dāng)我們基于局部文件使用ClientDataSet時,可以定義抽象的數(shù)據(jù)類型。只需在窗體上放置一個ClientDataSet組件,為FieldDefs屬性激活編輯器,添加兩個字段,并為他們的DataType屬性選擇ftADT值?,F(xiàn)在,移到ChildDefs屬性,并定義子字段,下面是AdtDemo范例的字段定義:
  FieldDefs = <
  item
  Name = \'ID\'
  DataType = ftInteger
  end
  item
  name = \'Name\'
  ChildDefs = <
  item
  name = \'LastName\'
  DataType = ftString
  size = 20
  end
  item
  name = \'FirstName\'
  datatype = ftString
  size = 20
  end>
  datatype = ftADT
  size = 2
  end>
  在此,只需為ClientDataSet的FileName屬性輸入一個名稱,用鼠標(biāo)右鍵單擊組件,并選擇Create Table命令即可;我們準(zhǔn)備編譯并運行應(yīng)用程序(在向它連接數(shù)據(jù)敏感組件之后)。數(shù)據(jù)會自動從提供的文件中讀取,關(guān)閉程序時會將變化保存在文件中。
  如果使用DBGrid查看結(jié)果數(shù)據(jù)集合,它允許我們展開或壓縮ADT字段的子字段。我們可以通過定義字段的OnGetText事件提供它的壓縮值(在Delphi4 中有一個缺省值,但Delphi5中沒有):
  procedure TForm1.ClientDataSet1NameGetText(Sender:TField;
  var Text:String;DisplayText:Boolean);
  begin
  Text:=ClientDataSet1NameFirstName.AsString+\' \'+
  ClientDataSet1NameLastName.AsString;
  end;
  2、動態(tài)索引
  一旦ClientDataSet上有了數(shù)據(jù),數(shù)據(jù)就已全部處于內(nèi)存中了。當(dāng)我們將組件基于局部文件中時(如在AdtDemo范例中),在程序啟動時整個文件就被裝載到了內(nèi)存總。這與從Paradox數(shù)據(jù)表格中裝載數(shù)據(jù)(BDE只裝載正訪問的字段)不同。
  將整個表格裝在內(nèi)存中的優(yōu)點是,我們可以快速地對它進(jìn)行分類。使用ClientDataSet組件,我們可以通過賦給IndexFieldNames屬性相應(yīng)的字段名來實現(xiàn)分類。在AdtDemo(以及很多程序)中,該索引變動會在單擊DBGrid控件的標(biāo)題(觸發(fā)OnTitleClick事件)時執(zhí)行:
  procedure TForm1.DBGrid1TitleClick(Column:TColumn);
  begin
  if Column.Field.FullName = \'Name\' then
  ClientDataSet1.IndexFieldNames := \'Name.LastName\'
  else
  ClientDataSet1.IndexFieldNames := Column.Field.FullName;
  end;
  由于ADT定義,程序使用了字段的FullName屬性(而不是FieldName屬性)。事實上,對于子字段來說,索引應(yīng)該基于Name.LastName,而不是LastName。而且ADT字段不能自己被索引,所以如果選擇它,程序會使用LastName子字段作為索引。這些索引不是持久性的;它們沒有保存在文件中,而只是在內(nèi)存中應(yīng)用于數(shù)據(jù)。
  技巧:ClientDataSet可以擁有基于計算字段的索引,特別是內(nèi)部計算字段,這種字段類型只能用于該數(shù)據(jù)集合。來源:考試大-計算機(jī)二級考試
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
TClientDataSet[22]: 數(shù)組字段與 ObjectView
clientdataset的使用
【delphi】ClientDataSet詳細(xì)解讀
ElasticSearch最全詳細(xì)使用教程:入門、索引管理、映射詳解
SQL 語法
動態(tài)創(chuàng)建ClientDataSet的表定義
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服