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

Delphi 資料庫應用資料驗證三大策略:表層級、欄位層級、記錄層級完整實作與 TDBComboBox/TDBLookupComboBox 限制輸入範圍技巧

     編輯:Delphi

資料有效性驗證三大途徑

使用者插入新記錄或修改舊記錄時,必須確保輸入資料有效。Delphi 提供三種驗證層級:

1. 基於資料庫表的驗證

建立資料表時即設定驗證機制。使用 DBD 建表時可指定欄位最大/最小值、圖形欄位顯示格式等。無需撰寫程式碼。資料寫入資料庫前由資料庫本身執行。Delphi 亦執行部分驗證(如寫入前驗證各欄位是否填入對應值)。詳參 DBD 使用說明。

2. 基於欄位的驗證

兩種方法:

  1. OnValidate 事件:為需驗證欄位撰寫 OnValidate 事件處理程序。每當欄位值被修改即觸發驗證。
  2. Required 屬性 + OnValidate:對必填欄位(密碼、關鍵字等)設 Required=True,再撰寫 OnValidate。修改或插入記錄寫入資料庫前,若必填欄位未填值則彈出錯誤提示。

3. 基於記錄的驗證

於 TTable 的 BeforePost 事件處理程序中進行。記錄寫回資料庫前對每個欄位值驗證。

實作範例:銷售日期不可晚於系統當前日期

  1. 建立用 TEdit 瀏覽 ORDERS.DB 的應用
  2. 設 TDataSource.AutoEdit=True
  3. 雙擊 TTable 開啟 Fields Editor,選取 SaleDate 欄位
  4. 物件檢視器雙擊 OnValidate 事件撰寫:
procedure TForm1.Table1SaleDateValidate(Sender: TField);
begin
  if SaleDate.Value > Now then
    raise Exception.Create('不能輸入一個未來的日期');
end;

執行時修改/插入記錄會驗證 SaleDate,若大於 Now 彈出錯誤提示。

使用 TDBComboBox 與 TDBLookupComboBox 限制輸入範圍

建立瀏覽 orders.db 應用。Terms 欄位用 TDBComboBox,EmpNo 用 TDBLookupComboBox。

元件屬性設定對照表

元件屬性屬性值
DBComboBox1DataFieldTerms
DataSourceDataSource1
ItemsPrepaid; Net 30; COD
DBLookupComboBox1DataFieldEmpNo
DataSourceDataSource1
LookupSourceDataSource2
KeyFieldEmpNo
LookupFieldEmpNo
DataSource1DataSetTable1
AutoEditTrue
DataSource2DataSetTable2
AutoEditTrue
Table1DatabaseNameDemosDB
TableNameorders.db
Table2DatabaseNameDemosDB
TableNameorders.db

執行時:Terms 可從下拉選單選擇 Prepaid/Net 30/COD;EmpNo 從另一資料表 Employee 取得員工編號供選擇。

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