熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Delphi編程 >> 正文

DELPHI基礎教程:數據訪問部件的應用及編程(二)[2]

2022-06-13   來源: Delphi編程 

  Exclusive屬性

  該屬性是一個布爾型屬性它標明是否以共享方式打開數據庫表如果Exclusive的值為True當打開一個數據庫表時其他用戶就不能訪問該表了若Exclusive的值為False將以共享方式打開一個數據庫表顯然不能將其他用戶正在訪問的表以互斥方式打開(設定Exclusive的值為True)對於SQL數據庫服務器上的數據庫表當以互斥方式被一個用戶打開時其他用戶可以讀取該表中的數據但不能修改表中的數據當然有些數據庫服務器不支持這種方式這要具體參看有關的數據庫服務器的文檔

  ReadOnly屬性和CanModify屬性

  這兩個屬性都是布爾型屬性ReadOnly屬性決定用戶是否能夠對表中的數據進行讀寫ReadOnly為True 時用戶只能讀取表中的數據ReadOnly為False時用戶可以讀寫表中的數據(假設數據庫已授權用戶能夠讀寫其中的數據庫表)CanModify屬性是一個只讀屬性用戶不能夠修改其屬性值它反映了用戶對數據庫表擁有的實際特權當ReadOnly為True時CanModify將自動地被置為False當ReadOnly為False時如果數據庫允許用戶對表進行讀寫時CanModify為True否則CanModify為False當CanModify為False時數據庫表是只讀的但不能將其置成編輯狀態或插入狀態當CanModify屬性為True時雖然數據庫表對應的數據集部件可以置成編輯和插入狀態但是這並不意味著用戶能夠插入和修改表中的數據因為這還要受到其他因素的限制如用戶對SQL數據庫服務器的訪問權限等的限制

  TTable部件還有其他一些屬性請參看聯機幫助

   TTable部件的方法及應用

   設定數據庫表的使用范圍

  在我們實際應用中的數據庫表中常常存放著大量的數據信息其中包含著很多的記錄而我們的應用程序可能只需對其中一部分記錄進行操作因此為應用程序指定一個使用范圍就顯得特別重要了為方便有效地指定數據庫表的使用范圍Delphi為TTable部件提供了下列方法供用戶使用

  ● SetRangeStart和EditRangeStart方法

  ● SetRangeEnd和EditRangeEnd方法

  ● SetRange([Start Values][End Values])方法

  ● ApplyRange方法

  ● CancelRange方法

   SetRangeStart方法

  用於指定檢索范圍的起始記錄調用SetRangeStart方法之後可以為起始記錄的一個或多個字段指定相應的字段值SetRangeEnd方法用於指定檢索范圍的結束記錄調用SetRangeEnd方法之後可以為結束記錄的一個或多個字段指定相應的字段值

   SetRange方法

  SetRange方法包含了SetRangeStart和SetRangeEnd方法的功能它可以同時指定檢索范圍的起始和結束記錄起始記錄和結束記錄的字段值以數組形式送給SetRange其基本形式是

  SetRange([起始值][結束值])

   ApplyRange方法

  根據SetRangeStartSetRangeEnd或SetRange方法說明的檢索范圍的起始和結束記錄具體設定一個檢索范圍調用ApplyRange方法之後應用程序只能對檢索范圍內的記錄進行有關的操作

   CancelRange方法

  CancelRange方法的作用與ApplyRange方法的作用是相反的這是取消為表設定的檢索范圍調用CancelRange方法之後應用程序可以對表中全部記錄進行有關的操作

  在這裡要注意的是如果我們使用的是paradox表或dBASE表在調用SetRangeStartSetRangeEnd以及SetRange方法時只能為表中的索引字段或定義的索引指定相應的字段值以設定檢索范圍如果使用SQL數據庫服務器中的數據庫表可以為IndexFieldNames屬性中指定的字段指定相應的字段值

  例如假設Table與CustomerDB表相連CustomerDB中一個索引字段是CustNo同時應用窗體中有兩個編輯框StartVal和EndVal用於輸入起始結束記錄的字段CustNo的值下面的程序代碼便可以為我們設定一個檢索范圍

  TabelSetRangeStart; {指定檢索范圍的起始記錄}

  TabelCustNoAsString:= StartValText {為起始記錄的CustNo字段指定字段值}

  TabelSetRangeEnd; {指定檢索范圍的結束記錄}

  if EndValText <> then

  TabelCustNoAsString := EndValText; {為結束記錄的CustNo 字段指定字段值}

  TabelApplyRange; {根據檢索范圍的起始結束記錄設定檢索范圍}

  注意上面的程序代碼在為結束記錄的CustNo字段指定字段值時首先檢查EndVal的值是否為空如果EndVal的值為空那麼設定的檢索范圍沒有包含一條記錄因為沒有任何記錄的字段值小於NIL;如果StartVal的值為空那麼檢索范圍將從表中的第一條記錄開始因為表中任何記錄的字段值都大於空(NIL)

  上述代碼可以用SetRange方法改寫成

  If EndValText <> then

  TabelSetRane([StartValText][EndValText])

  TableApplyRange;

  EditRangeStart和EditRangeEnd方法的使用完全類似於SetRangeStart和SetRangeEnd方法只是調這兩個方法是設定一個可編輯的范圍

  又如假設一個表中的一個索引包含兩個字段LastName和FirstName我們為索引中的一個字段或多個字段指定相應的字段值設定數據庫表的使用范圍

  TableSetRangeStart;

  TableFieldByName(LastNameAsstring := Smith;

  TableSetRangeEnd;

  TabelApplyRange;

  上述代碼設定的范圍包括LastName字段的值大於或等於Smith的所有記錄而下面的代碼設定的范圍則包括LastName字段的值大於或等於Smith且FirstName字段的值大於或等於J的記錄

  TableSetRangeStart;

  TableFieldByName(LastNameAsstring := Smith;

  TableFieldByName(FirstNameAsstring := J;

  TableSetRangeEnd;

  TabelApplyRange;

   查找數據庫表中的記錄

  如果想查找數據庫表中的記錄必須想指定查找記錄的一些字段的字段值然後在表中進行檢索檢索出與查找值相匹配的記錄來如果我們是在Paradox或dBASE數據庫中的表中查找記錄那麼查找值所對應的字段必須是表中的關鍵字段或輔助索引字段如果查找SQL數據庫服務器中的表那麼查找值必須是表的IndexFieldNames屬性中指定的字段

[]  []  []  []  


From:http://tw.wingwit.com/Article/program/Delphi/201311/25158.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.