首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> Delphi

Delphi TTable 篩選範圍完整指南:SetRange/SetRangeStart/End、ApplyRange 與 CancelRange 實戰

     編輯:Delphi

15.4.2.1 設定資料表使用範圍

針對大量資料,限定處理範圍能大幅提升效能。TTable 提供五大方法:

方法功能
SetRangeStart / EditRangeStart指定起始記錄(可多欄位)
SetRangeEnd / EditRangeEnd指定結束記錄(可多欄位)
SetRange([StartVals], [EndVals])單行同時指定起迄值(陣列參數)
ApplyRange套用範圍,後續僅能存取範圍內記錄
CancelRange取消範圍,恢復全表存取

注意:索引欄位限制

  • Paradox/dBASE:僅能為索引欄位或已定義索引指定值
  • SQL Server:為 IndexFieldNames 指定欄位指定值

實戰範例:CustNo 範圍過濾

Table1.SetRangeStart;
Table1CustNo.AsString := StartVal.Text;      // 起始值

Table1.SetRangeEnd;
if EndVal.Text <> '' then
  Table1CustNo.AsString := EndVal.Text;      // 結束值(空值會導致無記錄)

Table1.ApplyRange;

空值陷阱:EndVal 為空 → 範圍無記錄(無值 < NIL);StartVal 為空 → 從第一筆開始(所有值 > NIL)。

SetRange 簡化寫法

if EndVal.Text <> '' then
  Table1.SetRange([StartVal.Text], [EndVal.Text]);
Table1.ApplyRange;

多欄位索引範圍(LastName + FirstName)

// 僅指定 LastName ≥ 'Smith'
Table1.SetRangeStart;
Table1.FieldByName('LastName').AsString := 'Smith';
Table1.ApplyRange;

// 指定 LastName ≥ 'Smith' 且 FirstName ≥ 'J'
Table1.SetRangeStart;
Table1.FieldByName('LastName').AsString := 'Smith';
Table1.FieldByName('FirstName').AsString := 'J';
Table1.ApplyRange;

EditRangeStart/End 用法相同,差別在建立可編輯範圍。善用範圍過濾可避免全表掃描,顯著改善大資料量應用效能。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved