範例程式 main.pas + RSLTFORM.pas 示範:使用者選擇資料庫別名 → 資料表 → 欄位 → 運算子(=、>、Like、In 等)→ 輸入值 → 動態組裝 WHERE 子句 → 執行查詢 → 結果視窗呈現。
ftString/ftMemo)決定是否加單引號ComboBox1.ItemIndex 對應 etSQLOps 列舉,case 產生 strWhere:| 列舉值 | SQL 片段 | 範例 |
|---|---|---|
soEqual | Field = 'Value' | CustNo = '123' |
soNotEqual | Field <> 'Value' | CustNo <> '123' |
soLessThan | Field < 'Value' | — |
soStartsWith | Field LIKE 'Value%' | Name LIKE 'Smith%' |
soContains | Field LIKE '%Value%' | Name LIKE '%Smith%' |
soBlank | Field IS NULL | — |
soInside | Field IN ('V1','V2') | 值需自行分隔 |
SELECT * FROM "Table" t WHERE t.Field = 'Value'TResultForm,設定 Query1.DatabaseName、Query1.SQL.Text、Active := TrueRecordCount,為 0 則拋例外;否則 ShowModal 呈現DBGrid1 + DBNavigator 綁定 Query1Query1.Close → SQL.Clear → SQL.Add → Active := True 標準動態查詢流程try...finally 保護結果視窗實例釋放Screen.Cursor := crHourGlass/crDefault 長時間操作視覺回饋此範例展示 Delphi 動態 SQL 組裝、參數化防注入(簡易版)、多視窗協作的完整企業級查詢器骨架。