當我們在運算元據集時,往往需要對資料進行篩選例如:乙個名為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 ...