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