15.4.2 TTable部件的方法及應(yīng)用
15.4.2.1 設(shè)定數(shù)據(jù)庫表的使用范圍
在我們實際應(yīng)用中的數(shù)據(jù)庫表中常常存放著大量的數(shù)據(jù)信息,其中包含著很多的記錄,而我們的應(yīng)用程序可能只需對其中一部分記錄進行操作,因此,為應(yīng)用程序指定一個使用范圍就顯得特別重要了,為方便有效地指定數(shù)據(jù)庫表的使用范圍Delphi為TTable部件提供了下列方法供用戶使用:
● SetRangeStart和EditRangeStart方法
● SetRangeEnd和EditRangeEnd方法
● SetRange([Start Values],[End Values])方法
● ApplyRange方法
● CancelRange方法
1. SetRangeStart方法
用于指定檢索范圍的起始記錄,調(diào)用SetRangeStart方法之后,可以為起始記錄的一個或多個字段指定相應(yīng)的字段值。SetRangeEnd方法用于指定檢索范圍的結(jié)束記錄,調(diào)用SetRangeEnd方法之后,可以為結(jié)束記錄的一個或多個字段指定相應(yīng)的字段值。
2. SetRange方法
SetRange方法包含了SetRangeStart和SetRangeEnd方法的功能,它可以同時指定檢索范圍的起始和結(jié)束記錄,起始記錄和結(jié)束記錄的字段值以數(shù)組形式送給SetRange,其基本形式是:
SetRange([起始值],[結(jié)束值])
3. ApplyRange方法
根據(jù)SetRangeStart,SetRangeEnd或SetRange方法說明的檢索范圍的起始和結(jié)束記錄,具體設(shè)定一個檢索范圍,調(diào)用ApplyRange方法之后,應(yīng)用程序只能對檢索范圍內(nèi)的記錄進行有關(guān)的操作。
4. CancelRange方法
CancelRange方法的作用與ApplyRange方法的作用是相反的,這是取消為表設(shè)定的檢索范圍,調(diào)用CancelRange方法之后應(yīng)用程序可以對表中全部記錄進行有關(guān)的操作。
在這里要注意的是:如果我們使用的是paradox表或dBASE表,在調(diào)用SetRangeStart,SetRangeEnd以及SetRange方法時,只能為表中的索引字段或定義的索引指定相應(yīng)的字段值,以設(shè)定檢索范圍。如果使用SQL數(shù)據(jù)庫服務(wù)器中的數(shù)據(jù)庫表,可以為IndexFieldNames屬性中指定的字段指定相應(yīng)的字段值。
例如:假設(shè)Table1與Customer.DB表相連,Customer.DB中一個索引字段是CustNo,同時應(yīng)用窗體中有兩個編輯框StartVal和EndVal用于輸入起始、結(jié)束記錄的字段CustNo的值,下面的程序代碼便可以為我們設(shè)定一個檢索范圍:
Tabel1.SetRangeStart; {指定檢索范圍的起始記錄}
Tabel1CustNo.AsString:= StartVal.Text {為起始記錄的CustNo字段指定字段值}
Tabel1.SetRangeEnd; {指定檢索范圍的結(jié)束記錄}
if EndVal.Text <> ' ' then
Tabel1CustNo.AsString := EndVal.Text; {為結(jié)束記錄的CustNo 字段指定字段值}
Tabel1.ApplyRange; {根據(jù)檢索范圍的起始、結(jié)束記錄設(shè)定檢索范圍}
注意上面的程序代碼,在為結(jié)束記錄的CustNo字段指定字段值時,首先檢查EndVal的值是否為空,如果EndVal的值為空,那么設(shè)定的檢索范圍沒有包含一條記錄,因為沒有任何記錄的字段值小于NIL;如果StartVal的值為空,那么檢索范圍將從表中的第一條記錄開始,因為表中任何記錄的字段值都大于空(NIL)。
上述代碼可以用SetRange方法改寫成:
If EndVal.Text <>' ' then
Tabel1.SetRane([StartVal.Text].[EndVal.Text]);
Table1.ApplyRange;
EditRangeStart和EditRangeEnd方法的使用完全類似于SetRangeStart和SetRangeEnd方法,只是調(diào)這兩個方法是設(shè)定一個可編輯的范圍。
又如:假設(shè)一個表中的一個索引包含兩個字段LastName和FirstName,我們?yōu)樗饕械囊粋字段或多個字段指定相應(yīng)的字段值,設(shè)定數(shù)據(jù)庫表的使用范圍。
Table1.SetRangeStart;
Table1.FieldByName('LastName').Asstring := 'Smith';
Table1.SetRangeEnd;
Tabel1.ApplyRange;
上述代碼設(shè)定的范圍包括LastName字段的值大于或等于Smith的所有記錄。而下面的代碼設(shè)定的范圍則包括LastName字段的值大于或等于Smith且FirstName字段的值大于或等于'J'的記錄。
Table1.SetRangeStart;
Table1.FieldByName('LastName').Asstring := 'Smith';
Table1.FieldByName('FirstName').Asstring := 'J';
Table1.SetRangeEnd;
Tabel1.ApplyRange;
相關(guān)推薦:2010年9月計算機等級考試試題及答案解析專題北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |