在看實例學VFP:對表中記錄進行定位與查找操作及看實例學VFP:用SELECT語句創(chuàng)建查詢這兩個例子中,我們可以在查詢時可以從組合框中選定一個要查詢的字段。本例對這種查詢方式再做進一步改進,使之在查詢時不僅可以從一個組合框中選取要查詢的字段,還可以從另一個組合框中選定操作符(如<、=、>等),從而實現(xiàn)更復雜的查詢。本例應用到了數(shù)據(jù)環(huán)境,并使用“數(shù)據(jù)1”數(shù)據(jù)庫中的“人員信息表”作為數(shù)據(jù)環(huán)境的數(shù)據(jù)源,關于該數(shù)據(jù)庫的情況已經(jīng)在看實例學VFP:示例數(shù)據(jù)庫一文中給出,這里不再詳述。運行界面見本文末尾。
制作步驟如下:
一、新建表單,將其caption屬性值設置為“更復雜的查詢例子”,AutoCenter屬性值設置為.T.,width屬性值設置為520,height屬性值設置為245,并保存為“更復雜的查詢例子.scx”。
二、右擊表單空白處,選“數(shù)據(jù)環(huán)境”命令,將“人員信息表”添加到數(shù)據(jù)環(huán)境中。在“數(shù)據(jù)環(huán)境設計器”中拖動“人員信息表”的標題欄到表單上,自動生成一個表格控件。由于是從數(shù)據(jù)環(huán)境中把“人員信息表”拖動過來由系統(tǒng)自動生成的,該表格控件的RecordSource屬性及RecordSourceType屬性已經(jīng)由系統(tǒng)設置好了,不用管它,但name屬性值系統(tǒng)給出的好長,為了書寫代碼的方便,我們把這個表格控件的name屬性值修改為“grid1”。
三、在表格控件的下方添加一個Label控件,并把它的caption屬性值設置為“查詢條件”。
四、在label控件的右側依次添加兩個組合框控件、一個文本框控件及兩個命令按鈕command1和command2,并把這兩個命令按鈕的caption屬性值依次設置為“查找”和“退出”。
五、適當調整各控件在表單上的位置,調整后的表單設計器如下圖所示:
六、設置組合框控件的屬性:
(一)組合框Combo1:RecordSourceType屬性值設置為“8-結構”,RecordSource屬性值設置為“人員信息表”。
(二)組合框Combo2:RecordSourceType屬性值設置為“1-值”,RecordSource屬性值設置為“,>,<,=,>=,<=,<>”。
七、添加事件代碼:
?。ㄒ唬┍韱蔚膗nload事件代碼:close data
?。ǘ┙M合框Combo1的InteractiveChange事件代碼:
if alltrim(this.displayvalue)="出生日期"
thisform.text1.value={} else thisform.text1.value='' endif (三)“查找”按鈕command1的click事件代碼: if thisform.grid1.recordsource='臨時人員信息表'
thisform.grid1.recordsource='人員信息表' endif' private CXTJ if empty(thisform.combo1.displayvalue) or empty(thisform.combo2.displayvalue) ; or empty(thisform.text1.value) && 判斷列表框和文本框是否為空 messagebox('請輸入完整條件!',16,'系統(tǒng)提示') thisform.combo1.setfocus else do case case alltrim(thisform.Combo1.Displayvalue)='基本工資' CXTJ=alltrim(thisform.combo1.displayvalue); +' '+alltrim(thisform.combo2.displayvalue); +' '+alltrim(thisform.text1.value) case alltrim(thisform.Combo1.Displayvalue)='出生日期' CXTJ=alltrim(thisform.combo1.displayvalue); +' '+alltrim(thisform.combo2.displayvalue); +' ctod("'+dtoc(thisform.text1.value)+'")' otherwise CXTJ=alltrim(thisform.combo1.displayvalue); +' '+alltrim(thisform.combo2.displayvalue); +' "'+alltrim(thisform.text1.value)+'"' endcase Select * from 人員信息表 where &CXTJ. into cursor 臨時人員信息表 thisform.grid1.recordsource='臨時人員信息表' thisform.grid1.backcolor=rgb(200,224,248) endif (四)“退出”按鈕command2的click事件代碼:thisform.release 八、運行“更復雜的查詢例子.scx”,界面見下圖:
本文來自: 編程入門網(wǎng) http://www./Programming/vfp/200902/11257.htm
本文來自: 編程入門網(wǎng) http://www./Programming/vfp/200902/11257.htm |
|