20132014(2)vfp第13部分(索引、查詢統(tǒng)計(jì)及掃描循環(huán))_第1頁
20132014(2)vfp第13部分(索引、查詢統(tǒng)計(jì)及掃描循環(huán))_第2頁
20132014(2)vfp第13部分(索引、查詢統(tǒng)計(jì)及掃描循環(huán))_第3頁
20132014(2)vfp第13部分(索引、查詢統(tǒng)計(jì)及掃描循環(huán))_第4頁
20132014(2)vfp第13部分(索引、查詢統(tǒng)計(jì)及掃描循環(huán))_第5頁
已閱讀5頁,還剩36頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

VisualFoxpro6.0程序設(shè)計(jì)基礎(chǔ)重慶工商大學(xué)計(jì)算機(jī)學(xué)院計(jì)算機(jī)基礎(chǔ)教研室1要點(diǎn):

1.掌握索引排序2.掌握表中的數(shù)據(jù)查詢

3.掌握數(shù)據(jù)表中的掃描循環(huán)4.自學(xué)查詢設(shè)計(jì)器和視圖設(shè)計(jì)器(完成相關(guān)的作業(yè))第十一講數(shù)據(jù)表的查詢統(tǒng)計(jì)數(shù)據(jù)表的索引

索引是按索引關(guān)鍵字表達(dá)式的值使數(shù)據(jù)表中的記錄有序排列的一種技術(shù),在VisualFoxPro系統(tǒng)中是借助于索引文件實(shí)現(xiàn)的。

1、什么是索引索引關(guān)鍵字的值、記錄號(教科書P132)記錄號學(xué)號姓名成績1001吳輝782002李麗953003章意484004王鵬735005劉星52記錄號成績295178473552348按成績降序排列索引文件VisualFoxPro系統(tǒng)提供了四種不同的索引類型,它們分別是:2、索引的類型主索引:僅適用于數(shù)據(jù)庫表,不允許關(guān)鍵字段有重復(fù)值,一個(gè)數(shù)據(jù)表只能建一個(gè)主索引。

候選索引:不允許索引關(guān)鍵字段有重復(fù)值普通索引:最常用的索引類型,無任何限制

唯一索引:允許索引關(guān)鍵字段有重復(fù)值

VisualFoxPro系統(tǒng)支持單索引文件(.idx)和復(fù)合索引文件(.cdx)。3、索引文件的類型

(1)結(jié)構(gòu)化復(fù)合索引文件

結(jié)構(gòu)化復(fù)合索引文件(.cdx)可以在同一個(gè)文件中包含多個(gè)索引,其中每個(gè)索引稱為索引標(biāo)識。

更重要的是,對于結(jié)構(gòu)復(fù)合索引,無論何時(shí)打開表文件,該索引都會(huì)自動(dòng)打開。

其文件名與表名相同,一個(gè)表文件只產(chǎn)生一個(gè)結(jié)構(gòu)化復(fù)合索引文件。

(2)獨(dú)立復(fù)合索引文件(略)

(3)單索引文件(略)

單索引文件是每個(gè)索引存放在一個(gè)獨(dú)立的文件(.idx)中。1.順序查詢(條件定位)locate[范圍]for<條件>

命令格式:繼續(xù)查找命令

命令格式:continue配對使用不能單獨(dú)使用(教科書P150)數(shù)據(jù)表的查詢仔細(xì)體會(huì)教材P148例6-12.

查詢

find<字符>|<數(shù)字>|&<內(nèi)存變量>seek<表達(dá)式>|<內(nèi)存變量>命令格式:可以不加引號字符、數(shù)值、日期、邏輯值組成的表達(dá)式索引找什么索引什么(教科書P150)Find和seek沒有配套的繼續(xù)查詢的命令。仔細(xì)體會(huì)教材P150例6-2表1商品信息數(shù)據(jù)表(文件名為:products.DBF)商品編號熱銷商品名稱規(guī)格單價(jià)格蘭仕豆?jié){機(jī)DS12006398020033TCL48寸LED電視L48E5010E4799020202美的微波爐EG923KF6-NR31098Homa對開門電冰箱BCD-388DV3660表2商品銷售數(shù)據(jù)表(文件名為:sale.DBF)商品編號客戶代表銷售數(shù)量銷售季度王小川1601020202李松5002王艷1001020202張濤3401左丘明2502020033杜雙12401吳平7802020033周洪宇4802

ex2.設(shè)計(jì)如圖所示表單,文件名:myform22.scx,表單標(biāo)題為考生自己的考號和姓名,將products.dbf添加到表單的數(shù)據(jù)環(huán)境中,組合框combo1與商品編號綁定,表單運(yùn)行后,在組合框combo1中選擇商品編號后,可以在標(biāo)簽label1中顯示商品的名稱,文本框text1、text2中分別顯示規(guī)格和單價(jià)。將products.dbf添加到表單的數(shù)據(jù)環(huán)境中,并將products.dbf的商品編號與組合框combo1綁定;組合框combo1的Interactivechange的事件代碼:locatefor商品編號=bo1.valuethisform.label1.caption="熱銷商品名稱:"+熱銷商品名稱thisform.text1.value=規(guī)格thisform.text2.value=單價(jià)thisform.refreshSelect熱銷商品名稱,規(guī)格,單價(jià)fromproducts;where商品編號=bo1.value;intoarrayxthisform.label1.caption="熱銷商品名稱:"+x(1)thisform.text1.value=x(2)thisform.text2.value=x(3)Found()與查找命令(locate、continue、seek、find)配套使用其值為.t.,已經(jīng)找到,否則沒有找到考生數(shù)據(jù)表(文件名為:ks.dbf)中有“準(zhǔn)考證號/C/9”、“密碼/c/6”、“成績/n/5/1”等字段。設(shè)計(jì)如圖所示表單,將考生數(shù)據(jù)表添加到表單的數(shù)據(jù)環(huán)境中,表單運(yùn)行后,在表單的文本框Text1中輸入查詢考生的準(zhǔn)考證號,文本框Text2中輸入該考生的查詢密碼后,單擊“查詢”按鈕,查詢該考生的成績,并將該考生的成績顯示在表單的標(biāo)簽Label3中(考號或密碼輸入錯(cuò)誤,則彈出提示窗口顯示“準(zhǔn)考證號或密碼錯(cuò)誤!”)。請完善代碼。

“查詢”按鈕的CLICK事件代碼如下:kh=ALLTRIM(THISFORM.TEXT1.VALUE)mm=ALLTRIM(THISFORM.TEXT2.VALUE)___________________IFFOUND() _________________ELSE Messagebox("準(zhǔn)考證號或密碼錯(cuò)誤!")ENDIF考號聽力口語1001808510029095設(shè)計(jì)如圖所示表單,表單運(yùn)行后,在文本框中輸入考號,單擊“查詢”按鈕,如果成績表中有此人,則顯示此人的聽力和口語成績。如果成績表中無此人,則顯示“查無此人”。請?zhí)羁铡3煽儽恚ㄎ募簓y.DBF)“查詢”按鈕的Click事件代碼如下:useyykh=__________locatefor考號=alltrim(kh)if____ thisform.label4.caption=str(聽力,3) thisform.label5.caption=str(口語,3) else thisform.label4.caption=________ thisform.label5.caption=""endifuse①thisform.text1.value②found()或noteof()③“查無此人”掃描循環(huán)(scan…endscan循環(huán))

格式:(見教科書153頁)

該循環(huán)只對數(shù)據(jù)表中的指定記錄逐個(gè)進(jìn)行某種處理ex6.設(shè)計(jì)如圖所示表單,在編輯框中顯示所有讀者的姓名、辦證日期,單位和聯(lián)系電話。數(shù)據(jù)輸入數(shù)據(jù)處理數(shù)據(jù)輸出數(shù)據(jù)來源于讀者.dbf表,打開表對表中的每一條記錄進(jìn)行逐條掃描用循環(huán)對每條記錄做同樣的處理在編輯框中輸出記錄數(shù)據(jù)表掃描循環(huán)的三要素:循環(huán)變量——記錄指針,初值為1,gotop循環(huán)條件——記錄指針沒有到文件結(jié)束noteof()循環(huán)條件的改變——記錄指針逐條后移skip怎樣構(gòu)成數(shù)據(jù)表掃描循環(huán)???thisform.edit1.value="讀者姓名辦證日期單位聯(lián)系電話"Dowhilenoteof()

x=讀者姓名+space(2)+dtoc(辦證日

期)+space(2)+單位+space(2)+聯(lián)系電話

thisform.edit1.value=thisform.edit1.value+chr(13)+x

skipenddothisform.refresh命令按鈕command1的click事件代碼:

方法1:thisform.edit1.value="讀者姓名辦證日期單位聯(lián)系電話"scan

x=讀者姓名+space(2)+dtoc(辦證日

期)+space(2)+單位+space(2)+聯(lián)系電話

thisform.edit1.value=thisform.edit1.value+chr(13)+xendscanthisform.refresh命令按鈕command1的click事件代碼:

方法2:條件循環(huán)

gotopdowhilnoteof()

處理一個(gè)記錄

skipendd掃描循環(huán)scan

處理一個(gè)記錄endsex7.兩個(gè)數(shù)據(jù)表:商品信息數(shù)據(jù)表(文件名為:products.DBF)和商品銷售數(shù)據(jù)表(文件名為:sale.DBF),其數(shù)據(jù)如表1、表2所示。商品編號熱銷商品名稱規(guī)格單價(jià)格蘭仕豆?jié){機(jī)DS12006398020033TCL48寸LED電視L48E5010E4799020202美的微波爐EG923KF6-NR31098Homa對開門電冰箱BCD-388DV3660商品編號客戶代表銷售數(shù)量銷售季度王小川1601020202李松5002王艷1001020202張濤3401左丘明2502020033杜雙12401吳平7802020033周洪宇4802表1表2設(shè)計(jì)如圖所示表單,文件名:myform21.scx,表單標(biāo)題為考生自己的考號和姓名,在組合框combo1中通過手工輸入方式輸入銷售季度“01”和“02”(注:與sale.dbf的銷售季度字段綁定不得分),表單運(yùn)行后,選擇一個(gè)銷售季度,在編輯框Edit1中顯示該季度的客戶代表。thisform.edit1.value=""usesale

cbs=alltrim(bo1.value)locateforalltrim(出版社)=cbsDowhilenoteof()

thisform.edit1.value=thisform.edit1.value+客戶代表+chr(13)

continueenddothisform.refreshuse在組合框中通過手工輸入的方式綁定數(shù)據(jù);組合框combo1的Interactivechange事件代碼:

方法1:在組合框中通過手工輸入的方式綁定數(shù)據(jù);組合框combo1的Interactivechange的事件代碼:thisform.edit1.value=""scanfor銷售季度=bo1.value

thisform.edit1.value=thisform.edit1.value+客戶代表+chr(13)

endscanthisform.refresh

方法2:在組合框中通過手工輸入的方式綁定數(shù)據(jù);組合框combo1的Interactivechange的事件代碼:thisform.edit1.value=""Select客戶代表fromsale;where銷售季度=bo1.value;

intocursortemp

scanthisform.edit1.value=thisform.edit1.value+客戶代表+chr(13)

endscanthisform.refresh

方法3:準(zhǔn)考證號筆試上機(jī)總評成績00102765.0022.0000101143.0040.0000100792.0087.0000100359.0078.0000100251.0070.00準(zhǔn)考證號姓名出生日期學(xué)院

001027郭敏05/22/96體育

001002陸江民07/18/96體育001003江秀媛11/27/99外語

001007王濤04/21/98體育

001011萬林04/12/97外語計(jì)算機(jī)成績數(shù)據(jù)表(文件名為:成績.DBF)

學(xué)生信息數(shù)據(jù)表(文件名為:學(xué)生.DBF)設(shè)計(jì)如圖所示表單,表單運(yùn)行后,在組合框中選擇學(xué)院“外語”或“體育”(組合框中的數(shù)據(jù)選項(xiàng)采用手工輸入),在編輯框中輸出該學(xué)院總評成績不及格的學(xué)生名單,并按年齡從大到小的順序排列,如圖所示。雙擊表單空白處關(guān)閉表單。

商品信息表(文件名為:products.dbf)銷售信息表(文件名為:sale.dbf)商品編號商品名稱庫存量單價(jià)07654壓力鍋50

39004566電吹風(fēng)20012002233熱水器100110005886電磁爐148680訂購單位商品編號

銷售量幸福社區(qū)0765420永安社區(qū)0765415永安社區(qū)0223360和諧居委會(huì)0456690愛民小區(qū)05886110幸福社區(qū)0456640設(shè)計(jì)如圖所示表單,將products.dbf和sale.dbf兩個(gè)數(shù)據(jù)表添加到表單的數(shù)據(jù)環(huán)境中,組合框與products.dbf表中的商品名稱字段綁定。表單運(yùn)行后,在組合框中選擇一商品名稱,在列表框List1中顯示訂購該商品的信息,如圖所示。顧客信息表(GK.DBF)顧客消費(fèi)積分表(JF.DBF)顧客編號姓名085422王小鳳074561孫麗081319吳遠(yuǎn)平072450程志龍085212李娟娟購買商品消費(fèi)金額消費(fèi)積分顧客編號化妝品588.0074561西服1280.0085422靴子566.0085212食品217.2072450食品78.0081319帽子128.0074561皮鞋358.0085422“上機(jī)6”設(shè)計(jì)如圖所示表單,表單運(yùn)行后,單擊“計(jì)算并顯示”按鈕,可以計(jì)算消費(fèi)積分(其中顧客編號的末尾為2,則消費(fèi)積分為消費(fèi)金額的整數(shù)部分,否則消費(fèi)積分為消費(fèi)金額一半的整數(shù)部分),并填入JF.DBF表中,并在表格中顯示顧客消費(fèi)積分表(JF.dbf)的信息。設(shè)計(jì)如圖所示表單,表單運(yùn)行后,單擊“匯總”按鈕,匯總每位顧客的消費(fèi)積分,并按總積分從小到大的順序在編輯框edit1中顯示每位顧客的姓名和消費(fèi)總積分,如圖所示。雙擊表單空白處關(guān)閉表單。將數(shù)據(jù)表:圖書.dbf(字段有:書號C/3,書名C/6,價(jià)格n/5/1等字段)添加到表單的數(shù)據(jù)環(huán)境中,執(zhí)行如下代碼后,可以統(tǒng)計(jì)出計(jì)算機(jī)類圖書的平均價(jià)格,并在標(biāo)簽Label1中顯示。請?zhí)羁胀晟瞥绦?。N=0S=0Dowhilenoteof()if"計(jì)算機(jī)"$書名 n=n+1s=s+價(jià)格Endif______________EnddoThisform.Label1.caption=_____________有3個(gè)數(shù)據(jù)表:讀者.dbf(讀者編號/C,讀者姓名/C);圖書.dbf(書號/C,書名/C);借閱.dbf(書號/C,讀者編號/C,借閱日期/D),創(chuàng)建如圖3所示表單,將組合框與讀者表的讀者編號字段綁定,表單運(yùn)行時(shí),在組合框combo1中選擇讀者編號則在標(biāo)簽中l(wèi)abel3中輸出讀者姓名,在列表框中輸出該讀者借閱的圖書的書名和借閱日期。組合框“combo1”的“interactivechange”事件代碼如下,請?zhí)羁铡hisform.list1.clearbh=alltrim(this.value)select讀者姓名from讀者where讀者編號=bhinto_______________thisform.label3.caption=aa(1)select書名,借閱日期from圖書a,借閱b;wherea.書號=b.書號and讀者編號=bhintodbfxxusexxthisform.list1.additem("書名借閱日期")scanthisform.list1.additem(書名+__________

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論