資料過濾
如前所述,無論tadoquery還是tadodatset(作為資料集元件),都是共用一組通用的方法和事件。這些資料集公開的功能中,擁有可以縮小呈現給使用者資料範圍的能力。試想一下,你可能擁有乙個存有數千條記錄的資料庫表,但使用者只對錶中的一小部分資料感興趣。
過濾(filtering)
過濾,是排除從資料集中得到的一些資料,只在檢視上顯示那些符合特定條件的記錄的方法。過濾使你能夠生成不同資料內容的檢視,而不會實際影響到該資料集中的資料。在設計和執行期間,過濾規則可通過資料集元件(tadotable或tadoquery)的filter屬性進行設定。 filter屬性是乙個字串,它定義了過濾器的規則。
adotable1.filter := 'cost = 0';
在此基礎上,還可以為過濾器新增過濾條件。使資料集過濾後只顯示某些特定程式型別的免費應用程式。如下進行設定:
adotable1.filter :=
'cost = 0 and type = ' + quotedstr(edit1.text);
//'delphi''s pascal'; //showmessage為delphi'spascal
// quotedstr(』delphi''s pascal』);//showmessage為 'delphi''s pascal'
通過組合使用下列運算子,可以建立相當複雜的過濾器。
運算子 含義
< 小於
> 大於
>= 大於或等於
<= 小於或等於
= 等於
<> 不等於
and 都為真。
not 不為真
or 至少有乙個為真
filtered, filteroptions, filtergroup,onfilterrecord
filtered屬性是乙個布林值(true或false),決定是否啟用「filter」屬性中的規則對資料集進行篩選。當filtered為false時,將忽略過濾規則,而將整個資料集提供給應用程式。
filteroptions具有兩個值——都用於過濾字串字段。值為focaseinsensitive時,「filter」屬性中的條件字串文字與字段值進行比較時,不區分大小寫。 fonopartialcompare強制delphi將星號(*)解釋為原義字元而非萬用字元。預設情況下,filteroptions設定為空集。
onfilterrecord事件,每次過濾規則起作用時觸發。通常,在不能使用filter屬性來實現過濾時,使用該事件。
procedure tform1.adotable1filterrecord(dataset: tdataset; var accept:boolean);
begin
end;
filtergroup集屬性可以根據它們的狀態來篩選記錄。
(過濾或不過濾)to filter or notto filter
(需要注意的)note that
•filter屬性的行為很像乙個sql語句中的where子句。
•可以擁有多個條件,在filter屬性中用and或or運算子分隔。
•通常應該避免使用過濾器,除非取得的記錄集是小型的。使用過濾器,可能會也可能不會使用當前索引(過濾器適用於檢索資料集中的每乙個記錄中)。
•在客戶機/伺服器型別的資料庫上很少使用過濾器,應使用sql查詢(tadoquery)來達到過濾器對本地資料庫那樣的效果。
•一般情況下,不應在資料模組(datamodules)上的資料集中使用過濾器。在特定情況中,過濾表不在其他窗體中顯示,或表使用的範圍、排序順序,不在除應用程式外的任何地方使用——應避免使用資料模組。
•搜尋已過濾的資料集,可使用findfirst、findnext、findprior或findlast方法。這些方法是搜尋已過濾資料集最好的方式,因為每次呼叫這些方法時過濾器就會被重新應用。因此,如果先前不匹配過濾規則的記錄,在修改後,與過濾規則相匹配時,它們將在搜尋執行前被納入資料集。
Delphi資料庫程式設計教程(七)
第四章 資料瀏覽和導航 第一節 設定和連線 歡迎來到免費db delphi教程的第四章!到現在為止,本教程以說明了怎樣連線到access資料庫及怎樣顯示資料庫表中的圖形資料。在上一章我們討論了一些 高階 的資料庫程式設計技巧 譯者加 相對於初學者而言 現在讓我們回到 為初學者 的水平。這次,你將了解...
資料庫新手共鳴
資料庫這一詞並不是很難想象,並不是像外人看來很神奇。作為物流工程的學生,物流後台的資料庫對物流整體運作尤為重要。在大二的下學期剛學了資料庫這門課,對這門課的第一印象是書本蠻厚的,感覺學起來應該會很難很累。在學習這門課的過程中,在對資料庫的了解過程中,慢慢對資料庫有了感觀。首先初學者應從三面放學習資料...
資料庫拖庫指南
幾年前跟乙個福建的傳統領域富二代投資人聊過乙個相似的話題,他當時覺得,錢都是他出的,對方只是投入人力和精力。他認為股份是他慷慨給對方的,對方應該感激他才對,我說你這麼想就不對了,人家創業,押上的自己的人生,你呢,說句難聽的,錢 沒有?乙個專案失敗了,對你而言,不過是1 n的投資失敗而已,對創業者來說...