版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
VisualFoxPro程序設(shè)計(jì)(第三版)第3章數(shù)據(jù)庫和數(shù)據(jù)表的基本操作VisualFoxPro的基本操作3.1VisualFoxPro中的數(shù)據(jù)庫3.2VisualFoxPro中的數(shù)據(jù)表3.3數(shù)據(jù)表的基本操作3.4表記錄的高級(jí)操作3.5多工作區(qū)操作3.63.1VisualFoxPro的基本操作操作VisualFoxPro與前期的數(shù)據(jù)庫產(chǎn)品一樣,都可以支持兩類不同的基本操作方式,即交互式操作方式和程序操作方式。1.交互式方式
VisualFoxPro的交互式操作方式有命令執(zhí)行與界面操作兩種類型。命令執(zhí)行方式與界面操作方式是一致的。許多的命令功能都可以通過相應(yīng)的菜單選擇來實(shí)現(xiàn)。事實(shí)上,當(dāng)用戶選擇了某一菜單命令并執(zhí)行它時(shí),在命令窗口中便會(huì)自動(dòng)顯示與其對(duì)應(yīng)的鍵盤命令,就好像用戶通過鍵盤輸入了該命令一樣,所以在VisualFoxPro中,用戶可以任意選用或交替使用這兩種方法。3.1.1VisualFoxPro的基本操作方式2.程序操作方式程序執(zhí)行方式就是將一系列的語句或命令存儲(chǔ)在一個(gè)文件中而成為一個(gè)程序文件(.PRG),通過運(yùn)行該程序文件,完成某些特殊的功能。程序操作方式不僅運(yùn)行效率高,而且可重復(fù)執(zhí)行。
可見,交互式操作方法雖然方便、靈活,但是當(dāng)用戶需要反復(fù)執(zhí)行某些相同的命令序列,或處理較復(fù)雜的問題時(shí)就不能發(fā)揮計(jì)算機(jī)高速度、自動(dòng)化運(yùn)行的優(yōu)勢(shì)。為此,VisualFoxPro提供了程序執(zhí)行方式來解決該問題。3.1.2命令操作的基本要求1.命令的一般格式為了熟練掌握各種命令的使用方法,首先要了解命令的語法規(guī)則,以便讀者正確地使用命令。命令的一般格式如下所示:<命令關(guān)鍵字>[<范圍>][<表達(dá)式表>];[FOR<條件>][WHILE<條件>]2.命令書寫規(guī)則(1)文件命名方法文件名由主文件名和擴(kuò)展名兩部分組成。主文件名由字符組成,字符可以包括字母、數(shù)字、下劃線、連字符等。擴(kuò)展名由“.”加3個(gè)字母組成,表示文件類型。(2)本書命令、函數(shù)符號(hào)的約定VisualFoxPro的命令在書寫時(shí),為了便于敘述,常引入下列幾個(gè)符號(hào),其約定如下。l
[]:其中的內(nèi)容是可選項(xiàng),不選時(shí)系統(tǒng)自動(dòng)取默認(rèn)值。但在程序輸入時(shí)或在命令窗口中輸入時(shí)均不書寫這對(duì)“[]”,而只寫其中參數(shù)的內(nèi)容。l
<>:其中的內(nèi)容是用戶的選擇項(xiàng),通常有多種可能供用戶選擇一種。若<>不在[]內(nèi),則為必選項(xiàng),即用戶必須選擇多種可能中的一種;若<>在[]內(nèi)時(shí),當(dāng)不選“[]”中的內(nèi)容時(shí),其“<>”中的內(nèi)容也不能選,而當(dāng)選擇“[]”中的內(nèi)容時(shí),其“[]”中的“<>”內(nèi)的內(nèi)容就為必選項(xiàng)。但在程序輸入時(shí)或在命令窗口中輸入時(shí)均不書寫這對(duì)“[<>]”,而只寫其中的參數(shù)的內(nèi)容。l
/:為二選一表示符。要求用戶從本符號(hào)的左右兩項(xiàng)中選擇一頂。同樣,在命令或函數(shù)的輸入中,“/”線也不要寫。l
...:省略符。它表示在一個(gè)命令或函數(shù)表達(dá)式中,某一部分可以按同一方式重復(fù)。從上述命令格式可以看到,VisualFoxPro命令主要由5個(gè)部分組成,各部分功能如下。(1)
命令關(guān)鍵字:是一個(gè)英文動(dòng)詞,是VisualFoxPro的命令名,用來指定計(jì)算機(jī)要完成的操作。例如STORE、LIST、COPYTO等都是命令關(guān)鍵字,分別表示定義內(nèi)存變量、顯示表的記錄、復(fù)制表的內(nèi)。(2)表達(dá)式表:表達(dá)式表子句是由數(shù)據(jù)和運(yùn)算符一起構(gòu)成的有意義的式子,各表達(dá)式表是一個(gè)或多個(gè)由逗號(hào)分隔開的表達(dá)式。該表達(dá)式在一般情況下由表中字段名構(gòu)成。表達(dá)式除了可以是字段、字段名表外,還可以加進(jìn)運(yùn)算符,如“單價(jià)*1.05”也是一個(gè)表達(dá)式。3.命令格式的說明(3)范圍子句:范圍子句用來指定命令可以操作的有效記錄范圍。范圍可有下列四種選擇:lALL:指當(dāng)前表中的全部記錄;l
NEXT<n>:指從當(dāng)前記錄開始的連續(xù)N條記錄;l
RECORD<n>:指當(dāng)前表中的第N號(hào)記錄;l
REST:指從當(dāng)前記錄開始到最后一條記錄為止的所有記錄;(4)FOR<條件>子句:對(duì)滿足條件的記錄進(jìn)行操作,如果使用FOR子句,VPF6.0將記錄指針重新指向表文件頂部,系統(tǒng)會(huì)用FOR條件與每條記錄進(jìn)行比較。(5)
WHILE<條件>子句:在表文件中,從當(dāng)前記錄開始,按記錄順序從上向下處理,一旦遇到不滿足條件的記錄,就停止搜索并結(jié)束該命令的執(zhí)行。
FOR和WHILE都是條件子句,但在默認(rèn)范圍選擇項(xiàng)條件下主要有兩點(diǎn)不同:
FOR子句是從首記錄開始判斷邏輯表達(dá)式是真還是假,而WHILE子句則從當(dāng)前記錄起判斷條件是否成立;
FOR子句對(duì)邏輯表達(dá)式取真值的所有記錄進(jìn)行規(guī)則操作,不管這些記錄是呈連續(xù)排列或是間斷排列。而WHILE子句是從當(dāng)前記錄開始,只要遇到其邏輯表達(dá)式取假值就停止操作,不管其后是否有滿足條件的記錄。3.1.3命令的輸入與編輯1.命令的輸入在VisualFoxPro命令窗口中按命令的語法規(guī)則鍵入需要操作的命令,最后按下Enter鍵,就可以執(zhí)行該命令了。2.命令的編輯命令窗口是一個(gè)可以編輯的窗口,可以在命令窗口中進(jìn)行各種編輯操作,如插入、刪除、拷貝、剪切等,或者用光標(biāo)和滾動(dòng)條在整個(gè)命令窗口中上下移動(dòng)。這些特性對(duì)命令輸入起了很大的幫助作用。比如要鍵入一個(gè)和上一次命令相似的命令,那么只需將光標(biāo)移動(dòng)到上一條命令上,然后輸入或刪除命令的不同部分,最后按下Enter鍵,就可以執(zhí)行這條新命令了。3.輸入命令時(shí)的注意事項(xiàng)
(1)命令關(guān)鍵字不能省略,必須是命令行的第一個(gè)英文動(dòng)詞,其它子句可以以任意順序跟在其后,命令動(dòng)詞與各子句之間用一個(gè)或多個(gè)空格隔開,如:
EDITFIELDS學(xué)號(hào),姓名,班級(jí)ALLFOR高等數(shù)學(xué)>=85EDITALLFIELDS學(xué)號(hào),姓名,班級(jí)FOR高等數(shù)學(xué)>=85EDITFOR高等數(shù)學(xué)>=85ALLFIELDS學(xué)號(hào),姓名,班級(jí)(2)命令動(dòng)詞和VISUALFOXPRO保留字一般可用前4個(gè)或4個(gè)以上字母簡寫。如:
DISPLAYMEMORYDISPLMEMODISPMEMO(3)當(dāng)表達(dá)式中,由FIELDS引導(dǎo)字段名表時(shí),字段名表中的各字段間必須用逗號(hào)分割,但逗號(hào)“,”必須是在英文狀態(tài)下輸入的西文逗號(hào)“,”。
(4)命令、關(guān)鍵字、變量名和文件名中的字母既可以大寫也可以小寫,還可以大寫、小寫混合,三者等效。(5)雖然命令窗口可以上下左右滾動(dòng),也可以在一行把命令輸完,但屏幕的左右滾動(dòng)會(huì)很不方便,這時(shí)不妨嘗試一下續(xù)行操作。輸入命令時(shí)可以在命令的關(guān)鍵字或子句之間加分號(hào)(;),然后按回車鍵,再在下一行輸入命令的剩余部分,這樣就可以把一條長命令分成好多行來寫。進(jìn)行續(xù)行操作,應(yīng)注意以下幾點(diǎn):
命令的最后一行不能以分號(hào)結(jié)尾。如:
REPLACEALL實(shí)發(fā)工資WITH(基本工資+職務(wù)津貼+獎(jiǎng)金-養(yǎng)老保險(xiǎn))*1.03FOR工齡>20
當(dāng)一條命令被分成多行輸入時(shí),如果想同時(shí)使用&&命令加入一些注釋,此時(shí)注釋不能出現(xiàn)在分號(hào)之后,而只能將注釋放在命令的最后一行的后面。
當(dāng)準(zhǔn)備執(zhí)行一個(gè)被分成多行的命令時(shí),可將光標(biāo)放在該命令的任意一行上,然后按下Enter鍵。4.設(shè)置命令格式(1)設(shè)置字體在進(jìn)行命令輸入的過程中,可以通過改變命令窗口中的字體大小、行間距等清晰地顯示每一條命令。用戶可以使用“格式”菜單中的“字體”選項(xiàng)改變字體的大小。(2)設(shè)置行縮進(jìn)行縮進(jìn)可以極大地改善被分成多行的命令的可讀性。在命令窗口中為產(chǎn)生縮進(jìn)效果,在輸入命令前先按Tab鍵,當(dāng)然也有可能需要多按幾次TAB鍵,以產(chǎn)生更多的行縮進(jìn),這樣接下來的行就自動(dòng)產(chǎn)生相同的縮進(jìn)。一旦在命令窗口中加入一個(gè)行縮進(jìn),那么接下來的行就可自動(dòng)產(chǎn)生相同的縮進(jìn),不過此時(shí)需要按Ctrl+Enter將光標(biāo)移到下一行,而不能用Enter鍵。(3)出錯(cuò)處理在命令窗口輸入命令時(shí),會(huì)出現(xiàn)一些輸入錯(cuò)誤,在沒發(fā)現(xiàn)之前按下回車鍵之后,系統(tǒng)會(huì)給出一個(gè)簡單的提示。3.2VisualFoxPro中的數(shù)據(jù)庫如果想把多個(gè)表聯(lián)系起來,就一定要建立數(shù)據(jù)庫。只有把這些有關(guān)系的表存放在同一個(gè)數(shù)據(jù)庫中,確定它們的關(guān)聯(lián)關(guān)系,數(shù)據(jù)庫中的數(shù)據(jù)才能被更充分地利用。數(shù)據(jù)庫文件擴(kuò)展名為:.dbc利用“數(shù)據(jù)庫設(shè)計(jì)器”建立數(shù)據(jù)庫,操作方法是:在VisualFoxPro系統(tǒng)主菜單下,進(jìn)入“數(shù)據(jù)庫設(shè)計(jì)”窗口,然后打開“數(shù)據(jù)庫”菜單,對(duì)數(shù)據(jù)庫進(jìn)行各種操作或單擊鼠標(biāo)右鍵,彈出“數(shù)據(jù)庫”快捷菜單,對(duì)數(shù)據(jù)庫進(jìn)行各種操作。還可以通過在“項(xiàng)目管理器”中創(chuàng)建數(shù)據(jù)庫;由文件菜單創(chuàng)建數(shù)據(jù)庫;通過命令建立數(shù)據(jù)庫。3.2.1創(chuàng)建數(shù)據(jù)庫3.2.2數(shù)據(jù)庫的維護(hù)1.?dāng)?shù)據(jù)庫的打開和關(guān)閉
(1)
由文件菜單打開和關(guān)閉數(shù)據(jù)庫打開一個(gè)已存在的數(shù)據(jù)庫,操作方法是:打開“文件”菜單,選擇“打開”,在“打開”窗口,在文件類型下拉框內(nèi),選擇數(shù)據(jù)庫類型,然后輸入要打開的數(shù)據(jù)庫名,再按“確定”按鈕,進(jìn)入“數(shù)據(jù)庫設(shè)計(jì)器”窗口。
(2)
通過命令對(duì)數(shù)據(jù)庫進(jìn)行操作
l
打開一個(gè)數(shù)據(jù)庫
【格式】OPENDATABASE<數(shù)據(jù)庫文件名>|?【功能】打開一個(gè)數(shù)據(jù)庫。
【舉例】在當(dāng)前目錄下打開“教職工”數(shù)據(jù)庫。
opendatabaseD:\LIULI\教職工
修改一個(gè)數(shù)據(jù)庫【格式】MODIFYDATABASE<數(shù)據(jù)庫文件名>|?【功能】修改編輯一個(gè)數(shù)據(jù)庫?!九e例】修改并編輯“教職工”數(shù)據(jù)庫。
MODIdataD:\LIULI\教職工
刪除一個(gè)數(shù)據(jù)庫【格式】DELETEDATABASE<數(shù)據(jù)庫文件名>|?【功能】刪除一個(gè)數(shù)據(jù)庫?!九e例】刪除指定路徑D:\LIULI下的“教職工”數(shù)據(jù)庫。
DELEdataD:\LIULI\教職工2.在數(shù)據(jù)庫中添加表有了數(shù)據(jù)庫文件,就可以向數(shù)據(jù)庫添加表了。通常數(shù)據(jù)表只能屬于一個(gè)數(shù)據(jù)庫文件,如果你想向當(dāng)前數(shù)據(jù)庫中添加的表已被添加到了別的數(shù)據(jù)庫中,在加入你所建立的數(shù)據(jù)庫之前,必須要從其它數(shù)據(jù)庫中移去后才能添加到你的數(shù)據(jù)庫中。向數(shù)據(jù)庫添加數(shù)據(jù)表,操作方法是:打開數(shù)據(jù)庫在“數(shù)據(jù)庫設(shè)計(jì)器”窗口,單擊鼠標(biāo)右鍵,彈出“數(shù)據(jù)庫”快捷菜單,選擇添加表;在“打開”窗口,選擇要添加的表,返回“數(shù)據(jù)庫設(shè)計(jì)器”窗口;重復(fù)操作可以將多個(gè)表添加到數(shù)據(jù)庫中。從數(shù)據(jù)庫中移去或刪除表,主要有以下兩種方式:在“項(xiàng)目管理器”的“數(shù)據(jù)”選項(xiàng)卡中,選擇“數(shù)據(jù)庫”下方“表”中的“教師基本情況表”,然后單擊“移去”按鈕,在彈出的對(duì)話框中,選擇“移去”或“刪除”。在“數(shù)據(jù)庫設(shè)計(jì)器”中的預(yù)刪除的表上單擊鼠標(biāo)右鍵,在彈出的快捷菜單中選擇“刪除”選項(xiàng),或單擊“數(shù)據(jù)庫設(shè)計(jì)器”工具欄上的“移去表”按鈕。也可將預(yù)添加的表文件從數(shù)據(jù)庫中“移去”或“刪除”。3.在數(shù)據(jù)庫中移去/刪除表1.?dāng)?shù)據(jù)庫與表的關(guān)系數(shù)據(jù)表是存儲(chǔ)記錄數(shù)據(jù)的文件,是關(guān)系型數(shù)據(jù)庫管理系統(tǒng)中處理數(shù)據(jù)的基本單元數(shù)據(jù)表是由一組相關(guān)的數(shù)據(jù)按行和列排列的二維表格。表文件擴(kuò)展名為.DBF。類型:自由表:不包含于任何數(shù)據(jù)庫數(shù)據(jù)庫表:包含于某個(gè)數(shù)據(jù)庫(兩者關(guān)系)相關(guān)概念:字段,字段名,記錄,數(shù)據(jù)庫(.DBC)2.字段的命名(P57)3.字段的數(shù)據(jù)類型(P57)3.3VisualFoxPro中的數(shù)據(jù)表3.3.1數(shù)據(jù)表的概念數(shù)據(jù)庫表包含許多自由表沒有的屬性數(shù)據(jù)庫表和自由表可以相互轉(zhuǎn)換自由表添加到數(shù)據(jù)庫中成為數(shù)據(jù)庫表數(shù)據(jù)庫表移出數(shù)據(jù)庫成為自由表一個(gè)表只能屬于一個(gè)數(shù)據(jù)庫如果要將表從一個(gè)數(shù)據(jù)庫轉(zhuǎn)到另一個(gè)數(shù)據(jù)庫中,必須先將它移出前一個(gè)數(shù)據(jù)庫,才能加入后一個(gè)數(shù)據(jù)庫。※自由表和數(shù)據(jù)庫表的關(guān)系教師檔案表示例10個(gè)字段,字段名分別為:編號(hào),姓名等n條記錄12個(gè)字段值編號(hào)姓名性別民族出生日期職稱工作部門工資照片備注25祁月紅女滿族1980-2-18教授民政系2243.56GenMemo26楊曉明男漢族1959-8-25助教民政系4423.65GenMemo27江林華女漢族1980-11-12副教授民政系2134.32GenMemo28成燕燕女漢族1962-1-6講師民政系3354.45GenMemo………………………3.3.2創(chuàng)建表結(jié)構(gòu)“項(xiàng)目管理器/數(shù)據(jù)”“文件/新建/表/表向?qū)А薄拔募?新建/表/新建文件”命令:CREATE[<表名>]可任意定義為數(shù)據(jù)庫表或自由表若當(dāng)前某數(shù)據(jù)庫為打開狀態(tài),則創(chuàng)建的為數(shù)據(jù)庫表,否則為自由表1.創(chuàng)建表的結(jié)構(gòu)創(chuàng)建表結(jié)構(gòu)的幾點(diǎn)說明字段名以字母或漢字開頭,由字母,數(shù)字,下劃線和漢字組成字段類型根據(jù)具體情況而定,字段值與字段類型要匹配若為字段添加索引,在索引列中選擇一種排序方式字段的NULL列有一個(gè)鉤,表示該字段可以接受NULL值在項(xiàng)目管理器的“數(shù)據(jù)”選項(xiàng)卡中,打開數(shù)據(jù)庫選擇數(shù)據(jù)庫下的表,單擊“添加”,添加為數(shù)據(jù)庫表選擇自由表,單擊“添加”,添加為自由表要添加的表必須具備下列條件該表是一個(gè)有效的.DBF文件表不允許與打開的數(shù)據(jù)庫中已有的表同名表不能同時(shí)放在另一個(gè)數(shù)據(jù)庫中要加入表的數(shù)據(jù)庫必須具備下列條件必須以獨(dú)占方式打開。要想獨(dú)占地打開一個(gè)數(shù)據(jù)庫,在使用OPENDATABASE命令時(shí)加入EXCLUSIVE子句2.添加數(shù)據(jù)表到項(xiàng)目中3.修改表結(jié)構(gòu)
當(dāng)建立了數(shù)據(jù)表結(jié)構(gòu)之后,如果發(fā)現(xiàn)表結(jié)構(gòu)有問題,可以利用表設(shè)計(jì)器來修改。
(1)修改字段(P59)
(2)添加/刪除字段(P59)(3)調(diào)整字段順序(P59)4.設(shè)置字段屬性(有補(bǔ)充)對(duì)字段加以注釋,以提醒自己或其它用戶,清楚地掌握字段的屬性、意義及特殊用途等對(duì)字段加以注釋(1)為字段輸入注釋(2)設(shè)置字段的有效性規(guī)則有效性規(guī)則和有效性說明點(diǎn)擊“字段有效性”中“規(guī)則”框的三點(diǎn)按鈕…,可在表達(dá)式生成器中設(shè)置字段的格式對(duì)工資字段設(shè)置規(guī)則違反規(guī)則的出錯(cuò)信息(3)設(shè)置字段顯示設(shè)置字段標(biāo)題系統(tǒng)默認(rèn),表的標(biāo)題顯示的是字段名。字段名的最大長度只有10個(gè)字符長,在進(jìn)行瀏覽時(shí),如果用戶不進(jìn)行字段標(biāo)題的設(shè)置,有時(shí)難以概括清楚該名下數(shù)據(jù)的屬性;為了在顯示表中數(shù)據(jù)時(shí)瀏覽的清晰、方便,用戶可以自定義字段標(biāo)題。標(biāo)題的長度可達(dá)128個(gè)字符例,打開學(xué)生選課數(shù)據(jù)庫|打開學(xué)生表|打開“顯示”菜單|選擇“表設(shè)計(jì)器”,選定需要指定標(biāo)題的字段,在標(biāo)題框中對(duì)標(biāo)題進(jìn)行設(shè)置對(duì)學(xué)號(hào)字段設(shè)置標(biāo)題(4)設(shè)置字段的數(shù)據(jù)輸入設(shè)置默認(rèn)字段值為了提高表中數(shù)據(jù)輸入的速度和準(zhǔn)確性,設(shè)置字段數(shù)據(jù)的默認(rèn)值時(shí),注意字段的類型;字符型數(shù)據(jù)要加定界符“”,日期型數(shù)據(jù)要用到字符日期轉(zhuǎn)換函數(shù)等對(duì)日期時(shí)間設(shè)置默認(rèn)值為提高表中數(shù)據(jù)輸入的速度和準(zhǔn)確性,除了定義字段的默認(rèn)值外,還可以定義字段格式和掩碼。如,學(xué)號(hào)字段只接受數(shù)字字符對(duì)學(xué)號(hào)字段設(shè)置輸入掩碼(5)設(shè)置字段的格式和掩碼格式掩碼中可用的功能符和格式符符號(hào)功能功能符A只能輸入字母D日期型,只能使用系統(tǒng)設(shè)定格式L將數(shù)值前導(dǎo)的零顯示出來M允許多項(xiàng)設(shè)置R顯示文本框的掩碼格式T禁止在字符串的前后輸入空格!小寫字母轉(zhuǎn)換為大寫字母格式符X可輸入任何字符9可輸入數(shù)字和正負(fù)號(hào)#可輸入數(shù)字、空格和正負(fù)號(hào)$在某一固定位置顯示當(dāng)前貨幣符號(hào)$$顯示的貨幣符號(hào)與數(shù)值連在一起*值的左側(cè)顯示“*”號(hào).指定小數(shù)點(diǎn)的位置,小數(shù)點(diǎn)左部的整數(shù)部分按每三位用“,”分隔開1.記錄的輸入界面立即輸入:創(chuàng)建完表結(jié)構(gòu)后,在輸入數(shù)據(jù)記錄對(duì)話框中選擇“是”,如下圖示之后輸入:打開表,選擇“顯示/瀏覽”,選擇“顯示/追加方式”選擇“是”,立即輸入記錄3.3.3輸入數(shù)據(jù)記錄2.輸入記錄(1)各種類型字段記錄的輸入①輸入字符型字段數(shù)據(jù)時(shí),可按其字段屬性的要求,輸入字符或漢字即可。②輸入數(shù)值型、貨幣型、浮點(diǎn)型、雙精度型和整型字段數(shù)據(jù)時(shí),應(yīng)采用十進(jìn)制日常表示法輸入。如果輸入數(shù)據(jù)太大或太小,超出了定義的字段寬度所能表示的范圍,則顯示為若干個(gè)“*”號(hào)。③輸入備注型字段數(shù)據(jù)時(shí),雙擊memo字段(或按【Ctrl+PgDn】組合鍵),彈出編輯窗口,在該窗口輸入相應(yīng)的數(shù)據(jù),數(shù)據(jù)輸入完畢后單擊編輯窗口右上角的關(guān)閉按鈕(或按【Ctrl+W】組合鍵),結(jié)束對(duì)備注型字段的編輯。此時(shí)可以看到memo已經(jīng)變成了Memo了。當(dāng)在編輯過程中想放棄輸入的內(nèi)容,可以按【Esc】鍵,撤銷剛才的操作。④輸入通用型字段數(shù)據(jù)時(shí)。雙擊gen字段(或按【Ctrl+PgDn】組合鍵),彈出編輯窗口,選擇“編輯”|“插入對(duì)象”命令,在彈出的對(duì)話框中選擇預(yù)插入的文件,單擊“確定”按鈕。單擊通用型字段編輯窗口的關(guān)閉按鈕,結(jié)束對(duì)通用型字段的編輯。此時(shí)可以看到gen已經(jīng)變成了Gen。⑤日期型字段以及日期時(shí)間型字段中,日期的輸入格式可用SETDATE命令進(jìn)行設(shè)置,默認(rèn)為美國日期格式(月/日/年,即MM/DD/YY)。⑥如果某字段允許空值(NULL值),就可以使用【Ctrl+0】組合鍵向字段中輸入NULL值。編輯狀態(tài)下的功能鍵及其作用如表3-3所示。(2)輸入記錄數(shù)據(jù)時(shí)應(yīng)注意以下幾點(diǎn):①若輸入的數(shù)據(jù)已填滿高亮區(qū)域,光標(biāo)將自動(dòng)移到下一字段;若輸入的數(shù)據(jù)長度不足字段寬度,須按【Entet】鍵將光標(biāo)移到下一字段。特別地,輸入的數(shù)據(jù)必須與字段類型一致,否則系統(tǒng)將拒絕接收。②邏輯型字段,輸入T或Y表示邏輯“真”,輸入F或N表示邏輯“假”。③日期型字段,該數(shù)據(jù)須與系統(tǒng)的日期格式相一致。默認(rèn)時(shí),系統(tǒng)定義為美國日期格式:“MM/DD/YY”,即為“月/日/年”格式。日期格式可由SETDATE命令進(jìn)行設(shè)置或在工具菜單中的“選項(xiàng)”項(xiàng)目中設(shè)置。④備注型字段和通用型字段,它們的值將在一個(gè)專門的編輯窗口中輸入并編輯。處理結(jié)束后,關(guān)閉此窗口,系統(tǒng)自動(dòng)將其內(nèi)容存入與表文件名相同的.fpt的備注文件中。(3)編輯備注、通用型字段時(shí),編輯窗口的操作方法如下:①光標(biāo)定位memo字段處,雙擊鼠標(biāo)(或光標(biāo)定位memo處,按【Ctrl+PgDn】組合鍵,或【Ctrl+Home】組合鍵),進(jìn)入備注型字段文本編輯狀態(tài),如圖3-8所示。通用型字段的操作相同。②輸入、編輯結(jié)束后,按【Ctrl+W】組合鍵,將輸入的數(shù)據(jù)保存并退出該編輯窗口,(或者單擊編輯窗口的“關(guān)閉”按鈕,VisualFoxPro會(huì)自動(dòng)將修改后的數(shù)據(jù)保存)返回到數(shù)據(jù)輸入的正常狀態(tài);按【Ctrl+Q】組合鍵或【Esc】鍵則清除當(dāng)前輸入的信息,返回到數(shù)據(jù)輸入的正常狀態(tài)。③通用型字段存儲(chǔ)的是多媒體數(shù)據(jù),無法由VisualFoxPro系統(tǒng)本身建立,必須依靠Windows的其他應(yīng)用程序提供(如畫筆、Word和Excel等應(yīng)用程序)。因此,通用型字段數(shù)據(jù)的輸入,要在應(yīng)用程序中建立好后,通過VisualFoxPro的“編輯”菜單中的“粘貼”或“插入”命令來完成。(4)通過OLE實(shí)現(xiàn)數(shù)據(jù)的嵌入或鏈接:下面簡單介紹通過OLE實(shí)現(xiàn)數(shù)據(jù)的嵌入或鏈接,進(jìn)行通用型字段數(shù)據(jù)的輸入操作方法。①進(jìn)入通用型字段的編輯窗口后,選擇“編輯”|“插入對(duì)象”命令,彈出如圖3-12所示的“插入對(duì)象”對(duì)話框。②在該對(duì)話框中選擇一種類型(類型的多少要根據(jù)用戶使用的當(dāng)前計(jì)算機(jī)系統(tǒng)中安裝的應(yīng)用程序的多少?zèng)Q定,但有些類型是Windows操作系統(tǒng)所共有的),在隨后打開的圖片編輯框內(nèi)打開所需的圖片,并將此圖片復(fù)制到剪貼板上。③退出圖片編輯框,返回到通用字段的編輯框。選擇“編輯”|“選擇性粘貼”命令,并在隨之出現(xiàn)的對(duì)話框中單擊“粘貼”按鈕(實(shí)現(xiàn)鏈接)。。1.打開表的菜單方式單擊“文件”菜單中的“打開”選項(xiàng),打開“打開”對(duì)話框。選擇將要打開的文件類型、文件名及其路徑,然后單擊“確定”按鈕。也可以用以下幾種方式打開數(shù)據(jù)庫即相關(guān)表1)打開包含表的數(shù)據(jù)庫,啟動(dòng)數(shù)據(jù)庫設(shè)計(jì)器2)雙擊要打開的表3)選擇顯示模式(1)單擊“顯示”、“編輯”:編輯該表(edit)以分隔線將每一條記錄分割開,字段按縱向排列。(2)單擊“顯示”、“瀏覽”:瀏覽該表(browse)以一行顯示一條記錄,每一列顯示一個(gè)字段。3.4數(shù)據(jù)表的基本操作3.4.1打開和關(guān)閉表2.打開、關(guān)閉表的命令方式(1)
打開表【格式】USE<表文件名>|?【功能】在當(dāng)前工作區(qū)打開一個(gè)表文件。(2)關(guān)閉表【格式1】USE【功能】關(guān)閉當(dāng)前工作區(qū)中正打開的表文件及其索引文件?!靖袷?】CLOSE[ALL|DATABASES]【功能】關(guān)閉各種類型文件。3.退出VFP系統(tǒng)(1)菜單方式退出VFP系統(tǒng)的方式第2章介紹過,可選用以下任何一種方法退出VFP:
選擇“文件”菜單中“退出”菜單項(xiàng)。
鼠標(biāo)單擊VisualFoxPro6.0窗口右上角的關(guān)閉按鈕。
雙擊VisualFoxPro6.0主窗口左上角的“控制”菜單按鈕。
直接按Alt+F4組合鍵。(2)命令方式【格式】QUIT【功能】關(guān)閉打開的所有文件,退出VFP系統(tǒng)返回到操作系統(tǒng)。3.4.2顯示數(shù)據(jù)命令方式:USE<表名>MODIFYSTRUCTURE菜單方式:1.選定要打開的表:文件/打開
2.打開表設(shè)計(jì)器:顯示/表設(shè)計(jì)器修改字段內(nèi)容調(diào)整字段順序添加字段刪除字段1.表結(jié)構(gòu)的修改2.表文件結(jié)構(gòu)的顯示命令方式【格式】DISPLAY|LISTSTRUCTURE[TOPRINTER|TOFILE<文件名>]【功能】顯示表文件的字段結(jié)構(gòu)。3.表文件記錄數(shù)據(jù)的顯示(1).最簡單的命令形式<命令動(dòng)詞>[<范圍>][<FIELDS子句>][<FOR子句>][<WHILE子句>]
描述:在命令窗口中鍵入一條VFP命令回車后,該命令立即被執(zhí)行,并將命令結(jié)果顯示在VFP主窗口中。范圍:ALL:對(duì)表中全部記錄進(jìn)行操作;NEXT<N>:對(duì)從當(dāng)前記錄在內(nèi)的以下連續(xù)N條記錄進(jìn)行操作;RECORD<N>:只對(duì)第N條記錄進(jìn)行操作;REST:對(duì)從當(dāng)前記錄到文件尾的所有記錄進(jìn)行操作。FIELDS子句:指明當(dāng)前操作涉及表的哪些字段,字段名間用“,”隔開注意:FOR子句與WHILE子句均指明進(jìn)行操作的記錄的條件。其區(qū)別在于:1.范圍缺省時(shí),F(xiàn)OR子句默認(rèn)為ALL;WHILE子句則只從當(dāng)前記錄開始按條件篩選2.當(dāng)發(fā)現(xiàn)一個(gè)記錄不滿足條件時(shí),F(xiàn)OR子句跳過該記錄繼續(xù)檢查下去;WHILE子句則只操作到這個(gè)不滿足條件的記錄為止。若兩者同時(shí)出現(xiàn),則優(yōu)先處理WHILE子句舉例:LISTNEXT5FIELDS學(xué)號(hào),入學(xué)成績FOR入學(xué)成績>=600說明:1.命令以命令動(dòng)詞開頭,且命令動(dòng)詞可缺省寫為前4個(gè)字母2.命令與子句,子句與子句,子句的各部分間須至少以一個(gè)空格隔開;且各子句的書寫順序任意(2).查看表數(shù)據(jù)命令BROWSE[LAST][FIELDS]<字段名表>[FOR<條件>][FREEZE<字段名>][LOCK<數(shù)值表達(dá)式>]功能:瀏覽或編輯表中數(shù)據(jù)參數(shù)描述:FREEZE<字段名>:定義唯一允許修改的字段LOCK<數(shù)值表達(dá)式>:當(dāng)水平方向翻動(dòng)屏幕時(shí),屏幕左邊連續(xù)出現(xiàn)不參加滾動(dòng)的字段數(shù)舉例:顯示教師檔案表中所有記錄的編號(hào),姓名和職稱。
USE教師檔案表
BROWFIELDS學(xué)號(hào),姓名,職稱舉例:顯示教師檔案表中工資>=3000元的教師記錄
USE教師檔案表
LISTFOR工資>=3000LIST|DISPLAY[<范圍>][FIELDS<字段名表>][FOR/WHILE<條件>][TOPRINT][OFF]
功能:選擇輸出表文件中記錄數(shù)據(jù).也可用于顯示表達(dá)式的值說明:LIST與DISPLAY的區(qū)別<范圍>與<條件>缺省時(shí),LIST默認(rèn)為ALL,DISPLAY為當(dāng)前記錄LIST為滾動(dòng)方式輸出,DISPLAY為分屏輸出3.4.3追加記錄菜單方式:在瀏覽或編輯窗口環(huán)境中選“顯示/追加方式”,可自動(dòng)在尾部追加N條記錄選“表/追加新記錄”,只允許添加一條記錄選“表/追加記錄”,從選定文件向當(dāng)前表添加多條記錄格式一:APPEND[BLANK]格式二:APPENDFROM<文件名>|?[FIELDS<字段名表];
[FOR<條件>][SDF]格式三:INSERTINTO<表名>[(字段1[,字段2,…])]VALUE[(表達(dá)式1[,表達(dá)式2,…])];格式四:INSERT[BLANK][BEFORE]命令方式:說明:APPEND相當(dāng)于:菜單方式1;APPENDBLANK相當(dāng)于:菜單方式2;命令方式的格式二相當(dāng)于:菜單方式3;在APPENDFORM命令中,是否使用SDF子句,要根據(jù)文本文件中的數(shù)據(jù)格式來確定。命令方式的格式四:用于在當(dāng)前記錄之前/后插入一條新記錄3.4.4記錄的刪除、恢復(fù)與修改可在“瀏覽”或“編輯”窗口中刪除記錄點(diǎn)擊作刪除標(biāo)記選“表/徹底刪除”對(duì)打了刪除標(biāo)記的記錄作真正刪除1.記錄的邏輯刪除刪除標(biāo)記當(dāng)再次單擊時(shí),為取消標(biāo)記刪除記錄分兩步進(jìn)行:第一步將要?jiǎng)h除的記錄做刪除標(biāo)記,第二步才將記錄真正從表中刪除。
若要有選擇的刪除一組記錄,可單擊“表/刪除記錄”,填寫對(duì)話框。例如:可將教師檔案表中“入學(xué)成績<600分”的所有記錄作刪除標(biāo)記;要作物理刪除,再單擊“表/徹底刪除”。2.記錄的恢復(fù)(P68)加上邏輯刪除標(biāo)記的記錄是可以被恢復(fù)的。在數(shù)據(jù)表瀏覽窗口中,單擊記錄的刪除標(biāo)記,即可取消刪除標(biāo)記,黑色的方框此時(shí)已消失。要恢復(fù)刪除的一組記錄,或者恢復(fù)刪除符合條件的多條記錄時(shí),可以在系統(tǒng)菜單利用“表”|“恢復(fù)記錄”命令來實(shí)現(xiàn)。該對(duì)話框的設(shè)置方法與上述的“刪除”對(duì)話框操作完全相同,輸入設(shè)置條件后單擊“恢復(fù)記錄”按鈕。
3.刪除、恢復(fù)記錄的命令方式格式:DELETE[<范圍>][FOR<條件>][WHILE<條件>]
格式:PACK[DBF][MEMO]
格式:RECALL[<范圍>][FOR<條件>][WHILE<條件>]
格式:ZAP
(1)邏輯刪除命令(2).取消刪除標(biāo)記命令(3).物理刪除命令(4).刪除全部記錄命令ZAP命令與DELETEALL和PACK兩條命令執(zhí)行的結(jié)果相同,區(qū)別在于ZAP直接執(zhí)行物理刪除?!纠縐se教師檔案表
Deletenext6&&教師檔案表上1到6條記錄加刪除標(biāo)記
ListRecallfor性別=‘男’
&&取消性別為男的記錄的刪除標(biāo)記GOTO5Recall&&取消第5條記錄的刪除標(biāo)記Pack&&將帶有刪除標(biāo)記的記錄從表中刪除Zap&&將所有記錄從表中刪除4.修改記錄(P69)(1)全屏幕編輯命令方式【格式1】CHANGE/EDIT[FIELDS<字段名表>][<范圍>][FOR<條件>][WHILE<條件>]【格式2】BROWSE[FIELDS<字段名表>][FOR<條件>]【功能】進(jìn)入全屏幕編輯窗口,顯示并編輯當(dāng)前表文件中指定記錄和字段的內(nèi)容。(2)自動(dòng)替換命令方式【格式】REPLACE[<范圍>]<字段名1>WITH<表達(dá)式1>[ADDITIVE][,<字段名2>WITH<表達(dá)式2>[ADDITIVE]…][FOR<條件>][WHILE<條件>]【功能】用指定<表達(dá)式>的值替換當(dāng)前表中指定范圍內(nèi)滿足條件的記錄中指定<字段>的值。3.4.5表的復(fù)制【格式】COPYTO<文件名>[<范圍>][FIELDS<字段名表>][FOR<條件>][WHILE<條件>]1.復(fù)制任何類型的文件【格式】COPYFILETO<文件名1>TO<文件名1>2.復(fù)制表文件【格式】COPYSTRUTO<文件名>[FIELDS<字段名表>]3.復(fù)制表的結(jié)構(gòu)【例3.6】將“教師任課表”的全部內(nèi)容復(fù)制成一個(gè)新表“教師任課表a”.USE教師任課.dbfcopyto教師任課a.dbfBROWSE
【例3.7】將“教師任課表a”的表結(jié)構(gòu)復(fù)制成一個(gè)新表“教師任課表b”USE教師任課.dbfcopyto教師任課b.dbfstruUSE教師任課b.dbfBROWSE3.4.6記錄的定位瀏覽窗口中:選擇“表/轉(zhuǎn)到記錄”指針指向滿足條件的第一條記錄1.菜單方式格式1:GOTO[RECORD<數(shù)值表達(dá)式>]/TOP/BOTTOM
格式2:GO[RECORD<數(shù)值表達(dá)式>]/TOP/BOTTOM格式3:
<數(shù)值表達(dá)式>命令功能:將記錄指針直接定位到指定的記錄上。絕對(duì)移動(dòng)(GO)、相對(duì)移動(dòng)(SKIP)、查找定位(LOCATE)(1)絕對(duì)移動(dòng)命令2.命令方式:命令參數(shù)描述:<數(shù)值表達(dá)式>:指定一個(gè)物理記錄號(hào),記錄指針移至該記錄上。TOP:將記錄指針定位在表的第一個(gè)記錄上。[BOTTOM]:將記錄指針定位在表的最后一個(gè)記錄上。說明:RECORD可省略。<數(shù)值表達(dá)式>的值必須大于0,且不大于當(dāng)前表文件的記錄個(gè)數(shù)。格式:SKIP[<數(shù)值表達(dá)式>]
功能:將記錄指針向前或向后作相對(duì)若干條記錄的移動(dòng)。參數(shù)描述:<數(shù)值表達(dá)式>:指定記錄指針作相對(duì)移動(dòng)的記錄數(shù)據(jù)。說明:1、移動(dòng)的記錄數(shù)等于<數(shù)值表達(dá)式>的值,其值為正數(shù)時(shí),記錄指針向下移動(dòng),當(dāng)<數(shù)值表達(dá)式>是負(fù)數(shù)時(shí),記錄指針向上移動(dòng)。2、省略選擇項(xiàng)<數(shù)值表達(dá)式>,約定為向下移動(dòng)一條記錄,即SKIP等價(jià)于SKIP1。(2)相對(duì)移動(dòng)命令補(bǔ)充:記錄指針的查找定位命令格式:LOCATE[范圍]FOR<條件>[WHILE<條件>]
CONTINUE功能:將記錄指針定位到滿足條件的第一條記錄上。說明:范圍缺省時(shí)為all;
繼續(xù)查找滿足條件的記錄用continue命令。
舉例:顯示教師檔案表中入學(xué)成績>600分的第二個(gè)同學(xué)記錄
LOCATEFOR入學(xué)成績>600CONTINUEDISPLAY
表當(dāng)前記錄與數(shù)組之間的數(shù)據(jù)傳送(讀、寫)記錄數(shù)組SCATTER[FIELDS<字段名表>][MEMO]TO<數(shù)組名>記錄數(shù)組GATHERFROM<數(shù)組名>[FIELDS<字段名表>][MEMO]【例】USE教師檔案表
GO2SCATTOA?A(2),A(7)GATHFROMADISP屏幕顯示為“26張曉明”*數(shù)組與表之間的數(shù)據(jù)交換(補(bǔ)充)3.5.1記錄的排序與索引功能:使數(shù)據(jù)記錄按一定的順序排列。方式:物理排序(排序)、邏輯排序(索引)。1排序2索引3.5表記錄的高級(jí)操作
按“學(xué)號(hào)”排序圖示
按“學(xué)號(hào)”索引圖示排序:將表中的數(shù)據(jù)按一定的順序重新排列,并將重新排列后的結(jié)果保存成為一個(gè)新的有序表關(guān)鍵字段:決定排列順序的字段,可以是多個(gè)數(shù)據(jù)記錄的排序命令SORTTO<表文件名>ON<字段名1>[/A][/D][/C][,ON<字段名2>[/A][/D][/C]…][ASCENDING|DESCINDING][<范圍>][FOR|WHILE<表達(dá)式>][FIELDS<字段名表>|FIELDSLIKE<通配符>|FIELDSEXCEPT<通配符>]功能:根據(jù)當(dāng)前數(shù)據(jù)表,建立一個(gè)經(jīng)過排序的新數(shù)據(jù)表。1、記錄的排序命令說明排序文件名:新表的表名(文件名)ON子句中<關(guān)鍵字段>:排序字段/A:按升序排列,/D:按降序排列,默認(rèn)為升序/C:排序時(shí)忽略大小寫,否則不忽略若選擇多個(gè)字段,表示多重排序先按<字段1>排列,若字段值相同,再按<字段2>排列……ASCENDING將所有不帶/D的字段指定為升序,DESCINDING將所有不帶/A的字段指定為降序缺省<范圍>、<條件>表示全部記錄FIELDS子句:新表所包含的字段【例3.9】對(duì)教師薪金表,按實(shí)發(fā)工資降序排序,并將排序結(jié)果輸出到SFGZ表中USE教師薪金表SORTON實(shí)發(fā)工資/DTOCJXHUSECJXHBROWSE【例3.10】對(duì)當(dāng)前表中的獎(jiǎng)金大于等于"300"的教師按實(shí)發(fā)工資降序排序,如果實(shí)發(fā)工資相同再按基本工資升序排序。并將排序結(jié)果輸出到“獎(jiǎng)金工資”表中,表中只顯示:編號(hào),姓名,基本工資,獎(jiǎng)金,實(shí)發(fā)工資字段。SORTTO獎(jiǎng)金工資ON實(shí)發(fā)工資/D,基本工資FOR獎(jiǎng)金>=300;FIELDS編號(hào),姓名,基本工資,獎(jiǎng)金,實(shí)發(fā)工資應(yīng)用舉例2、記錄的索引
記錄的索引是一種邏輯排序方法,它不改變當(dāng)前表文件記錄的物理排序順序,而是建立一個(gè)與該表文件相對(duì)應(yīng)的索引文件。(1)索引文件的類型單索引文件:文件中只包含一個(gè)索引標(biāo)識(shí)。擴(kuò)展名為IDX復(fù)合索引文件:文件中包含多個(gè)索引標(biāo)識(shí)。擴(kuò)展名為CDX復(fù)合索引文件又分為結(jié)構(gòu)復(fù)合索引和非結(jié)構(gòu)復(fù)合索引:結(jié)構(gòu)復(fù)合索引:索引文件名與相應(yīng)的表名相同。隨表的打開自動(dòng)打開非結(jié)構(gòu)復(fù)合索引:索引文件名與表文件名不相同。不能自動(dòng)打開INDEXON<索引關(guān)鍵字表達(dá)式>TO<單索引文件名>|TAG<索引標(biāo)識(shí)>[OF<復(fù)合索引文件名>][FOR<條件>][ASCENDING|DESCINDING][UNIQUE|CANDIDATE][ADDITIVE]對(duì)當(dāng)前表中符合條件的記錄進(jìn)行索引<索引關(guān)鍵字表達(dá)式>是由表中的字段、內(nèi)存變量、數(shù)組等構(gòu)成的字符、數(shù)值、日期或邏輯表達(dá)式。[UNIQUE]選項(xiàng)建立惟一索引;CANDIDATE建立候選索引TAG<索引標(biāo)識(shí)>建立復(fù)合索引文件和設(shè)置索引標(biāo)識(shí),若省略O(shè)F子句,為結(jié)構(gòu)復(fù)合索引文件,否則為非結(jié)構(gòu)復(fù)合索引文件(2)索引文件的建立(3)索引的類型主索引:指定的字段或表達(dá)式中索引關(guān)鍵字值絕對(duì)不允許有重復(fù)值。只能在數(shù)據(jù)庫表中而不能在自由表中建立的索引主要用于在永久關(guān)系中的主表或被引用表里建立參照完整性一個(gè)表只能創(chuàng)建一個(gè)主索引候選索引:關(guān)鍵字值絕對(duì)不允許有重復(fù)值、有資格被選做主索引的索引。一個(gè)表可以有多個(gè)候選索引數(shù)據(jù)庫表和自由表都可以建立候選索引。唯一索引:允許索引關(guān)鍵字有重復(fù)的值,當(dāng)有重復(fù)值出現(xiàn)時(shí),索引文件只保存重復(fù)值的第一次值數(shù)據(jù)庫表和自由表都可以建立唯一索引為和早期版本兼容而設(shè)計(jì),很少使用普通索引:是除了上面幾種索引之外的一種索引,它允許索引關(guān)鍵字有重復(fù)的值①在建立索引的同時(shí),該索引文件也同時(shí)打開,②若索引文件已經(jīng)建立,可在打開表文件的同時(shí)打開索引文件?!靖袷健縐SE<表文件>INDEX<索引文件名表>③若索引文件已經(jīng)建立,且表文件已經(jīng)打開,需單獨(dú)打開索引文件【格式】SETINDEXTO[<索引文件名表>][ADDITIVE]【功能】打開一個(gè)或多個(gè)與當(dāng)前表文件相關(guān)的索引文件(.IDX、.CDX)【例3.12】USE教師薪金表
INDEXON基本工資TAGgzDESCENDINGINDEXON編號(hào)TAGbh(4)索引文件的打開【格式1】CLOSEINDEX【格式2】SETINDEXTO【功能】關(guān)閉當(dāng)前工作區(qū)中所有已打開的單索引文件.IDX和非結(jié)構(gòu)復(fù)合索引文件.CDX。注意:結(jié)構(gòu)復(fù)合索引文件只隨表文件的關(guān)閉而關(guān)閉。(5)索引文件的關(guān)閉(6)刪除索引刪除索引標(biāo)識(shí)Deletetagall|<索引標(biāo)識(shí)1>[of<復(fù)合索引文件名>][,<索引標(biāo)識(shí)2>][of<復(fù)合索引文件名>]
從復(fù)合索引文件中移掉一個(gè)或多個(gè)標(biāo)識(shí);若選all刪除所有的索引標(biāo)識(shí),相關(guān)的復(fù)合索引文件也被刪除刪除索引文件Erase<索引文件全名>Deletefile<索引文件全名>3.排序與索引的異同當(dāng)排序的關(guān)鍵字只有單個(gè)字段名時(shí),兩條命令的關(guān)鍵字部分寫法完全相同;若排序的關(guān)鍵字為多個(gè)字段名時(shí),在sort命令中只需將這多個(gè)字段名依次列出,而在index命令中,則要將它們組合成一個(gè)字符型表達(dá)式。索引排序只能升序排列,如需降序則要自己設(shè)計(jì)表達(dá)式,而用sort命令則能方便地對(duì)排列的升、降序進(jìn)行選擇。sort命令中的fields和for等可選項(xiàng)可以在排序的同時(shí)實(shí)現(xiàn)選擇和投影操作。而index命令不具備這些功能。執(zhí)行sort命令將產(chǎn)生一個(gè)新的排序的表文件,而index命令只產(chǎn)生一個(gè)索引文件,不改變?cè)瓉肀砦募挠涗涰樞颉?.5.2記錄的查詢與統(tǒng)計(jì)
查找是按照某些條件在表中查找所需記錄并將記錄指針指向符合條件的第一條記錄。1.記錄的查詢(1)條件查詢無索引查找(順序查找,速度較慢)LOCATEFOR<條件>命令CONTINUE命令有索引查找(速度較快,要求事先對(duì)表進(jìn)行索引)SEEK命令FIND命令(2)查找常數(shù)【格式】find<常數(shù)>【功能】用于查找指定常數(shù)的記錄?!菊f明】這里的常數(shù)是指要查找的關(guān)鍵字,可以是數(shù)值型和字符型。對(duì)數(shù)值型常數(shù),必須直接寫出或者通過宏替換函數(shù)替換;對(duì)字符型常數(shù),當(dāng)字符串左部是非空格常數(shù)時(shí),是否用引號(hào)括起來都是等效的,但是,當(dāng)字符串左部有空格時(shí),必須用引號(hào)括起來。另外,執(zhí)行此命令時(shí),要求在當(dāng)前工作區(qū)中打開查找關(guān)鍵字的主索引文件,并且查找關(guān)鍵字的數(shù)據(jù)類型必須與主索引表達(dá)式值的類型一致。使用此命令進(jìn)行查找時(shí),可以通過eof()或found()函數(shù)的值來判斷是否找到相匹配的記錄。(3)查找表達(dá)式的值【格式】seek<表達(dá)式>【功能】用于查找指定表達(dá)式的記錄?!菊f明】這里的表達(dá)式是查找關(guān)鍵字,表達(dá)式的值可以是數(shù)值型、字符型和日期型。此命令也要求在當(dāng)前工作區(qū)中打開查找關(guān)鍵字的主索引文件,并且查找關(guān)鍵字的數(shù)據(jù)類型必須與主索引表達(dá)式值的類型一致。(1)數(shù)值統(tǒng)計(jì)格式:COUNT[<范圍>][FOR<條件>][WHILE<條件>][TO<內(nèi)存變量>]功能:計(jì)算指定范圍滿足條件的記錄數(shù),并將結(jié)果存于指定的內(nèi)存變量說明:TO<內(nèi)存變量>:指定結(jié)果存放的內(nèi)存變量名,若該變量不存在,系統(tǒng)會(huì)自動(dòng)創(chuàng)建。若設(shè)置了命令setdeletedon,則作了刪除標(biāo)記的記錄不被計(jì)數(shù)。2.記錄的統(tǒng)計(jì)與求和應(yīng)用舉例[例]統(tǒng)計(jì)學(xué)生選課表中成績超過85分的學(xué)生人數(shù)USE學(xué)生選課COUNTFOR成績>85TOcjrs?cjrs(2)求和命令格式:SUM[<數(shù)值型字段表達(dá)式表>][<范圍>][FOR<條件>][WHILE<條件>][TO<內(nèi)存變量>|ARRAY<數(shù)組>]功能:在打開的數(shù)據(jù)表中,對(duì)數(shù)值型字段表達(dá)式求和。<數(shù)值型字段表達(dá)式表>:對(duì)指定表達(dá)式求和,省略該選項(xiàng),則對(duì)所有數(shù)值型字段求和。TO<內(nèi)存變量表>|ARRAY<數(shù)組>:指定結(jié)果存放的內(nèi)存變量名表或數(shù)組名,若變量或數(shù)組不存在,系統(tǒng)自動(dòng)創(chuàng)建,數(shù)組存在且太小時(shí),系統(tǒng)自動(dòng)增加數(shù)組大小。應(yīng)用舉例[例]求學(xué)生選課表中成績的總和。USE學(xué)生選課SUM成績TOzcj?zcj(3)求平均值命令格式:AVERAGE[<數(shù)值型字段表達(dá)式表>][<范圍>][FOR<條件>][WHILE<條件>][TO<內(nèi)存變量>|ARRAY<數(shù)組>]功能:在打開的數(shù)據(jù)表中,對(duì)數(shù)值型字段表達(dá)式求平均值。應(yīng)用舉例[例]求學(xué)生選課表中成績的平均值。USE學(xué)生選課AVERAGE成績TOpjcj?pjcj[例]求學(xué)生表中2000級(jí)同學(xué)的平均年齡USE學(xué)生AVERAGEYEAR(DATE())-YEAR(出生日期)FORLEFT(學(xué)號(hào),4)="2000"TOpjnl?pjnl(4)計(jì)算命令格式:CALCULATE<表達(dá)式表>[<范圍>][FOR<條件>][WHILE<條件>][TO<內(nèi)存變量>|ARRAY<數(shù)組>]功能:在打開的數(shù)據(jù)表中,計(jì)算表達(dá)式的值說明有NULL的記錄不包含在內(nèi)表達(dá)式中可以包含下列函數(shù)AVG(<數(shù)值表達(dá)式>):平均值CNT():表中的記錄數(shù)MAX(<表達(dá)式>):最大值MIN(<表達(dá)式>):最小值SUM(<數(shù)值表達(dá)式>):求和應(yīng)用舉例[例]統(tǒng)計(jì)學(xué)生選課表中成績超過85分的學(xué)生人數(shù)及平均成績USE學(xué)生選課CALCULATECNT(),AVG(成績)FOR成績>85TOxsrs,pjcj?xsrs,pjcj(5)分類求和命令格式:TOTALTO<表文件名>ON<關(guān)鍵字>[FIELDS<數(shù)值型字段表>][<范圍>][FOR<條件>][WHILE<條件>]功能:在打開的數(shù)據(jù)表中,按關(guān)鍵字分類,匯總計(jì)算,將結(jié)果存入新文件中說明數(shù)據(jù)表必須按關(guān)鍵字排序或索引<表文件名>:指定存放計(jì)算結(jié)果的新表文件名<關(guān)鍵字段>:指定作為分組總計(jì)依據(jù)的字段[FIELDS<數(shù)值型字段表>]:指定要總計(jì)的字段3.6多工作區(qū)操作1、工作區(qū)概念
VFP6.0提供了32767個(gè)工作區(qū)。每個(gè)工作區(qū)只能打開一個(gè)表文件,若在已有表文件的工作區(qū)打開新的表文件,以前打開的表文件就會(huì)自動(dòng)關(guān)閉。各表在各自的工作區(qū)中被操作。2、工作區(qū)標(biāo)識(shí)-別名(1).系統(tǒng)別名(1~10分別用A~J單個(gè)字母來命名)(2).表名或用戶定義的別名USE<表名>[ALIAS<別名>][IN<工作區(qū)號(hào)>]
別名可以包含多達(dá)254個(gè)字母、數(shù)字或下劃線,且必須以字母或下劃線開頭。3.6.1工作區(qū)選擇3.工作區(qū)的選擇命令選擇工作區(qū)命令格式為:SELECT<工作區(qū)號(hào)>|<別名>VFP剛啟動(dòng)時(shí)默認(rèn)1號(hào)工作區(qū)為當(dāng)前工作區(qū),SELECT()函數(shù)可以返回當(dāng)前工作區(qū)的區(qū)號(hào)。SELECT0表示選定當(dāng)前未使用的最小號(hào)工作區(qū)。多工作區(qū)中表字段的相互引用在當(dāng)前工作區(qū)上使用其他工作區(qū)上的字段(跨工作區(qū)字段)時(shí),必須用別名標(biāo)識(shí).格式為:別名.字段名或別名->字段名4.VisualFoxPro的工作區(qū)特點(diǎn)①每個(gè)工作區(qū)只允許打開一個(gè)表文件,一個(gè)表文件不能在兩個(gè)及兩個(gè)以上的工作區(qū)同時(shí)打開。②可以使用多個(gè)工作區(qū),但只有一個(gè)為當(dāng)前工作區(qū)。系統(tǒng)啟動(dòng)初始,默認(rèn)當(dāng)前工作區(qū)為1。③每個(gè)工作區(qū)分別為在其工作區(qū)中打開的表文件設(shè)置一個(gè)記錄指針,一般各個(gè)指針相互獨(dú)立移動(dòng),相互不干擾。5.VisualFoxPro的工作區(qū)特點(diǎn)【格式】<工作區(qū)別名>.<字段名>或<工作區(qū)別名>-><字段名>【功能】訪問指定工作區(qū)(非當(dāng)前工作區(qū))中表的數(shù)據(jù)?!纠?.20】P763.6.2表與表之間的聯(lián)接與關(guān)聯(lián)表與表之間的三種關(guān)系:一對(duì)一關(guān)系:在表A中的一條記錄在表B中最多只能有一條記錄與之對(duì)應(yīng),反之,在表B中的一條記錄在表A中也最多只能有一條記錄與之對(duì)應(yīng)。例如:教師檔案表和學(xué)生成績表之間。一對(duì)多關(guān)系:在表A中的一條記錄在表B中可以有多條記錄與之對(duì)應(yīng),而在表B中的一條記錄在表A中最多只能有一條記錄與之對(duì)應(yīng)。例如:教師檔案表和學(xué)生選課表之間。多對(duì)多關(guān)系:在表A中的一條記錄在表
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 電腦速記培訓(xùn)合作合同書
- 公司和個(gè)人之間的租車服務(wù)協(xié)議書范文
- 智能節(jié)電技術(shù)服務(wù)委托協(xié)議
- 2024版合作協(xié)議書格式
- 公交企業(yè)外匯貸款合同
- 建筑工程施工合同撰寫要點(diǎn)
- 寫字樓租賃合同協(xié)議書樣本
- 標(biāo)準(zhǔn)的股份贈(zèng)與協(xié)議格式
- 建筑施工人員勞動(dòng)合同樣本
- 2024抵押借款合同示范文本
- 巴林特工作小組培訓(xùn)
- 部編人教版初中語文教科書九年級(jí)設(shè)計(jì)思路及教學(xué)建議課件
- (人教版)七年級(jí)道德與法治上冊(cè)交互課件-【3.7.3 讓家更美好】
- 廠房監(jiān)控設(shè)備安裝施工方案
- 安全生產(chǎn)獎(jiǎng)懲制度范文(五篇)
- 朱昌窖酒研發(fā)基地項(xiàng)目環(huán)境影響報(bào)告
- 退化林修復(fù)投標(biāo)方案(技術(shù)標(biāo))
- 重癥醫(yī)學(xué)科三年發(fā)展規(guī)劃
- 氣液兩相流-第3章-流型課件
- 物流公司應(yīng)急管理制度和物流公司突發(fā)事件應(yīng)急預(yù)案
- 廣告宣傳制作合同
評(píng)論
0/150
提交評(píng)論