版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第四章表的基本操作1VisualFoxPro4.1表的建立4.2表的顯示與維護(hù)2VisualFoxPro4.1.1設(shè)計(jì)表的結(jié)構(gòu)1.字段名字段名是表中每個(gè)字段的名字,它必須以漢字、字母或下劃線(xiàn)開(kāi)頭,由漢字、字母、數(shù)字或下劃線(xiàn)組成。自由表中的字段名最多為10個(gè)字符,數(shù)據(jù)庫(kù)表中的字段名最多為128個(gè)字符。當(dāng)數(shù)據(jù)庫(kù)表轉(zhuǎn)化為自由表時(shí)截去超長(zhǎng)部分的字符。2.字段類(lèi)型字段類(lèi)型表示該字段中存放數(shù)據(jù)的類(lèi)型。在第上一章中,已經(jīng)介紹了VisualFoxPro的類(lèi)型類(lèi)型。在設(shè)計(jì)表的結(jié)構(gòu)時(shí),可根據(jù)需要確定表中各字段的類(lèi)型。4.1表的建立3VisualFoxPro3.字段寬度字段寬度用以表明該字段允許存放的最大字節(jié)數(shù)或數(shù)值位數(shù)。在建立表結(jié)構(gòu)時(shí),應(yīng)根據(jù)所存數(shù)據(jù)的具體情況規(guī)定字符型、數(shù)值型、浮動(dòng)型這3種字段的寬度,若有小數(shù)部分則小數(shù)點(diǎn)也占一位。其他類(lèi)型字段的寬度均由系統(tǒng)統(tǒng)一規(guī)定,它們是:貨幣型、日期型、日期時(shí)間型、雙精度型字段寬度均為8字節(jié),邏輯型字段寬度為1字節(jié),整型、備注型字段和通用型字段寬度均為4字節(jié)。
注意:備注型和通用型字段的內(nèi)容都沒(méi)有直接存放在表文件中,而是存放在一個(gè)與表文件同名的備注文件(擴(kuò)展名為.fpt)中。它們4個(gè)字節(jié)的寬度僅用于存放有關(guān)內(nèi)容在備注文件中的實(shí)際存儲(chǔ)地址。4VisualFoxPro4.小數(shù)位數(shù)只有數(shù)值型與浮動(dòng)型字段才有小數(shù)位數(shù),小數(shù)位數(shù)至少應(yīng)比該字段的寬度值小2。若字段值是整數(shù),則應(yīng)定義小數(shù)位數(shù)為0。雙精度型字段允許輸入小數(shù),但不需事先定義小數(shù)位數(shù),小數(shù)點(diǎn)將在輸入數(shù)據(jù)時(shí)輸入。5.是否允許為空表示是否允許字段接受空值(NULL)。空值是指無(wú)確定的值,它與空字符串、數(shù)值0等是不同的。例如,表示成績(jī)的字段,空值表示沒(méi)有確定成績(jī),0表示0分。一個(gè)字段是否允許為空值與字段的性質(zhì)有關(guān),例如作為關(guān)鍵字的字段是不允許為空值的。5VisualFoxPro命令操作方式我們可以利用菜單操作方式建立表結(jié)構(gòu),也可以在命令窗口中使用CREATE命令來(lái)建立表的結(jié)構(gòu)。其命令格式是:
CREATE[<表文件名>|?]
在命令中使用?或省略該參數(shù)時(shí),打開(kāi)“創(chuàng)建”對(duì)話(huà)框,提示輸入表名并選擇保存表的位置。
CREATE命令執(zhí)行后,屏幕上彈出表設(shè)計(jì)器窗口,命令操作轉(zhuǎn)變?yōu)椴藛尾僮鳌?VisualFoxPro4.1.3向表輸入記錄在把剛建立好的表結(jié)構(gòu)存盤(pán)以后,若要立即輸入記錄,此時(shí),屏幕顯示記錄輸入窗口,用戶(hù)可通過(guò)它輸入一條條記錄。7VisualFoxPro1.記錄輸入窗口在記錄輸入窗口的標(biāo)題欄上給出了表的名稱(chēng),窗口左上角有控制菜單按鈕,通過(guò)它可關(guān)閉該窗口,窗口的右上角有最小化、最大化和關(guān)閉按鈕,窗口的右邊和下邊各為縱向和橫向滾動(dòng)條。如果已經(jīng)輸了很多數(shù)據(jù)記錄,可以使用縱向滾動(dòng)條,使記錄內(nèi)容上、下移動(dòng)。如果某個(gè)字段定義得很寬,它的輸入內(nèi)容被隱蔽在窗口的后面。這里可以使用橫向滾動(dòng)條,使窗口內(nèi)容左右推移。8VisualFoxPro窗口內(nèi)左側(cè)縱向列出該表的所有字段名稱(chēng),以供輸入記錄,記錄和記錄之間有一條橫線(xiàn)分隔。字段名右邊文本區(qū)示意出每個(gè)字段的寬度,控制著輸入的字符個(gè)數(shù)。輸入到定義的寬度時(shí)機(jī)器會(huì)發(fā)出“蜂鳴”聲以示警告,并立即自動(dòng)進(jìn)到下一字段去。如果字段中輸入的內(nèi)容比定義的寬度要小,那么在輸入完后,按Tab鍵或回車(chē)鍵可進(jìn)到下一個(gè)字段去。9VisualFoxPro對(duì)于數(shù)值型字段,且?guī)в行?shù)點(diǎn),系統(tǒng)在該字段中會(huì)自動(dòng)給出小數(shù)點(diǎn)。對(duì)于日期型字段,系統(tǒng)自動(dòng)給出斜杠,以分開(kāi)年、月、日的輸入位置。VisualFoxPro中,日期的顯示格式有多種。因此在輸入日期型字段數(shù)據(jù)時(shí),必須搞清楚當(dāng)前采用的日期格式,否則系統(tǒng)會(huì)發(fā)出警告,需要重新輸入。如果字段是備注型的或是通用型的,輸入它們的數(shù)據(jù)時(shí)就要采用其他方法了。10VisualFoxPro2.備注型字段數(shù)據(jù)的輸入在記錄輸入窗口中,備注型字段顯示“memo”標(biāo)志,其值通過(guò)一個(gè)專(zhuān)門(mén)的編輯窗口輸入。具體的操作方法是:(1)將光標(biāo)移到備注型字段的memo處,按Ctrl+PgDn或雙擊字段的memo標(biāo)志,進(jìn)入備注型字段編輯窗口。(2)在此窗口,VisualFoxPro提供了一個(gè)字處理環(huán)境,可以像任何字處理軟件那樣輸入、編輯文本。11VisualFoxPro(3)編輯完成后,按Ctrl+W將數(shù)據(jù)存入相應(yīng)的備注文件之中,并返回到記錄輸入窗口。或按Ctrl+Q或Esc則廢棄本次輸入的備注數(shù)據(jù)并返回到記錄輸入窗口。在備注型字段輸入數(shù)據(jù)后,該字段的memo標(biāo)志變成Memo了。通過(guò)字段中memo里的第一個(gè)字母是大寫(xiě)還是小寫(xiě),可以判斷出該備注型字段是否已經(jīng)輸入了內(nèi)容。12VisualFoxPro3.通用型字段數(shù)據(jù)的輸入通用型字段的顯示與備注型字段類(lèi)似,不同的是對(duì)于通用型字段在編輯窗口中標(biāo)識(shí)是Gen或gen,其中該字段為空時(shí)為gen,若在其中已經(jīng)存入對(duì)象,則變?yōu)镚en。通用型字段的輸入可使用編輯菜單的插入對(duì)象命令,或通過(guò)剪貼板粘貼。具體操作方法是:(1)將光標(biāo)移到通用型字段的gen處,按Ctrl+PgDn或雙擊字段的gen標(biāo)志,進(jìn)入通用型字段編輯窗口。13VisualFoxPro(2)選擇“編輯”菜單中的“插入對(duì)象”命令,出現(xiàn)“插入對(duì)象”對(duì)話(huà)框。若插入的對(duì)象是新建的,則單擊“新建”單選按鈕,然后從“對(duì)象類(lèi)型”列表框中選擇要?jiǎng)?chuàng)建的對(duì)象類(lèi)型。若插入的對(duì)象已經(jīng)存在,則單擊“由文件創(chuàng)建”單選按鈕,在“文件”文本框中直接輸入文件的路徑及文件名,也可按下“瀏覽”按鈕進(jìn)行瀏覽查找。若不是將已存在的文件實(shí)際插入表中,而是建立一種鏈接的關(guān)系,則需單擊“鏈接”復(fù)選框。若需要將插入的對(duì)象顯示為一個(gè)圖標(biāo),則單擊“顯示圖標(biāo)”復(fù)選框。14VisualFoxPro經(jīng)過(guò)上述操作后,單擊“確認(rèn)”按鈕,所選定的對(duì)象將自動(dòng)插入到表中。上述過(guò)程也可以通過(guò)剪貼板來(lái)完成。先用圖形編輯程序(如畫(huà)圖程序)將圖形送至剪貼板,再回到通用型字段編輯窗口,選擇編輯菜單中的粘貼命令,剪貼板中的圖形就送至該窗口。(3)關(guān)閉通用型字段編輯窗口。15VisualFoxPro4.2.1表的打開(kāi)與關(guān)閉1.表的打開(kāi)對(duì)表進(jìn)行操作,首先要打開(kāi)表。具體操作方法是:選擇“文件”菜單下的“打開(kāi)”命令,出現(xiàn)“打開(kāi)”對(duì)話(huà)框。在該對(duì)話(huà)框中選擇要打開(kāi)的表,或在“文件名”文本框中直接鍵入表文件名,然后按“確定”按鈕將其打開(kāi)。若打開(kāi)了新的表,則會(huì)關(guān)閉原先已打開(kāi)的表。4.2表的顯示與維護(hù)16VisualFoxPro在“打開(kāi)”對(duì)話(huà)框中還有“以只讀方式打開(kāi)”和“獨(dú)占”兩個(gè)復(fù)選框可供選擇,如果選擇“以只讀方式打開(kāi)”復(fù)選框,則不允許對(duì)表進(jìn)行修改,默認(rèn)的打開(kāi)方式是讀/寫(xiě)方式,即可修改。如果選擇“獨(dú)占”復(fù)選框即不允許其他用戶(hù)在同一時(shí)刻也使用該表,如果不選擇“獨(dú)占”復(fù)選框即允許其他用戶(hù)在同一時(shí)刻也使用該表,也就是以“共享”方式打開(kāi)表。默認(rèn)的打開(kāi)方式由SETEXCLUSIVEON|OFF的設(shè)置值確定,系統(tǒng)原默認(rèn)設(shè)置為ON。也可以在命令窗口使用USE命令打開(kāi)表。命令格式是:
USE<表文件名>[NOUPDATE][EXCLUSIVE|SHARED]
其中NOUPDATE指定以只讀方式打開(kāi)表,EXCLUSIVE指定以獨(dú)占方式打開(kāi)表,SHARED指定以共享方式打開(kāi)表。17VisualFoxPro2.表的關(guān)閉對(duì)表操作完畢后,應(yīng)及時(shí)關(guān)閉,以保證更新后的內(nèi)容能寫(xiě)入相應(yīng)的表中。關(guān)閉表的具體操作方法是:選擇“窗口”菜單中的“數(shù)據(jù)工作期”命令,彈出數(shù)據(jù)工作期窗口,在數(shù)據(jù)工作期窗口中選擇“關(guān)閉”按鈕關(guān)閉表。
在命令窗口中使用不帶文件名的USE命令,亦可關(guān)閉打開(kāi)的表。18VisualFoxPro4.2.2表的顯示1.表結(jié)構(gòu)的顯示列出指定表的結(jié)構(gòu),包括文件更新日期、記錄個(gè)數(shù)、記錄長(zhǎng)度及各字段的名稱(chēng)、類(lèi)型、寬度和小數(shù)位數(shù)等內(nèi)容。命令格式是:
LIST|DISPLAYSTRUCTURE;
[TOPRINTER[PROMPT]|TOFILE<文件名>]
兩個(gè)命令的作用基本相同,區(qū)別僅在于LIST是連續(xù)顯示,當(dāng)顯示的內(nèi)容超過(guò)一屏幕時(shí),自動(dòng)向上滾動(dòng),直到顯示完成為止。DISPLAY是分屏顯示,顯示滿(mǎn)屏?xí)r暫停,待用戶(hù)按任一鍵后繼續(xù)顯示后面的內(nèi)容。有關(guān)命令子句的含義是:(1)若選擇TOPRINTER子句,則一邊顯示一邊打印。若包括
PROMPT命令,則在打印前顯示一個(gè)對(duì)話(huà)框,用于設(shè)置打印
機(jī),包括打印份數(shù)、打印的頁(yè)碼等。(2)若選擇TOFILE<文件名>,則在顯示的同時(shí)將表結(jié)構(gòu)輸出
到指定的文本文件中。19VisualFoxPro2.表記錄的顯示顯示當(dāng)前表中的記錄或指定的表達(dá)式的值也是使用LIST或DISPLAY命令。命令格式是:
LIST|DISPLAY[[FIELDS]<表達(dá)式表>][<范圍>];
[FOR<條件>][WHILE<條件>];
[TOPRINTER[PROMPT]|TOFILE<文件名>][OFF]命令中各子句的含義是:(1)FIELDS<表達(dá)式表>指定要顯示的表達(dá)式。表達(dá)式可直接使用字
段名,也可以是含有字段名的表達(dá)式,甚至是不含字段名的任何
表達(dá)式。如果省略FIELDS命令,則顯示表中所有字段的值。但備注型和通
用型字段內(nèi)容不顯示,除非備注型和通用型字段明確地包括在表
達(dá)式表中。20VisualFoxPro(2)若選定FOR子句,則顯示滿(mǎn)足所給條件的所有記錄。若選定WHILE子句,顯示直到條件不成立時(shí)為止,這時(shí)后面即使還有滿(mǎn)足條件的記錄也不再顯示。FOR子句和WHILE子句同時(shí)使用時(shí)WHILE子句優(yōu)先。(3)<范圍>、FOR子句和WHILE子句用于決定對(duì)哪些記錄進(jìn)行操作。如果有FOR子句,缺省的范圍為ALL,有WHILE子句,缺省的范圍為REST。如果FOR子句或WHILE子句以及范圍全省略,對(duì)于LIST缺省為所有記錄,即取ALL,對(duì)于DISPLAY缺省為當(dāng)前記錄,即取NEXT1。此外,對(duì)于DISPLAY命令是分屏輸出,對(duì)于LIST是連續(xù)輸出。(4)選用OFF時(shí),表示只顯示記錄內(nèi)容而不顯示記錄號(hào)。若省略該項(xiàng)則同時(shí)顯示記錄號(hào)和記錄內(nèi)容。21VisualFoxPro例:對(duì)學(xué)生表,寫(xiě)出進(jìn)行如下操作的命令:(1)顯示前5條記錄。(2)顯示記錄號(hào)為奇數(shù)的記錄。(3)顯示漢族男學(xué)生的記錄。(4)顯示非漢族學(xué)生的姓名、性別、民族、生日及入學(xué)成績(jī)。操作命令如下:
USE學(xué)生
LISTNEXT5LISTFORMOD(RECNO(),2)=1LISTFOR民族=“漢"AND性別="男"LISTFIELDS姓名,性別,民族,生日,入學(xué)成績(jī)FOR民族!="漢"USE【例3.1】
查看學(xué)號(hào)為04004學(xué)生的姓名和生日。22VisualFoxPro4.2.3表的修改1.表結(jié)構(gòu)的修改要修改當(dāng)前表的結(jié)構(gòu),既可修改各字段的名字、類(lèi)型、寬度、小數(shù)位數(shù),又可增加、刪除、移動(dòng)字段或者修改索引標(biāo)記。命令格式是:
MODIFYSTRUCTURE
修改表結(jié)構(gòu)時(shí),屏幕上會(huì)出現(xiàn)表設(shè)計(jì)器窗口,這和建立表時(shí)的屏幕畫(huà)面是一樣的(如圖4.2所示)。不過(guò)在修改表結(jié)構(gòu)時(shí),在窗口上會(huì)顯示出原有表的結(jié)構(gòu),此時(shí)可以根據(jù)需要修改表的結(jié)構(gòu)?!安迦搿卑粹o用來(lái)在光標(biāo)所在字段之前插入新的字段?!皠h除”按鈕用來(lái)刪除光標(biāo)處的字段。用鼠標(biāo)拖動(dòng)每個(gè)字段最左側(cè)的小方塊,可以調(diào)整字段的排列順序。如果要修改原有字段的屬性,可先將光標(biāo)移到需要修改的位置,然后進(jìn)行修改。23VisualFoxPro表結(jié)構(gòu)修改完成后,在表設(shè)計(jì)器窗口單擊“確定”按扭,出現(xiàn)詢(xún)問(wèn)“結(jié)構(gòu)更改為永久性更改?”確認(rèn)對(duì)話(huà)框,選“是”將保存對(duì)表結(jié)構(gòu)所作的修改,否則放棄修改。單擊“取消”按扭,出現(xiàn)詢(xún)問(wèn)“放棄結(jié)構(gòu)更改?”確認(rèn)對(duì)話(huà)框,選“是”表示修改無(wú)效且關(guān)閉表設(shè)計(jì)器窗口,否則可繼續(xù)修改。24VisualFoxPro2.全屏幕編輯修改全屏幕編輯修改是指對(duì)顯示在屏幕上的記錄數(shù)據(jù),通過(guò)移動(dòng)光標(biāo),對(duì)光標(biāo)處的字段進(jìn)行修改。(1)打開(kāi)瀏覽窗口。打開(kāi)表后,在“顯示”菜單中選擇“瀏覽”命令,則打開(kāi)瀏覽窗口,表的內(nèi)容將出現(xiàn)在瀏覽窗口中。在瀏覽窗口,可以用鼠標(biāo)單擊瀏覽窗口的滾動(dòng)條或滾動(dòng)塊查看未出現(xiàn)在窗口中的信息,也可用鍵盤(pán)的光標(biāo)控制鍵PgUp、PgDn來(lái)查看。對(duì)于備注型字段和通用型字段,若其中含有內(nèi)容,則分別顯示為Memo和Gen,若字段中沒(méi)有內(nèi)容,則顯示為memo和gen。雙擊Gen和Memo或亮條在其上面時(shí),按Ctrl+PgDn鍵可看到其中的內(nèi)容。25VisualFoxPro(2)命令方式在命令窗口中輸入:BROWSE、CHANG或EDIT命令。3、記錄的追加(1)追加方式選擇“文件”→“打開(kāi)”命令,打開(kāi)需追加記錄的表,然后選擇“顯示”→“瀏覽”命令,打開(kāi)瀏覽窗口,再選擇“顯示”→“追加方式”命令即可添加新記錄。(2)追加記錄方式在瀏覽窗口打開(kāi)的情況下,選擇“表”→“追加新記錄”命令即可添加一條新記錄。26VisualFoxPro(3)記錄追加的命令方式格式:APPEND[BLANK](4)文件追加的命令方式格式:
APPENDFROM<文件名>[FILEDS<字段列表>][FOR<條件>][[TYPE][DELIMTTED[WITH<定界符>|WITHBLANK|WITHTAB]|SDF|XLS]]【例3.2】
使用命令格式將存放在Excel文件xsb.xls中的數(shù)據(jù)追加到學(xué)生表中。27VisualFoxPro4、記錄的插入格式:INSERT[BLANK|BEFORE]功能:在當(dāng)前打開(kāi)表中的當(dāng)前位置之前或之后插入一條新記錄。[BEFORE]:在當(dāng)前記錄前插入新記錄,否則在當(dāng)前記錄后插入新記錄。[BLANK]:在當(dāng)前記錄后插入一條空白記錄。28VisualFoxPro例:對(duì)學(xué)生表增加6號(hào)和7號(hào)記錄。
USE學(xué)生表
GO6INSERTBEFORE&&此時(shí)新增加的6號(hào)記錄變成當(dāng)前記錄
INSERT&&在6號(hào)記錄之后插入一條新記錄,即第7號(hào)記錄29VisualFoxPro5.成批替換修改記錄有時(shí)對(duì)記錄數(shù)據(jù)的修改是有規(guī)律的,對(duì)這種數(shù)據(jù)的修改如果仍用BROWSE等命令逐個(gè)修改就很麻煩,而使用成批替換修改的方法就非常方便。命令格式是:
REPLACE<字段1>WITH<表達(dá)式1>[ADDITIVE]
[,<字段2>WITH<表達(dá)式2>[ADDITIVE]][,…][<范圍>][FOR<條件>][WHILE<條件>]
該命令用一個(gè)表達(dá)式的值替換當(dāng)前表中一個(gè)字段的值。30VisualFoxPro命令中各子句的含義是:(1)若不選擇<范圍>和FOR子句或WHILE子句,則默認(rèn)為當(dāng)前記錄。如果選擇了FOR子句,則<范圍>默認(rèn)為ALL,選擇了WHILE子句,則<范圍>默認(rèn)為REST。(2)ADDITIVE只能在替換備注型字段時(shí)使用。使用ADDITIVE,備注型字段的替換內(nèi)容將附加到備注型字段原來(lái)內(nèi)容的后面,否則用表達(dá)式的值改寫(xiě)原備注型字段內(nèi)容?!纠?.3】
在“成績(jī)表”中,將所有成績(jī)?cè)黾?0%。
USE成績(jī)表
REPLALL成績(jī)WITH成績(jī)*(1+0.1)31VisualFoxPro例:寫(xiě)出對(duì)學(xué)生表進(jìn)行如下操作的命令:(1)將非漢族學(xué)生的入學(xué)成績(jī)?cè)黾?0分。(2)將6號(hào)記錄的生日修改為1983年9月7日;操作命令如下:
USE學(xué)生表
REPLACE入學(xué)成績(jī)WITH入學(xué)成績(jī)+20FOR民族!=“漢”
GO6&&將記錄指針定位到6號(hào)記錄
REPLACE生日WITH{^1983-09-07}32VisualFoxPro6、刪除記錄
VisualFoxPro對(duì)記錄的刪除分兩步進(jìn)行:首先對(duì)想要?jiǎng)h除的記錄加上刪除標(biāo)志,這時(shí)被標(biāo)記的記錄并沒(méi)有真正被刪除,需要時(shí)仍可以恢復(fù)。然后對(duì)加了刪除標(biāo)志的記錄真正地從表中刪除掉。
(1)給記錄加刪除標(biāo)志命令格式是:
DELETE[<范圍>][FOR<條件>][WHILE<條件>]
該命令給指定的記錄加上刪除標(biāo)志。若不選擇可選項(xiàng),則僅對(duì)當(dāng)前記錄加上刪除標(biāo)志。
(2)取消刪除標(biāo)記命令格式是:
RECALL[<范圍>][FOR<條件>][WHILE<條件>]
該命令取消指定記錄上的刪除標(biāo)志,若不選擇可選項(xiàng),則僅取消當(dāng)前記錄的刪除標(biāo)志。33VisualFoxPro(3)真正刪除記錄命令格式是:
PACK
該命令清除所有帶刪除標(biāo)志的記錄。
例:刪除學(xué)生表中5~10之間的全部記錄。
USE學(xué)生
GO5DELETENEXT6PACK(4)刪除全部記錄命令格式是:
ZAP
該命令刪除當(dāng)前表的全部記錄,只留下表結(jié)構(gòu)。34VisualFoxPro4.2.4表記錄指針的定位1.絕對(duì)定位絕對(duì)定位是將記錄指針定位到指定記錄。命令格式是:
GO<記錄號(hào)>|TOP|BOTTOM
命令中記錄號(hào)的取值范圍是1至當(dāng)前表中的最大記錄個(gè)數(shù),即函數(shù)RECCOUNT()的值,否則出錯(cuò)。TOP和BOTTOM分別表示表的首、末記錄。35VisualFoxPro2.相對(duì)定位相對(duì)定位是以當(dāng)前記錄位置為基準(zhǔn),向前或向后移動(dòng)記錄指針。命令格式是:
SKIP[<記錄數(shù)>]
如果<記錄數(shù)>的值為正數(shù),則記錄指針往表尾方向移動(dòng),若為負(fù)數(shù),則往表頭方向移動(dòng)。若省略此項(xiàng),則記錄指針移到下一個(gè)記錄。如果記錄指針指向末記錄而執(zhí)行SKIP,則RECON()返回一個(gè)比表記錄數(shù)大1的數(shù),且EOF()返回.T.。如果記錄指針指向首記錄而執(zhí)行SKIP-1,則RECNO()返回1,且BOF()返回.T.。利用BOF()和EOF()這兩個(gè)函數(shù)可以掌握有關(guān)記錄指針移動(dòng)的情況。當(dāng)BOF()和EOF()這兩個(gè)函數(shù)的值已經(jīng)為.T.時(shí),再企圖向相同方向移動(dòng)指針(執(zhí)行SKIP命令),系統(tǒng)便會(huì)報(bào)錯(cuò)。36VisualFoxPro3.查詢(xún)定位先介紹順序查詢(xún),索引查詢(xún)?cè)诤竺娼榻B表的索引時(shí)介紹。順序查詢(xún)的命令格式是:LOCATE[<范圍>]FOR<條件>|WHILE<條件>如果指定<范圍>,則按指定<范圍>查找,省略<范圍>時(shí)默認(rèn)為ALL。找到后,記錄指針指向該記錄,函數(shù)FOUND()值為.T.,否則,記錄指針指向<范圍>的最末一個(gè)記錄上,省略<范圍>則指向文件尾,函數(shù)FOUND()值為.F.。當(dāng)查找到第一個(gè)滿(mǎn)足條件的記錄后,如果執(zhí)行CONTINUE
命令,則繼續(xù)尋找滿(mǎn)足條件的記錄,直到<范圍>結(jié)束為止。37VisualFoxPro例:在學(xué)生表中查詢(xún)漢族男生的姓名、入學(xué)成績(jī)和年齡。操作命令如下:USE學(xué)生表LOCATFOR民族=“漢”AND性別="男"DISP姓名,入學(xué)成績(jī),YEAR(DATE())-YEAR(生日)CONTINUE?RECNO(),姓名,入學(xué)成績(jī),YEAR(DATE())-YEAR(生日)38VisualFoxPro應(yīng)用示例:1、對(duì)學(xué)生表,寫(xiě)出進(jìn)行如下操作的命令:(1)顯示前5條記錄。
GOTOPLISTNEXT5(2)顯示入學(xué)成績(jī)高于600分的學(xué)生記錄。
LISTFRO入學(xué)成績(jī)>600(3)顯示記錄號(hào)為奇數(shù)的記錄。
LISTFORRECNO()%2!=039VisualFoxPro(4)顯示年齡大于等于18歲但小于等于25歲的學(xué)生記錄。
listforbetween(year(date())-year(生日),18,25)(5)顯示少數(shù)民族的男生記錄。
listfor民族!="漢"(6)顯示在1984年12月31日至1981年1月1日之間出生的學(xué)生記錄。
listfor生日>{^1981-01-01}and生日<{^1984-12-31}40VisualFoxPro(7)顯示漢族女學(xué)生的記錄。
listforand民族="漢"and性別="女"(8)顯示入學(xué)成績(jī)?cè)?80分以上的漢族女生。
listfor入學(xué)成績(jī)>580and民族="漢"and性別="女"2、在學(xué)生表中查詢(xún)漢族男生的姓名、入學(xué)成績(jī)和年齡。
use學(xué)生表
locafor民族="漢"and性別="男"
disp
姓名,入學(xué)成績(jī),year(date())-year(生日)cont
disp
姓名,入學(xué)成績(jī),year(date())-year(生日)41VisualFoxPro4.2.6表的復(fù)制1.復(fù)制表的結(jié)構(gòu)命令格式是:
COPYSTRUCTURETO<文件名>[FIELDS<字段名表>]
該命令將當(dāng)前表的結(jié)構(gòu)復(fù)制到指定的表中。僅復(fù)制當(dāng)前表的結(jié)構(gòu),其記錄數(shù)據(jù)不復(fù)制。命令中各子句的含義是:(1)<文件名>是復(fù)制產(chǎn)生的表名,復(fù)制后只有結(jié)構(gòu)而無(wú)任何記錄。(2)若給出了FIELDS<字段名表>選項(xiàng),則生成的空表文件中只含有<字段名表>中給出的字段,若省略此項(xiàng),則復(fù)制的空表文件的結(jié)構(gòu)和當(dāng)前表相同。42VisualFoxPro2.復(fù)制表命令格式是:
COPYTO<文件名>[FIELDS]<字段名表>[<范圍>][FOR<條件>][WHILE<條件>][[TYPE]SDF|DELIMITED|XLS][WITH<定界符>|BLANK]
該命令將當(dāng)前表中的數(shù)據(jù)與結(jié)構(gòu)同時(shí)復(fù)制到指定的表中,即復(fù)制了一個(gè)新的表。此命令還可以將當(dāng)前表復(fù)制生成一個(gè)其他格式的數(shù)據(jù)文件。43VisualFoxPro命令中各子句的含義是:(1)<文件名>表示復(fù)制后產(chǎn)生的新的文件名。(2)若選擇了FIELDS<字段名表>,則將<字段名表>中給出的部分字段的數(shù)據(jù)復(fù)制到指定的文件中,省略此項(xiàng),則等價(jià)于當(dāng)前表的全部字段。字段名表中還可包含有其他工作區(qū)表的字段。(3)<范圍>和FOR<條件>、WHILE<條件>決定了對(duì)哪些記錄進(jìn)行復(fù)制。省略這些子句時(shí),則復(fù)制當(dāng)前表的所有記錄。(4)復(fù)制含有備注型字段的表時(shí),如果指定要復(fù)制該備注型字段,則在復(fù)制表的同時(shí),復(fù)制相應(yīng)的備注文件。44VisualFoxPro(5)若選擇了SDF或DELIMITED,則將當(dāng)前表復(fù)制成指定的文本文件,默認(rèn)擴(kuò)展名為T(mén)XT。其格式由SDF和DELIMITED決定。SDF為標(biāo)準(zhǔn)格式,記錄定長(zhǎng),不用分隔符和定界符,每個(gè)記錄均從頭部開(kāi)始存放,均以回車(chē)符結(jié)束。DELIMITED為通用格式,記錄不等長(zhǎng),每個(gè)記錄均以回車(chē)符結(jié)束。若選用BLANK,字段之間用一個(gè)空格分隔,否則用一個(gè)逗號(hào)分隔。若選用<定界符>,字符型數(shù)據(jù)用指定的<定界符>括起來(lái),否則用雙引號(hào)括起來(lái)。若選擇了XLS,則得到一個(gè)Excel文件,該文件只能在Excel中打開(kāi)。45VisualFoxPro
例:對(duì)學(xué)生表進(jìn)行復(fù)制操作,并分析目標(biāo)文件的類(lèi)型。(1)將入學(xué)成績(jī)大于600分的記錄復(fù)制到new.dbf中。(2)分別生成標(biāo)準(zhǔn)格式和通用格式的文本文件new1.txt和new2.txt。操作命令如下:
USE學(xué)生
COPYTOnewFOR入學(xué)成績(jī)>600USEnew&&查看新表的記錄
LISTCOPYTOnew1SDFTYPEnew1.txt&&查看新文本文件的內(nèi)容
COPYTOnew2DELIMITEDTYPEnew2.txt&&注意和new1.txt文件格式上的差異。46VisualFoxPro4.3.1表的排序排序是根據(jù)不同的字段對(duì)當(dāng)前表的記錄做出不同的排列,產(chǎn)生一個(gè)新的表。新表與舊表內(nèi)容完全一樣,只是它們的記錄排列順序不同而已。命令格式是:
SORTTO<文件名>ON<字段1>[/A|/D][/C][,<字段2>[/A|/D][/C]…][FIELDS<字段名表>][<范圍>][FOR<條件>][WHILE<條件>]
該命令對(duì)當(dāng)前表中的記錄按指定的字段排序,并將排序后的記錄輸出到一個(gè)新的表中。4.3表的排序與索引47VisualFoxPro命令中各子句的含義是:(1)<文件名>是排序后產(chǎn)生的新表文件名,其擴(kuò)展名默認(rèn)為.dbf。(2)由<字段1>的值決定新表中記錄的排列順序,缺省時(shí),按升序排列。不能按備注型或通用型字段排序??梢杂枚鄠€(gè)字段排序。<字段1>為首要排序字段,<字段名1>的值相等的記錄再按<字段2>進(jìn)一步排序,依此類(lèi)推。(3)對(duì)于在排序中使用的每個(gè)字段,可以指定升序或降序的排列順序。/A表示升序,/D表示降序,/A或/D適合于任何類(lèi)型的字段。缺省時(shí),字符型字段中的字母大小寫(xiě)是不同的。如果在字符型字段后加上/C,則忽略大小寫(xiě)。可以把/C與/A或/D選項(xiàng)結(jié)合在一起使用。例如,/AC或/DC。48VisualFoxPro(4)由FIELDS指定從當(dāng)前表中的字段來(lái)生成新表中包含的字段名。如果省略FIELDS子句,當(dāng)前表中的所有字段都包含在新表中。(5)各種類(lèi)型的字段名都可用做排序關(guān)鍵字。數(shù)值型字段按數(shù)值大小進(jìn)行排序,字符型字段值的大小根據(jù)組成字符串的字符的ASCII碼值的大小進(jìn)行排序,漢字按其內(nèi)碼大小,日期型字段按年、月、日的先后順序進(jìn)行排序,邏輯型字段.F.小于.T.。(6)若省略<范圍>、FOR<條件>和WHILE<條件>等選項(xiàng),表示對(duì)所有記錄排序。49VisualFoxPro例對(duì)學(xué)生表,顯示入學(xué)成績(jī)最高的5名學(xué)生的記錄。操作命令如下:
USE學(xué)生
SORTON入學(xué)成績(jī)/DTOcjbUSEcjb&&打開(kāi)排序后生成的新表文件
LISTNEXT550VisualFoxPro4.3.2索引概述1.索引的概念排序由于要建立一個(gè)新的表,因此數(shù)據(jù)記錄很多時(shí),既費(fèi)時(shí)間,又占用磁盤(pán)空間,為此,常用建立索引文件的方法對(duì)表的記錄重新組織。索引并不是重新排列表記錄的物理順序,而是另外形成一個(gè)索引關(guān)鍵表達(dá)式值與記錄號(hào)之間的對(duì)照表,這個(gè)對(duì)照表就是索引文件。索引文件中記錄的排列順序稱(chēng)為邏輯順序。索引文件發(fā)生作用后,對(duì)表進(jìn)行操作時(shí)將按索引表中記錄的邏輯順序進(jìn)行操作,而記錄的物理順序只反映了輸入記錄的歷史,對(duì)表的操作將不會(huì)產(chǎn)生任何影響。對(duì)于用戶(hù)來(lái)說(shuō),索引不但可以使數(shù)據(jù)記錄重新組織時(shí)節(jié)省磁盤(pán)空間,而且可以提高表的查詢(xún)速度。51VisualFoxPro2.索引文件的種類(lèi)
VisualFoxPro提供了兩種不同類(lèi)型的索引文件:?jiǎn)嗡饕募蛷?fù)合索引文件。(1)單索引文件:?jiǎn)嗡饕募侵敢粋€(gè)索引文件中只能保存一個(gè)索引,其擴(kuò)展名為.idx。采用單索引時(shí),對(duì)于每一個(gè)索引都要建立一個(gè)文件,這勢(shì)必造成索引文件的增多,特別是在更新索引時(shí),必須打開(kāi)所有的索引文件,這是不方便的。單索引文件有普通的和壓縮的兩種。壓縮的索引文件可以使索引文件少占存儲(chǔ)空間。(2)復(fù)合索引文件:復(fù)合索引文件可以存儲(chǔ)多個(gè)索引,其擴(kuò)展名為.cdx。復(fù)合索引文件中的每個(gè)索引用一個(gè)索引標(biāo)志(IndexTag)來(lái)表示。一個(gè)復(fù)合索引文件中可包含的索引的數(shù)目亦即索引標(biāo)志的數(shù)目?jī)H受內(nèi)存空間的限制。復(fù)合索引文件一定是壓縮的索引文件。52VisualFoxPro復(fù)合索引文件分為結(jié)構(gòu)復(fù)合索引文件和非結(jié)構(gòu)復(fù)合索引文件二類(lèi),結(jié)構(gòu)復(fù)合索引文件名與相應(yīng)的表名相同(由系統(tǒng)創(chuàng)建),非結(jié)構(gòu)索引文件名是在定義復(fù)合索引文件時(shí)由用戶(hù)自行命名,二者擴(kuò)展名都是.cdx。
只要打開(kāi)數(shù)據(jù)表,結(jié)構(gòu)復(fù)合索引文件將由系統(tǒng)自動(dòng)打開(kāi)。這就意味著當(dāng)對(duì)表的記錄進(jìn)行修改時(shí),全部索引也將自動(dòng)更新。非結(jié)構(gòu)復(fù)合索引文件使用時(shí)需用命令打開(kāi)。所以一般情況下,使用結(jié)構(gòu)復(fù)合索引是更方便。復(fù)合索引將多個(gè)索引集中到一個(gè)索引文件,和單索引相比,效率更高,使用更為方便。53VisualFoxPro3.索引的類(lèi)型在VisualFoxPro中索引分為4種類(lèi)型:(1)主索引:指建立索引的字段值不允許出現(xiàn)重復(fù)值的索引,這樣的索引可以起到關(guān)鍵字的作用。如果在任何已含有重復(fù)數(shù)據(jù)的字段中建立主索引,VF將產(chǎn)生錯(cuò)誤信息,如果一定要在這樣的字段上建立主索引,則必須首先刪除重復(fù)的字段值。建立主索引的字段可以看作是主關(guān)鍵字,一個(gè)表只能有一個(gè)主關(guān)鍵字,所以一個(gè)表只能創(chuàng)建一個(gè)主索引。主索引可以確保字段中輸入值的惟一性并決定了處理記錄的順序。如一個(gè)表已有了一個(gè)主索引;還可以為它添加候選索引。(2)候選索引:候選索引和主索引具有相同的特性,建立候選索引的字段可看作是候選關(guān)鍵字,所以一個(gè)表可以建立多個(gè)候選索引。候選索引和主索引一樣要求字段的惟一性并決定了處理記錄的順序。在數(shù)據(jù)庫(kù)表和自由表中均可為每個(gè)表建立多個(gè)候選索引。54VisualFoxPro(3)惟一索引:指索引項(xiàng)的惟一,而非字段值的惟一,即在使用相應(yīng)的索引時(shí),重復(fù)的索引字段值只有惟一一個(gè)值出現(xiàn)在索引項(xiàng)中。為保持同早期版本的兼容性而設(shè)。在一個(gè)表中可以建立多個(gè)惟一索引。(4)普通索引:它允許字段中出現(xiàn)重復(fù)記錄,并且索引項(xiàng)中也允許出現(xiàn)重復(fù)值。在一個(gè)表中可以建立多個(gè)普通索引。對(duì)自由表而言,只能建立普通索引、惟一索引和候選索引。對(duì)數(shù)據(jù)庫(kù)表而言,可以建立:普通索引、惟一索引、候選索引和主索引。主索引和候選索引都必須存儲(chǔ)在結(jié)構(gòu)復(fù)合索引文件中,不能存儲(chǔ)在非結(jié)構(gòu)索引文件和單索引文件中。普通索引和惟一索引可以存儲(chǔ)在非結(jié)構(gòu)索引文件和單索引文件中。55VisualFoxPro4.3.3建立索引文件1.用命令建立索引命令格式是:
INDEXON<索引表達(dá)式>TO<單索引文件名>|TAG<索引標(biāo)志名>[FOR<條件>][COMPACT][ASENDING|DESCENDING][UNIQUE][ADDITIVE]
該命令對(duì)當(dāng)前表建立一個(gè)索引文件或增加索引標(biāo)志。命令中各子句的含義:(1)<索引表達(dá)式>是包含當(dāng)前表中的字段名的表達(dá)式,表達(dá)式中的操作數(shù)應(yīng)具有相同的數(shù)據(jù)類(lèi)型。(2)若給出TO<單索引文件名>子句,則建立一個(gè)單索引文件。若給出TAG<索引標(biāo)志名>,則表示建立一個(gè)結(jié)構(gòu)復(fù)合索引文件,或?yàn)橐呀⒉⒋蜷_(kāi)的結(jié)構(gòu)復(fù)合索引文件增加索引標(biāo)志。56VisualFoxPro(3)若選擇FOR<條件>選項(xiàng),則只有哪些滿(mǎn)足條件的記錄才出現(xiàn)在索引文件中。(4)選用COMPACT,則建立一個(gè)壓縮的單索引文件。復(fù)合索引文件自動(dòng)采用壓縮方式。(5)復(fù)合索引時(shí),系統(tǒng)默認(rèn)或選用ASCENDING,按索引表達(dá)式的升序建立索引。選用DESCENDING按降序建立索引。單索引文件只能按升序索引。(6)選用UNIQUE,則對(duì)于索引表達(dá)式值相同的記錄,只有第一個(gè)記錄列入索引文件。(7)選用ADDITIVE,則建立本索引文件時(shí),以前打開(kāi)的索引文件仍保持打開(kāi)狀態(tài)。57VisualFoxPro
例1:建立單索引文件,顯示入學(xué)成績(jī)最高的5名學(xué)生的記錄。
USE學(xué)生表
INDEXON-入學(xué)成績(jī)TOsyLISTNEXT5
例2:對(duì)學(xué)生表建立結(jié)構(gòu)復(fù)合索引文件,其中包含2個(gè)索引:(1)按學(xué)號(hào)的升序排序,在索引文件中不允許有學(xué)號(hào)相同的記錄。(2)先按性別升序排序,性別相同再按入學(xué)成績(jī)降序排序。
USE學(xué)生表
INDEXON學(xué)號(hào)TAGsy1UNIQUEINDEXON性別+STR(1000-入學(xué)成績(jī))TAGsy258VisualFoxPro4.3.4索引文件的使用1.打開(kāi)索引文件索引文件必須先打開(kāi)才能使用。結(jié)構(gòu)復(fù)合索引文件隨相關(guān)表的打開(kāi)而自動(dòng)打開(kāi),但單索引文件和非結(jié)構(gòu)復(fù)合索引文件必須由用戶(hù)自己打開(kāi)。打開(kāi)索引文件有兩種方法,一種是在打開(kāi)表的同時(shí)打開(kāi)索引文件,另一種是在打開(kāi)表后,需要使用索引時(shí),再打開(kāi)索引文件。
(1)表和索引文件同時(shí)打開(kāi)命令格式是:
USE<表文件名>INDEX<索引文件名表>
該命令打開(kāi)指定的表及其相關(guān)的索引文件。59VisualFoxPro命令中各子句的含義是:①<索引文件名表>可以包含多個(gè)索引文件,這些索引文件可以是單索引文件,也可以是非結(jié)構(gòu)復(fù)合索引文件。其中只有第一個(gè)索引文件對(duì)表的操作起控制作用,稱(chēng)為主索引文件。②如果第一個(gè)索引文件是非結(jié)構(gòu)復(fù)合索引文件,由于包含多個(gè)索引標(biāo)志,無(wú)法確定哪個(gè)索引標(biāo)志起作用,所以在打開(kāi)后還要確定主索引,否則對(duì)表進(jìn)行操作時(shí),數(shù)據(jù)記錄仍按物理順序排列。60VisualFoxPro
(2)打開(kāi)表后再打開(kāi)索引文件命令格式是:
SETINDEXTO[<索引文件名表>][ADDITIVE]
該命令功為當(dāng)前表打開(kāi)一個(gè)或多個(gè)索引文件。命令中各子句的含義是:①省略任何選項(xiàng)而直接使用SETINDEXTO,將關(guān)閉當(dāng)前工作區(qū)中除結(jié)構(gòu)復(fù)合索引文件之外的全部索引文件。②若省略ADDITIVE選項(xiàng),則在使用該命令打開(kāi)索引文件時(shí),除結(jié)構(gòu)復(fù)合索引文件之外的所有索引文件均被關(guān)閉。61VisualFoxPro2、確定主控索引命令格式是:
SETORDERTO[<索引文件順序號(hào)>|<單索引文件名>]|[TAG]<索引標(biāo)志名>[OF<復(fù)合索引文件名>]]
該命令指定表的主控索引文件或主控索引標(biāo)志。62VisualFoxPro命令中各子句的含義是:(1)<索引文件順序號(hào)>表示已打開(kāi)的索引文件的序號(hào),用以指定主控索引。單索引文件首先按打開(kāi)的先后順序標(biāo)識(shí)序號(hào),然后,結(jié)構(gòu)復(fù)合索引文件的索引標(biāo)志按其生成的順序計(jì)數(shù),最后是非結(jié)構(gòu)復(fù)合索引文件的索引標(biāo)志按其生成的順序計(jì)數(shù)。(2)最好使用<單索引文件名>指定一個(gè)單索引文件為主控索引文件,這樣做比用索引文件順序號(hào)更直觀。(3)[TAG]<索引標(biāo)志名>[OF<復(fù)合索引文件名>]用于指定一個(gè)已打開(kāi)的復(fù)合索引文件中的一個(gè)索引標(biāo)志為主控索引。(4)不帶任何短語(yǔ)的SETORDERTO命令可以取消主控索引。63VisualFoxPro使用索引文件后,雖然表中各記錄的物理順序并未改變。但記錄指針不再按物理順序移動(dòng),而是按主控索引文件中記錄的邏輯順序移動(dòng),因此整個(gè)表中的記錄是按索引關(guān)鍵表達(dá)式值排序的結(jié)果。
使用索引文件時(shí),還要特別注意以下幾點(diǎn):(1)在使用GO命令時(shí),GO<數(shù)值表達(dá)式>使記錄指針指向具體的物理記錄號(hào),而與索引無(wú)關(guān),而GOTOP|BOTTOM將使記錄指針指向邏輯首或邏輯尾記錄,這時(shí)GOTOP不再等同于GO1。(2)SKIP命令按邏輯順序移動(dòng)記錄指針。(3)表被打開(kāi)后,記錄指針位于TOP位置,而不一定指向1號(hào)記錄。64VisualFoxPro
例:當(dāng)有索引文件時(shí),分析記錄指針的移動(dòng)規(guī)律。
USE學(xué)生表
INDEXON入學(xué)成績(jī)TOsy3GO6?RECNO(),姓名
SKIP?RECNO(),姓名65VisualFoxPro3.關(guān)閉索引文件命令格式是:
CLOSEINDEX
或
SETINDEXTO
該命令關(guān)閉當(dāng)前工作區(qū)內(nèi)所有打開(kāi)的索引文件。但結(jié)構(gòu)復(fù)合索引文件不能關(guān)閉,它隨表的關(guān)閉而自動(dòng)關(guān)閉。此外,使用無(wú)任何選項(xiàng)的USE命令,除了關(guān)閉當(dāng)前工作區(qū)的表外,也關(guān)閉了與之相關(guān)的索引文件。66VisualFoxPro
4.刪除索引命令格式是:
DELETEFILE<索引文件名>DELETETAGALL|<索引標(biāo)志名表>
第一種格式的命令用于刪除一個(gè)單索引文件。第二種格式的命令用于刪除打開(kāi)的復(fù)合索引文件的所有索引標(biāo)志或指定的索引標(biāo)志。如果一個(gè)復(fù)合索引文件的所有索引標(biāo)志都被刪除,則該復(fù)合索引文件也就自動(dòng)被刪除了。67VisualFoxPro5.更新索引索引文件依賴(lài)于表而存在,當(dāng)表中的數(shù)據(jù)發(fā)生變化時(shí),索引文件也應(yīng)相應(yīng)地被更新。如果在對(duì)表進(jìn)行修改時(shí),已經(jīng)打開(kāi)了相關(guān)的索引文件,則VisualFoxPro會(huì)對(duì)索引文件自動(dòng)更新。如果沒(méi)有打開(kāi)索引文件,則數(shù)據(jù)記錄的變化無(wú)法反映到索引文件中去。這時(shí)需要重新索引,當(dāng)然可以使用前面介紹過(guò)的INDEX命令重新建立索引文件,但這樣做需要提供若干選擇項(xiàng),比較煩瑣。通常的辦法是使用REINDEX命令來(lái)更新所有打開(kāi)的索引文件。命令格式是:
REINDEX[COMPACT]
使用COMPACT可以把普通的單索引文件變成壓縮的單索引文件。68VisualFoxPro6.索引查詢(xún)定位索引查詢(xún)定位是在當(dāng)前表中,按已確定的主索引文件關(guān)鍵字來(lái)查詢(xún)與指定表達(dá)式值相匹配的第一條記錄,找到后將記錄指針定位于該記錄。命令格式是:
SEEK<表達(dá)式>
命令中的<表達(dá)式>可以是數(shù)值型、字符型、日期型或邏輯型表達(dá)式,但必須與索引表達(dá)式一致。若<表達(dá)式>為字符串常量,則必須用引號(hào)括起來(lái),若為內(nèi)存變量或數(shù)值表達(dá)式則可直接使用。對(duì)于字符串表達(dá)式,有精確查詢(xún)和不精確查詢(xún)之分,精確查詢(xún)要求表達(dá)式的值與索引關(guān)鍵字值完全相同,才認(rèn)為找到,不精確查詢(xún)只要表達(dá)式的值與索引關(guān)鍵字值左邊若干字符相同,就認(rèn)為找到。查詢(xún)方式由SETEXACTON|OFF設(shè)置。該命令只能使記錄指針定位于符合條件的第一條記錄,可用SKIP命令使指針指向下一個(gè)符合條件的記錄。69VisualFoxPro除SEEK命令外,VisualFoxPro還提供了
FIND命令,也可用于索引查詢(xún),其格式為:
FIND<字符常量>|<數(shù)值常量>
要注意FIND后面是字符常量或數(shù)值常量,不能是表達(dá)式,且字符串常量可以不用引號(hào)括起來(lái)。例:對(duì)學(xué)生表,查詢(xún)1983年6月21日出生的學(xué)生的記錄。
USE學(xué)生表
INDEXON生日TAGsy4D={^1983-06-21}SEEKDDISP70VisualFoxPro應(yīng)用示例:對(duì)學(xué)生表,建立一個(gè)結(jié)構(gòu)復(fù)合索引文件,其中包括2個(gè)索引:入學(xué)成績(jī)按降序排列;生日按升序排列。(1)、顯示入學(xué)成績(jī)前5名的學(xué)生記錄;
indexon入學(xué)成績(jī)DESCtagsy1indexon生日tagsy2setordertosy1listnext5(2)、查詢(xún)年齡最小和最大的學(xué)生記錄。
setordertosy2gobottom71VisualFoxPro
dispgotop
disp72VisualFoxPro4.4.1統(tǒng)計(jì)記錄個(gè)數(shù)命令格式是:
COUNT[<范圍>][FOR<條件>][WHILE<條件>][TO<內(nèi)存變量>]
該命令統(tǒng)計(jì)當(dāng)前表中,在指定范圍內(nèi)滿(mǎn)足指定條件的記錄個(gè)數(shù)。
4.4表的統(tǒng)計(jì)與計(jì)算73VisualFoxPro命令中各子句的含義是:(1)<范圍>選擇項(xiàng)的缺省值為ALL。使用TO<內(nèi)存變量>選擇項(xiàng),將統(tǒng)計(jì)記錄個(gè)數(shù)的結(jié)果存入指定的內(nèi)存變量中。(2)若設(shè)置了SETTALKOFF,則不顯示統(tǒng)計(jì)的結(jié)果。若設(shè)置了SETDELETEDON命令,則作了刪除標(biāo)記的記錄不被計(jì)數(shù)。(3)不帶任何選項(xiàng)的COUNT命令與RECCOUNT()函數(shù)作用相同,都可以獲得一個(gè)表的記錄數(shù)。但RECCOUNT()函數(shù)忽略DELETED設(shè)置,它總是把做了刪除標(biāo)記的記錄也計(jì)入總數(shù)中。要想忽略已刪除的記錄或只計(jì)數(shù)那些符合某些條件的記錄,就必須使用COUNT命令。74VisualFoxPro例:對(duì)學(xué)生表,分別統(tǒng)計(jì)男女生的人數(shù)。操作命令如下:USE學(xué)生表COUNTFOR性別=”女”TOx1COUNTFOR性別=”男”TOx2?x1,x275VisualFoxPro4.4.2求數(shù)值表達(dá)式之和與平均值命令格式是:
SUM|AVERAGE[<表達(dá)式表>][<范圍>][FOR<條件>][WHILE<條件>][TO<內(nèi)存變量表>|ARRAY<數(shù)組>
該命令在當(dāng)前表中,求指定表達(dá)式之和或平均值。76VisualFoxPro命令中各子句的含義是:(1)兩
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年大學(xué)本科 冰雪運(yùn)動(dòng)(運(yùn)動(dòng)實(shí)務(wù))試題及答案
- 2025年大學(xué)農(nóng)學(xué)(農(nóng)業(yè)發(fā)展趨勢(shì))試題及答案
- 2025年高職材料成型及控制技術(shù)(成型工藝優(yōu)化)試題及答案
- 安全工作年會(huì)策劃方案講解
- 2026年熱力學(xué)在航空航天工程中的重要性
- 2025華大教育集團(tuán)教師招聘10人備考題庫(kù)參考答案詳解
- 2026云南昆明市盤(pán)龍區(qū)新迎第二小學(xué)招聘3人備考題庫(kù)參考答案詳解
- 2025年河南建筑職業(yè)技術(shù)學(xué)院招聘工作人員30人備考題庫(kù)及參考答案詳解1套
- 2022-2023學(xué)年廣東深圳羅湖外語(yǔ)實(shí)驗(yàn)學(xué)校九年級(jí)上學(xué)期第一次月考?xì)v史試題含答案
- 2025北方特種能源集團(tuán)審計(jì)中心工作人員招聘?jìng)淇碱}庫(kù)(含答案詳解)
- 2026標(biāo)準(zhǔn)版離婚協(xié)議書(shū)-無(wú)子女無(wú)共同財(cái)產(chǎn)債務(wù)版
- 光伏電站巡檢培訓(xùn)課件
- 【期末必刷選擇題100題】(新教材)統(tǒng)編版八年級(jí)道德與法治上學(xué)期專(zhuān)項(xiàng)練習(xí)選擇題100題(含答案與解析)
- 年末節(jié)前安全教育培訓(xùn)
- GB/T 93-2025緊固件彈簧墊圈標(biāo)準(zhǔn)型
- 建筑公司工資薪酬管理制度(3篇)
- 2025至2030中國(guó)疝氣修補(bǔ)術(shù)行業(yè)調(diào)研及市場(chǎng)前景預(yù)測(cè)評(píng)估報(bào)告
- 建設(shè)工程測(cè)繪驗(yàn)線(xiàn)標(biāo)準(zhǔn)報(bào)告模板
- 2024-2025學(xué)年福建省廈門(mén)市雙十中七年級(jí)(上)期末英語(yǔ)試卷
- 漢語(yǔ)言本科畢業(yè)論文范文模板
- 2025年協(xié)警輔警招聘考試題庫(kù)(新)及答案
評(píng)論
0/150
提交評(píng)論