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

C++Builder 資料集操作:TLocateOptions 進階搜尋技巧

     編輯:關於C++

在 C++Builder 使用 TTable、TQuery 等資料集元件時,Locate() 方法是快速定位記錄的利器。搭配 TLocateOptions 選項集合,可實現不區分大小寫、部分比對等彈性搜尋邏輯。

基本語法

bool __fastcall Locate(const AnsiString KeyFields, const Variant &KeyValues, TLocateOptions Options);
  • KeyFields:欄位名稱,多欄位以分號分隔 (如 "Field1;Field2")
  • KeyValues:搜尋值,多欄位時使用 VarArrayOf() 建立 Variant 陣列
  • Options:TLocateOptions 集合,可包含 loCaseInsensitive (不區分大小寫)、loPartialKey (部分比對/前綴比對)

程式碼範例:不區分大小寫搜尋

void __fastcall TForm1::Button1Click(TObject *Sender)
{
    bool FindSuccess;
    TLocateOptions SearchOptions;
    SearchOptions.Clear();            // 清空選項
    SearchOptions << loCaseInsensitive; // 加入「不區分大小寫」選項

    // 在 "字段名" 欄位中搜尋 Edit1 的文字
    FindSuccess = Table1->Locate("字段名", Edit1->Text, SearchOptions);

    if (FindSuccess)
        ShowMessage("找到符合記錄!");
    else
        ShowMessage("查無此資料。");
}

常用選項組合

選項效果適用情境
loCaseInsensitive不區分英文大小寫使用者輸入查詢、姓名搜尋
loPartialKey部分比對 (前綴比對)自動完成、關鍵字提示
loCaseInsensitive | loPartialKey不區分大小寫 + 部分比對最彈性的模糊搜尋

進階應用:多欄位組合搜尋

TLocateOptions Opts;
Opts << loCaseInsensitive << loPartialKey;

Variant keyVals = VarArrayOf(OPENARRAY(Variant, (EditName->Text, EditCity->Text)));
if (Table1->Locate("姓名;城市", keyVals, Opts)) {
    // 找到同時符合姓名前綴與城市前綴的記錄
}

注意事項

  1. 索引優化:Locate 若能利用現有索引會極快,否則會進行全表掃描。大量資料建議搭配 IndexFieldNames 或使用 TQuery 配合 SQL WHERE 子句。
  2. 資料型別:KeyValues 的型別必須與欄位型別相容,字串欄位傳入 AnsiString,數值欄位傳入數字。
  3. 游標位置:搜尋成功時,資料集游標會移動到該筆記錄;失敗時游標位置不變。

善用 TLocateOptions 可大幅提升資料查詢的使用者體驗,是 C++Builder 資料庫應用開發的必備技巧。

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