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

Delphi 限制資料集最大記錄數:BeforeInsert 事件實作

     編輯:Delphi

應用場景

特定業務規則要求單表記錄上限 (如「每位用戶最多 3 筆訂單」)。可在 TTable.BeforeInsert 事件中攔截新增動作。

核心程式碼

procedure TForm1.Table1BeforeInsert(DataSet: TDataSet);
begin
  // RecNo 為 1 基底,若已達 3 筆則阻止
  if Table1.RecNo >= 3 then
  begin
    MessageDlg('記錄數已達上限 (3 筆),無法新增', mtInformation, [mbOK], 0);
    Abort;  // 取消 Insert 操作,保持資料集狀態不變
  end;
end;

關鍵點解析

  • RecNo:當前記錄號 (1 基底),新增前指向最後一筆現有記錄
  • Abort:靜默例外,直接中斷當前操作不拋出錯誤對話框
  • 同樣適用於 TQuery、TClientDataSet 等資料集

進階:動態上限配置

procedure TForm1.Table1BeforeInsert(DataSet: TDataSet);
const MAX_RECORDS = 3;  // 或從設定檔/資料庫讀取
begin
  if Table1.RecordCount >= MAX_RECORDS then
  begin
    MessageDlg(Format('最多只能輸入 %d 筆記錄', [MAX_RECORDS]), 
               mtWarning, [mbOK], 0);
    Abort;
  end;
end;

替代方案比較

方案優點缺點
BeforeInsert + Abort簡單、原生、無需修改 UI僅限單表、靜態上限
資料庫層面 CHECK CONSTRAINT資料完整性最強、跨應用生效需 DBA 權限、錯誤訊息難本地化
UI 層禁用新增按鈕使用者體驗佳、可動態控制需同步多處 UI 狀態
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved