delphi學習點滴 資料集過濾技巧

2021-06-02 14:49:36 字數 1617 閱讀 1331

當我們在運算元據集時,往往需要對資料進行篩選例如:乙個名為customer的資料表,它具有custno、custname、country、address、phone、state、taxrate等字段,如果只想檢視國別為china或顧客號大於1000的顧客記錄,就需要對資料集進行過濾。經總結,有下面這些過濾方法:

一、利用ttable和tquery的filter屬性

1.在設計時設定filter屬性

例如,設定filter為:country=′china′然後改變filtered屬性為true(注意,filtered為true時過濾才有效)。則只能看到對應的country欄位內容為『china』的記錄。

設定filter時可以使用的操作符有:<、>、<=、>=、=、<>、and、or、not。

例如,設定filter為:custno>=1000andcustno<=5000,則只能看到顧客號在1000與5000之間的顧客記錄。

2.在程式執行期間進行動態過濾

要在程式執行時改變filter屬性,這包括兩種情況:

(1)操作符右邊為常量,例如:table1filter:=′state′+′=′+′′′hi′′′;

注意:字串常量必須用三對單引號括起來。

(2)操作符右邊不為常量,可能是通過乙個變數指定的值,或由一輸入框給出的值。這時需要用到format函式。其**形式為:table1filter:=format(′state′+′=′+′′′%s′′′,[statevalue]);其中statevalue為已經賦值的乙個字串變數,也可以為其他形式,例如:edit1text。

執行下面這段**,將只能看到顧客號在1000至5000之間的顧客記錄。組成該例程的幾個過程為:

table1setrangestart;

table1[′custno′]:=1000;

table1setrangeend;

table1[′custno′]:=5000;

三、用onfilterrecord事件篩選onfilterrecord事件允許按非鍵控字段建立篩選程式,例如:

procedure tform1.table1filterrecord(dataset:tdataset;varaccept:boolean);

begin

accept:=dataset[′state′]=′ca′;

end;

四、用tquery控制項的sql語句

1.sql語句中不包含變數和引數

select * from customer

where custno>=1000 and custno<=5000

2.sql語句中包含引數

select * from customer

where custno>=:custno

在執行期間給引數custno賦值。

3.sql語句中包含變數

這時向tquery控制項新增sql語句的**應當這樣寫:

query1.close;

query1.sql.clear;

query1.sql.add(format(′select*fromcustomer′+′′+′wherestate=′+′′′%s′′′,[statevalue]));

query1.open;在上面的四種方法中,第四種功能最強大,使用最靈活。

delphi學習點滴 幾個關閉函式

表示關閉的有如下函式 hide close free release destrory terminate freeandnil halt hide 只是將窗體隱藏。close 對於窗體而言,close與hide的區別是如果窗體內有方法執行,close時候會終止窗體物件所執行的方法 而hide不會,...

資料庫點滴學習記錄

此部落格記錄資料庫所遇見的錯誤,之後慢慢新增 ora 00907 缺失右括號問題 1 union all中order by 導致缺失右括號 錯誤例子 select from select column a,column b from table example a order by column a...

Delphi學習 資料型別列表

分類 範圍位元組 備註簡單型別 序數整數 integer 2147483648 2147483647 4有符號32位 cardinal 0 4294967295 4無符號32位 shortint 128 127 1有符號8位 smallint 32768 32767 2有符號16位 longint ...