第3章表的基本操作_第1頁(yè)
第3章表的基本操作_第2頁(yè)
第3章表的基本操作_第3頁(yè)
第3章表的基本操作_第4頁(yè)
第3章表的基本操作_第5頁(yè)
已閱讀5頁(yè),還剩135頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第3章

表的基本操作

3.1表文件結(jié)構(gòu)3.2表記錄編輯的常用命令3.3索引、查詢和排序3.4數(shù)據(jù)統(tǒng)計(jì)3.1表文件結(jié)構(gòu) 3.1.1定義表結(jié)構(gòu) 一般情況下,人們?cè)谟檬止だL制一張如表3.1所示的學(xué)生成績(jī)表時(shí)都要了解這張學(xué)生成績(jī)表有幾欄?每欄的最大寬度是多少?這張表共有幾行? 在確定了以上數(shù)據(jù)和繪制表格所用紙張的規(guī)格后,依據(jù)每欄的字符數(shù)與表格的行數(shù)就可以利用尺或其他工具畫出這張表格。表3.1學(xué)生成績(jī)表 計(jì)算機(jī)存儲(chǔ)和處理這張表格時(shí),實(shí)際上也采用了類似的描述方法。在VFP中,表的每一欄稱為一個(gè)字段(Field),欄標(biāo)題作為對(duì)應(yīng)的字段名;表中的每一行稱為一條記錄(Record)。一個(gè)字段名對(duì)不同的記錄而言可有不同的值,也可以說字段實(shí)際上是一個(gè)變量。因此,字段名又叫作字段變量名。由此,為了準(zhǔn)確描述表,VFP對(duì)每一欄就應(yīng)當(dāng)有字段名、字段類型、字段寬度、小數(shù)位數(shù)等描述。 1.字段名 字段名與二維表中的欄名相對(duì)應(yīng),字段名的長(zhǎng)度不超過10個(gè)字符,可以由字母、數(shù)字、下劃線或漢字等組成,而且必須以字母開頭。字段名中不能包含空格,在同一個(gè)表文件中,任意兩個(gè)字段不允許重名。 2.字段類型 VFP字段變量可以是字符型(C)、數(shù)值型(N)、邏輯型(L)、日期型(D)、備注型(M)、通用型(G)、整型(N)、雙精度型(N)、浮點(diǎn)型(N)、日期時(shí)間型(T)、貨幣型(Y)、二進(jìn)制字符型(C)、二進(jìn)制備注型(M)等數(shù)據(jù)類型中的一種。 3.字段寬度 字段寬度的意義類似于手繪表的欄寬,由每一欄的最大字符數(shù)決定。手工繪表時(shí)可通過換行來(lái)減少字符數(shù)太多的某欄的長(zhǎng)度,但在計(jì)算機(jī)存儲(chǔ)的表中,系統(tǒng)則對(duì)不同數(shù)據(jù)類型的字段寬度作了限定,如字符型字段的寬度為1~245,數(shù)值型字段的寬度為1~20。其中有的字段類型的寬度是固定的(見表3.2)。表3.2字段寬度表 4.小數(shù)位數(shù) 定義數(shù)值型和浮點(diǎn)型等字段時(shí)不僅需要指出字段的寬度,而且還要指明小數(shù)位數(shù)。以表3.1為例,其表結(jié)構(gòu)描述為: 以上描述了表的每一欄,即定義了表結(jié)構(gòu)。其中,字段名采用拼音以方便使用。注意,字段含義僅作注解之用,不是定義表結(jié)構(gòu)所必需的。 3.1.2建立表文件 為了方便人機(jī)交流,VFP提供了一系列交互操作命令、菜單操作與項(xiàng)目操作。本節(jié)介紹利用上述操作建立表文件的過程。從知識(shí)的理解與掌握以及方便后續(xù)編程的目標(biāo)出發(fā),希望讀者以命令的理解作為學(xué)習(xí)的重點(diǎn)。 文件是一組信息的有序結(jié)合,而表文件是二維表在計(jì)算機(jī)中的映射,二維表數(shù)據(jù)依據(jù)表結(jié)構(gòu)存儲(chǔ)于表文件中。表文件是VFP工作的基礎(chǔ)。

1.命令方式建立表文件 命令格式:CREATE [驅(qū)動(dòng)器][路徑]<表文件名> 設(shè)對(duì)應(yīng)于表3.1的文件名為xscj.dbf,且保存于c:\vfplx文件夾(c:\vfplx為本書練習(xí)文件夾,若無(wú)特別說明,本書中省略了[驅(qū)動(dòng)器][路徑]的所有文件,皆表示此文件夾中的文件)。在命令窗口中輸入(見圖3-1): CREAc:\vfplx\xscj 表文件的默認(rèn)擴(kuò)展名為?.dbf,若未輸入其他擴(kuò)展名,該擴(kuò)展名會(huì)自動(dòng)加入。依據(jù)系統(tǒng)約定,命令輸入時(shí)取命令詞前四個(gè)字母即可。 輸入CREATE命令后,“表設(shè)計(jì)器”窗口打開,見圖3-1所示。根據(jù)表3.1中的表結(jié)構(gòu)描述,在“表設(shè)計(jì)器”窗口中輸入每一行,完成圖3-1所示的內(nèi)容。圖3-1“表設(shè)計(jì)器”窗口 輸入完畢后,用鼠標(biāo)單擊“確定”按鈕,打開圖3-2所示信息框。在信息框中單擊“是”按鈕,即可在圖3-3所示的記錄錄入框中輸入記錄數(shù)據(jù)。如果單擊信息框中的“否”按鈕,將結(jié)束表文件的建立而不輸入記錄數(shù)據(jù),以后可用本書后面章節(jié)中介紹的記錄追加APPEEND等命令輸入記錄數(shù)據(jù)。 讀者可自行按表3.1所示,在圖3-3所示的畫面中輸入記錄數(shù)據(jù),完成記錄錄入與表文件建立工作。圖3-2信息框圖3-3記錄錄入框 2.其他方式建立表文件 除了命令方式外,還可以用其他方法建立表文件,本小節(jié)介紹其中的幾種。 1)利用菜單建立表文件 利用菜單建立表文件時(shí),先單擊“文件”菜單中的“新建”菜單項(xiàng),并在隨之出現(xiàn)的文件類型選擇對(duì)話框(見圖3-4)中選取“表”,然后單擊“新建文件”按鈕;在隨之出現(xiàn)的“創(chuàng)建”對(duì)話框(見圖3-5)中選取存盤位置并輸入表名后,圖3-1所示的界面出現(xiàn);在此界面中重復(fù)前述命令方式下建立新表的步驟即可完成新表文件的建立。圖3-4文件類型選擇圖3-5“創(chuàng)建”對(duì)話框

類似于以上的操作過程,本書以后將統(tǒng)一表示為:“文件”/“新建”/選取“表”/單擊“新建文件”/輸入表名。 2)利用向?qū)Ы⒈砦募? 采用向?qū)?chuàng)建新表的操作過程為:“文件”/“新建”/選取“表”/單擊“向?qū)А?選取“樣表”與“可用字段”/……,并按對(duì)話框中的提示繼續(xù)操作就可以完成新表的建立。 3)在項(xiàng)目管理器中建立新表 項(xiàng)目管理器將在后續(xù)的學(xué)習(xí)中詳細(xì)介紹。若讀者有興趣,可先嘗試用下面介紹的方法在項(xiàng)目管理器中建立新表。首先創(chuàng)建項(xiàng)目文件,其操作方法是:“文件”/“新建”/選取“項(xiàng)目”/單擊“新建文件”/輸入項(xiàng)目文件名。操作完成后,“項(xiàng)目管理器”窗口就會(huì)出現(xiàn)(見圖3-6)。圖3-6“項(xiàng)目管理器”窗口

“項(xiàng)目管理器”對(duì)話框打開后,執(zhí)行如下操作:選取“數(shù)據(jù)”/選取“自由表”/單擊“新建表”,打開圖3-5所示的“創(chuàng)建”對(duì)話框。 在“創(chuàng)建”對(duì)話框(見圖3-5)中選取存盤位置并輸入表名后,就可以打開表設(shè)計(jì)器(見圖3-1所示);在表設(shè)計(jì)器中重復(fù)前述命令方式下建立新表的步驟即可完成新表文件的建立。 4)從現(xiàn)存表文件中復(fù)制表結(jié)構(gòu) 如果已經(jīng)有了一個(gè)表文件,我們就可以用復(fù)制結(jié)構(gòu)的方法迅速建立一個(gè)新的表文件。從現(xiàn)存表文件中復(fù)制表結(jié)構(gòu)時(shí)需要先打開要復(fù)制的表文件。打開要復(fù)制的表文件后,執(zhí)行以下命令即可: COPYSTRUCTURETO<新文件名>

例3-1從已有文件c:\vfplx\xscj.dbf復(fù)制一個(gè)文件表結(jié)構(gòu)并保存為c:\vfplx\xscj2.dbf usec:\vfplx\xscj &&打開要復(fù)制的表文件 copystrutoc:\vfplx\xscj2 &&表結(jié)構(gòu)復(fù)制 use &&養(yǎng)成良好習(xí)慣,及時(shí)關(guān)閉表文件

為了方便本書的后續(xù)學(xué)習(xí)并練習(xí)、鞏固建立新表的各種方法,讀者可按以下要求以練習(xí)建立三個(gè)新表: §

建立學(xué)生表(c:\vfplx\xs.dbf):表結(jié)構(gòu)描述見表3.3。注意,表文件中有備注字段時(shí),除了表文件外,還會(huì)自動(dòng)建立一個(gè)擴(kuò)展名為(.FPT)的備注文件。這個(gè)備注文件用于存放備注字段的內(nèi)容。 §

建立課程代碼表(c:\vfplx\kcdm.dbf):表結(jié)構(gòu)描述見表3.4。 §

建立考試類別代碼表(c:\vfplx\kslb.dbf):表結(jié)構(gòu)描述見表3.5。表3.3學(xué)生表表3.4課程代碼表表3.5考試類別代碼表 3.1.3顯示表結(jié)構(gòu) 建立表文件后,為了檢查其正確性或查看表結(jié)構(gòu)內(nèi)容,常需要顯示表結(jié)構(gòu)。顯示表結(jié)構(gòu)命令的格式如下(詳細(xì)命令格式可查閱幫助說明): DISPLAYSTRUCTURE或LISTSTRUCTURE 例3-2顯示學(xué)生成績(jī)表xscj的結(jié)構(gòu)。 usec:\vfplx\xscj liststru use

顯示結(jié)果見圖3-7所示。從圖中可見,DISPLAYSTRUCTURE命令除了顯示表結(jié)構(gòu)一般描述外,還列出了表文件的存儲(chǔ)位置、記錄數(shù)、最近更新時(shí)間、所有字段總寬數(shù)、表的代碼頁(yè)、索引和排序等信息。圖3-7成績(jī)表結(jié)構(gòu)

3.1.4表結(jié)構(gòu)文件修改 表結(jié)構(gòu)確定之后,如果通過顯示表結(jié)構(gòu)的內(nèi)容發(fā)現(xiàn)有錯(cuò)誤或表結(jié)構(gòu)的設(shè)計(jì)想法發(fā)生了變化,都需要對(duì)表結(jié)構(gòu)文件進(jìn)行修改。修改表結(jié)構(gòu)文件的命令如下: MODIFYSTRUCTURE 使用修改表結(jié)構(gòu)命令時(shí),必須首先打開要修改的表。MODIFYSTRUCTURE命令將會(huì)打開表設(shè)計(jì)器(見圖3-1)對(duì)表結(jié)構(gòu)進(jìn)行修改。 修改表結(jié)構(gòu)時(shí),將創(chuàng)建一個(gè)擴(kuò)展名為.BAK表備份文件,若有備注字段,系統(tǒng)將創(chuàng)建一個(gè)擴(kuò)展名為.TBK備注備份文件。如果修改操作導(dǎo)致表中數(shù)據(jù)丟失,可刪除修改后的文件,然后備份文件的擴(kuò)展分別改為.DBF和.FBT以恢復(fù)原有的結(jié)構(gòu)和數(shù)據(jù)。3.2表記錄編輯的常用命令

3.2.1命令方式編輯表記錄 事實(shí)上,我們?cè)诮榻B有關(guān)表文件結(jié)構(gòu)的一些命令時(shí),已經(jīng)學(xué)習(xí)了一些命令約定(命令格式)。VFP命令格式的一般形式為: 命令動(dòng)詞[<范圍>][FIELDS<字段名表>][FOR<條件>][WHILE<條件>] [TOPRINTER[PROMPT]/TOFILE<文件名>][NOOPTIMIZE][OFF] 其中,命令動(dòng)詞常為英文動(dòng)詞,“[]”內(nèi)為可選項(xiàng),“<>”內(nèi)為必選項(xiàng)。注意,在輸入語(yǔ)句時(shí),不要輸入選項(xiàng)外的方括號(hào)和尖括號(hào)。 從VFP命令格式的一般形式中可以看出,VFP命令通常由命令動(dòng)詞、“范圍”子句、“條件”子句和其他的一些選項(xiàng)構(gòu)成。 “范圍”子句用于確定要操作記錄的范圍,即指定在表中要操作哪一行。在“范圍”子句中共有四種選擇: ·RECORDn 指定第n條記錄; ·NEXTn 指定當(dāng)前記錄開始的共n條連續(xù)記錄; ·REST 指定當(dāng)前記錄開始到表文件尾的所有記錄; ·ALL 指定所有記錄(可省略)。 FIELDS子句實(shí)際上也是一種范圍子句,用于確定記錄中要操作的字段,也就是表中的列。要操作字段的字段名在字段名列表中逐個(gè)列出,字段名間用逗號(hào)分隔。注意,使用英文的逗號(hào)“,”,不要用中文的逗號(hào)“,”。如果省略“FIELDS<字段名表>”子句,則表示對(duì)所有字段進(jìn)行操作。 “條件”子句根據(jù)條件確定要操作的記錄。該子句有兩種形式,“FOR<條件>”和“WHILE<條件>”。“FOR〈條件〉”子句表示對(duì)給定的范圍內(nèi)滿足條件的所有記錄進(jìn)行操作,“WHILE〈條件〉”子句表示從當(dāng)前記錄開始操作,只要碰到不滿足條件的記錄就停止操作。如果同時(shí)存在FOR和WHILE子句,則WHILE子句優(yōu)先。 “條件”子句中的“條件”是一個(gè)邏輯型的表達(dá)式。 1.打開表文件 命令格式:USE<文件名> USE命令打開指定的表文件并將記錄指針指向第一條記錄,表中若有備注字段,相關(guān)的備注文件自動(dòng)打開(.FPT)。 2.關(guān)閉表文件 命令格式:USE或CLOSETABELS

3.記錄指針定位 在表文件中,計(jì)算機(jī)采用記錄指針來(lái)確定要操作的記錄的位置。記錄指針指向的記錄稱為當(dāng)前記錄。若記錄指針指向第5條記錄,則當(dāng)前記錄號(hào)為5。移動(dòng)記錄指針的方法有絕對(duì)移動(dòng)和相對(duì)移動(dòng)兩種,使用不同的命令來(lái)實(shí)現(xiàn)。 1)絕對(duì)移動(dòng) 命令格式1:GO/GOTO[RECORD]<記錄號(hào)> 命令格式2:GO/GOTOTOP/BOTTOM 命令中的“記錄號(hào)”應(yīng)小于表中的總記錄數(shù),如果記錄號(hào)大于表中的總記錄數(shù),系統(tǒng)將提示“記錄超出范圍”;命令中的TOP表示表中第一條記錄,BOTTOM表示表中最后一條記錄。 2)相對(duì)移動(dòng) 命令格式:SKIP<±n> SKIP命令相對(duì)于當(dāng)前記錄的位置把記錄指針移動(dòng)指定的記錄個(gè)數(shù)。若n為正,則相對(duì)于當(dāng)前記錄把記錄指針向文件尾移動(dòng)n條記錄;若n超過記錄總數(shù),則記錄指針移到文件尾,同時(shí),系統(tǒng)的當(dāng)前記錄號(hào)為記錄總數(shù)加1;若n為負(fù),則相對(duì)于當(dāng)前記錄把記錄指針向文件頭移動(dòng)n條記錄。若每次向文件尾移動(dòng)一條記錄,則可省略<±記錄數(shù)n>。

例3-3設(shè)xscj.dbf共有9條記錄,記錄指針移動(dòng)命令的示例如下: usexscj &&打開學(xué)生成績(jī)表文件,記錄指針指向第一條記錄 ?recno() &&顯示打開文件時(shí)的記錄號(hào) skip3 &&記錄指針指向第4條記錄,相對(duì)第一條記錄移動(dòng)3條 skip &&記錄指針指向第5條記錄,相對(duì)第4條記錄移動(dòng)1條 ?recno() &&顯示記錄號(hào),結(jié)果為5 skip7 &&超過記錄總數(shù) ?recno() &&顯示記錄號(hào),結(jié)果為10 skip–2 &&記錄指針指向第8條記錄 ?recno() &&顯示記錄號(hào) skip–10 &&記錄指針指向第1條記錄 ?recno() &&顯示記錄號(hào) gotop &&記錄指針指向第1條記錄,TOP記錄頭(第1條) go5 &&記錄指針指向第5條記錄 gobottom &&記錄指針指向第9條記錄 use &&關(guān)閉表文件 注意,在VFP程序中“*”和“&&”后的內(nèi)容是對(duì)程序的注解。一般“*”用于以整行注解,“&&”用以語(yǔ)句后注解。 4.顯示、瀏覽表文件 命令格式:LIST[<范圍>][FIELDS<字段名表>][FOR<條件>][WHILE<條件>] 命令格式:DISPLAY[<范圍>][FIELDS<字段名表>][FOR<條件>][WHILE<條件>] LIST與DISPLAY命令的作用除“[<范圍>]”子句省略時(shí)相同外,其余均相同。當(dāng)省略“[<范圍>]”時(shí),LIST命令顯示所有記錄;DISP命令則顯示當(dāng)前記錄。 例3-4理解以下命令語(yǔ)句中“<范圍>”子句的用法(“***”后為要求完成內(nèi)容)。 usexscj &&打開表文件 ***顯示第6條記錄 LISTRECO6 ***顯示第2條至第7條記錄 GO2 &&先移記錄指針至第2條記錄 LISTNEXT6 &&第2條至第7條記錄共為7-2+1=6條記錄 ***顯示第5條至文件尾的所有記錄 GO5 &&先移記錄指針至第5條記錄 LISTREST &&按要求顯示 ***顯示所有記錄 LISTALL USE &&關(guān)閉文件 例3-5理解以下命令語(yǔ)句中“FIELDS<字段名表>”子句的用法(“***”后為要求完成內(nèi)容)。

usexscj &&打開表文件 ***顯示xh,xm,cj字段的內(nèi)容(即學(xué)號(hào),姓名。成績(jī)?nèi)校? LISTFIELDSXH,XM,CJ ***顯示第2條至第7條記錄的xm,cj字段(即:指定的行、列) GO2 &&先移記錄指針至第2條記錄 LISTNEXT6FIELDSXM,CJ &&第2條至第7條記錄共為7-2+1=6條記錄 ***顯示第5條至文件尾的所有記錄(省略“FIELDS<字段名表>”子句, GO5 &&先移記錄指針至第5條記錄LISTREST &&顯示其余記錄(第5條至文件尾的所有記錄) 例3-6理解以下命令語(yǔ)句中“[FOR<條件>][WHILE<條件>]”子句的用法(“***”后為要求完成的操作及有關(guān)的注解)。 usexscj &&打開表文件 ***顯示“大學(xué)英語(yǔ)”的學(xué)生姓名和成績(jī) LISTFIELDSXM,CJFORKCM="大學(xué)英語(yǔ)" ***顯示“李小偉”個(gè)人內(nèi)容 LISTFORXM="李小偉" ***顯示第5條至文件尾課程為“計(jì)算機(jī)基礎(chǔ)”、所有記錄的姓名與成績(jī) GO5 &&先移記錄指針至第5條記錄 LISTRESTFIELDSXM,CJFORKCM="計(jì)算機(jī)基礎(chǔ)" ***顯示第4條至文件尾姓名為“王勇”的連續(xù)記錄 GO4 LISTWHILEXM="王勇" &&顯示二條連續(xù)記錄 ***如用“FORXM="王勇"”則顯示三條不連續(xù)記錄,不符合題意 5.追加與修改記錄 在建立了表結(jié)構(gòu),并打開該表文件的前提下,可以用APPEND命令追加與修改記錄。 命令格式:APPEND[BLANK] 例3-7據(jù)表3.3建立學(xué)生表結(jié)構(gòu)前提下,打開學(xué)生情況表xs.dbf,按下表輸入數(shù)據(jù)。 usexs append &&輸入及修改數(shù)據(jù)(見圖3-8) list &&顯示結(jié)果 use ***APPENDBLANK為添加一條空記錄 ***數(shù)據(jù)輸入后,可顯示檢查。 ***鼠標(biāo)雙擊備注字段(如:jl),可輸入文本 ***鼠標(biāo)雙擊通用字段(如:zp),可編輯該字段圖3-8記錄錄入 6.插入記錄 使用APPEND命令添加的記錄都位于表的尾部。如果要在現(xiàn)有記錄的中間插入新的記錄,應(yīng)使用插入命令I(lǐng)NSERT。命令格式:INSERT[BEFORE][BLANK] 當(dāng)我們需要插入記錄使其成為第三條記錄時(shí),如果當(dāng)前記錄為正是第三條記錄,可在當(dāng)前記錄前插入新記錄(稱為前插記錄),這時(shí)使用的命令為INSERTBEFORE。 如果當(dāng)前記錄為第二條記錄,可在當(dāng)前記錄后插入新記錄(稱為后插記錄),這時(shí)使用的命令為INSERT 命令I(lǐng)NSERTBLANK則在記錄指針的當(dāng)前位置插入一條空記錄。 例3-8在學(xué)生情況表xs.dbf中,按下表規(guī)定插入一條記錄并使其為第三條記錄。 方法一: usexs &&先打開表 go3 &&使指針指向第三條記錄 insebefo &&第三條記錄前插入記錄,新記錄成為第三條,原記錄后移 ***完成輸入 list &&顯示結(jié)果 use 方法二: usexs &&編輯表,必須先打開表 go2 &&使指針指向第二條記錄 inse &&第二條記錄后插入記錄,新記錄成為第三條,原記錄后移 ***完成輸入 list &&顯示結(jié)果 use

7.刪除記錄 一個(gè)表建立后,除了添加數(shù)據(jù)和插入數(shù)據(jù)操作外,也會(huì)進(jìn)行刪除某些記錄的操作。在VFP中,記錄的刪除有邏輯刪除和物理刪除兩種方式。 邏輯刪除操作僅對(duì)記錄作刪除標(biāo)記,記錄仍保存于表中并可通過去除刪除標(biāo)記來(lái)恢復(fù)。 物理刪除操作則刪除是作過刪除標(biāo)記的所有記錄,將記錄從表中徹底去除。物理刪除后的記錄不可再恢復(fù)。 1)邏輯刪除 命令格式:DELETE[<范圍>][FOR<條件>] 若命令中省略<范圍>,且不包含<條件>子句,則表示只對(duì)當(dāng)前記錄作刪除標(biāo)記。 例3-9對(duì)學(xué)生成績(jī)表完成下列操作(“***”后為要求完成操作的內(nèi)容)。 usexscj ***邏輯刪除第五條記錄 go5 dele &&刪除當(dāng)前記錄 ***以上二條語(yǔ)句可合并為:delereco5 ***邏輯刪除第三條記錄至文件尾的所有“大學(xué)英語(yǔ)”的課程記錄 go3 delerestforkcm="大學(xué)英語(yǔ)" list &&顯示結(jié)果(見圖3-9),圖中,左邊的黑色塊為刪除標(biāo)記 use圖3-9邏輯刪除結(jié)果 如果不想顯示已被邏輯刪除記錄,可以用SETDELEON命令對(duì)顯示結(jié)果進(jìn)行控制。 2)恢復(fù)邏輯刪除標(biāo)記 恢復(fù)邏輯刪除標(biāo)記命令用于恢復(fù)當(dāng)前表文件中有刪除標(biāo)記的記錄。 命令格式:RECALL[<范圍>][FOR<條件>] RECALL命令的功能是對(duì)用DELETE命令的刪除過的記錄進(jìn)行恢復(fù),它不能恢復(fù)用PACK和ZAP命令刪除掉的記錄。RECALL命令中的選項(xiàng)的意義與DELETE命令中選項(xiàng)的意義相同。

例3-10對(duì)學(xué)生成績(jī)表完成下列操作內(nèi)容(“***”后為要求完成操作的內(nèi)容)。 usexscj ***恢復(fù)邏輯刪除的記錄 recaall list&&顯示結(jié)果為圖3-9左邊黑色塊消失(刪除標(biāo)記消失) use 3)物理刪除 PACK是物理刪除命令,可以把有刪除標(biāo)記的記錄從表中清除掉并且重新組織原表中剩余的記錄。 命令格式:PACK 例3-11對(duì)學(xué)生成績(jī)表完成下列操作內(nèi)容(“***”后為要求完成操作的內(nèi)容)。 usexscj go3 delerestforkcm="大學(xué)英語(yǔ)" list &&顯示結(jié)果如圖3-9(左邊黑色塊為刪除標(biāo)記) pack list &&顯示結(jié)果為圖3-9黑色塊的記錄消失 use ***采用所學(xué)的追加記錄或插入記錄命令恢復(fù)原先所有記錄 4)物理刪除當(dāng)前表中的所有記錄 命令格式:ZAP 5)DELETE、PACK和RECALL命令的使用 為安全起見,要?jiǎng)h除一個(gè)表文件的某些記錄時(shí)可先用DELETE命令對(duì)其作刪除標(biāo)記,若發(fā)現(xiàn)刪除了不該刪除的記錄,可用RECALL命令將其恢復(fù);在確認(rèn)所有用DELETE命令刪除的記錄無(wú)誤后,再用PACK命令將其余有刪除標(biāo)記記錄除掉。

8.修改記錄 表建立后,除對(duì)記錄作追加、插入、刪除等操作外,還可以對(duì)記錄的內(nèi)容進(jìn)行修改。可以用于修改記錄內(nèi)容的命令有APPEND、EDIT、BROWSE和REPLACE等。 1)APPEND命令 打開文件并在命令窗口輸入APPEND后,可將光標(biāo)移動(dòng)到需修改處直接進(jìn)行修改。修改后按Ctrl+W鍵保存修改結(jié)果。(讀者可自行試用該命令)。 2)EDIT命令 命令格式:EDIT[<范圍>][FOR<條件>] 打開文件并在命令窗口輸入EDIT后,可將光標(biāo)移動(dòng)到需修改處直接進(jìn)行修改。修改后按Ctrl+W鍵保存修改結(jié)果。EDIT與APPEND不同,它僅能改變記錄中內(nèi)容,不能追加新的記錄。 3)BROWSE命令 BROWSE命令是VFP中最有效的命令之一。通過BROWSE命令可打開瀏覽窗口顯示表,并對(duì)記錄進(jìn)行修改與追加。 命令格式:BROWSE[FIELDS<字段名表>][FOR<條件>][[NOAPPEND][NODELETE][NOEDIT] 例3-12完成下列操作內(nèi)容(“***”后為要求完成操作的內(nèi)容)。 usekcdm &&打開課程代碼表 brow &&出現(xiàn)圖3-10所示的瀏覽窗口

***按下Ctrl+Y鍵,按圖3-10所示的數(shù)據(jù)逐個(gè)追加新記錄。 brownoappend ***noappend選項(xiàng)禁止追加記錄 brownoedit &&noedit禁止修改原有記錄, &&但可以追加記錄 brownodelete ***nodelete選項(xiàng)禁止刪除記錄,即用使鼠標(biāo)單擊圖3-10中 ***kcdm欄左邊的白色小方塊,也不會(huì)形成類似圖3-9所示 ***黑色刪除標(biāo)記。 ***無(wú)nodelete選項(xiàng)時(shí),可用鼠標(biāo)單擊白色小方塊刪除記錄。 use

4)BROWSE命令中的[FIELDS<字段名表>]子句 利用<字段名表>可以改變?yōu)g覽窗口中顯示字段的順序(見圖3-11),如果不使用<字段名表>,BROWSE命令就按表結(jié)構(gòu)中的字段順序顯示各字段。另外,在每個(gè)字段名后可以用一個(gè)或多個(gè)符號(hào)加以修飾以取得不同的顯示效果。BROWSE命令<字段名表>項(xiàng)中的修飾字符比較多,下面只介紹[:R]和[:H]這兩個(gè)修飾字符。 修飾字符的使用格式為: <字段名>[:R][:H=<字符串>] 如果在FIELDS選項(xiàng)中的字段名后用[:R]加以限制,則此字段只能讀,不能修改。 如果字段名是英文,則可以用[:H=<字符串>]中的字符串代替英文字段名,從而顯示中文提示信息(見圖3-12)。圖3-11改變字段顯示位置圖3-12字段名中文顯示 例3-13對(duì)學(xué)生成績(jī)表完成下列操作(“***”后為要求完成操作的內(nèi)容)。 usexscj &&打開學(xué)生成績(jī)表 ***交換圖3-9中的姓名與課程名的顯示位置 browfielxh,kcm,xm,cj,kslb &&出現(xiàn)圖3-11瀏覽窗口 ***使字段名以中文顯示 browfielxh:h="學(xué)號(hào)",xm:h="姓名",kcm:h="課程名",cj:h="成績(jī)" ***顯示結(jié)果如圖3-12所示 use 5)REPLACE命令 除了使用前面介紹的幾個(gè)命令修改記錄以外,我們還可利用REPLACE命令對(duì)記錄內(nèi)容進(jìn)行直接修改。 命令格式:REPLACE[<范圍>]<字段名1>WITH<表達(dá)式1>] [,<字段名2>WITH<表達(dá)式2>][…][FOR<條件>] REPLACE命令用WITH后面表達(dá)式的值替換當(dāng)前記錄某些字段內(nèi)容。若選項(xiàng)<范圍>省略,表示只替換當(dāng)前記錄。 REPLACE命令具有同時(shí)對(duì)多個(gè)字段進(jìn)行替換的功能,它要求WITH后面表達(dá)式的數(shù)據(jù)類型必須與WITH前面的字段數(shù)據(jù)類型保持一致。 例3-14對(duì)學(xué)生成績(jī)表完成下列操作(“***”后為要求完成操作的內(nèi)容)。 usexscj &&打開學(xué)生成績(jī)表 list &&顯示結(jié)果如下 ***將課程名“法律基礎(chǔ)”的考試類別改為“口試” replallkslbwith“口試"forkcm="法律基礎(chǔ)" list &&顯示結(jié)果如下 ***將課程名“大學(xué)英語(yǔ)”改為“英語(yǔ)”,同時(shí),將考試類別改為“面試”并將每人成績(jī)加2分 replallkcmwith“英語(yǔ)",kslbwith“面試",cjwithcj+2forkcm="大學(xué)英語(yǔ)" list&&顯示結(jié)果如下use

9.記錄的尋找定位 除了可以采用前面介紹過的GO與SKIP語(yǔ)句定位記錄外,還可采用類似于文字處理的方式進(jìn)行記錄定位,即通過LOCATE命令尋找特定的內(nèi)容,從而直接完成記錄的定位。命令格式:LOCATE[<范圍>]FOR<表達(dá)式1> 例3-15對(duì)學(xué)生成績(jī)表完成下列操作(“***”后為要求完成操作的內(nèi)容)。 usexscj &&打開學(xué)生成績(jī)表 ***找姓名為“周天成",所學(xué)課程為“計(jì)算機(jī)基礎(chǔ)”的記錄 locaforxm="周天成"ANDkcm="計(jì)算機(jī)基礎(chǔ)" disp &&省略范圍時(shí),disp顯示當(dāng)前記錄 use

當(dāng)完成特定記錄的定位后,如果還需要查找下一個(gè)同條件記錄,可利用CONTINUE命令繼續(xù)查找。 命令格式:CONTINUE 例3-16對(duì)學(xué)生成績(jī)表完成下列操作(“***”后為要求完成操作的內(nèi)容)。 usexscj &&打開學(xué)生成績(jī)表 ***找姓名為“李小偉”的記錄 locaforxm="李小偉" disp &&省略范圍時(shí),disp顯示當(dāng)前一條記錄 continue &&找姓名為“李小偉”的下一條記錄 disp ***以上為單條記錄查找與顯示 10.表文件復(fù)制 整個(gè)表文件的復(fù)制可以通過操作系統(tǒng)的資源管理器完成,但如果要按照按一定的條件復(fù)制VFP表文件中的部分記錄、部分字段,一般就需通過VFP的COPYTO命令來(lái)完成。 命令格式:COPYTO<文件名>[<范圍>][FIELDS<字段名表>][FOR<條件>][WHILE<條件>] 例3-17對(duì)學(xué)生成績(jī)表完成下列操作(“***”后為要求完成操作的內(nèi)容)。 usexscj &&打開學(xué)生成績(jī)表 ***將姓名為“李小偉”的記錄復(fù)制到另一表文件xw.dbf ***xw.dbf字段包括:姓名、課程名、成績(jī)、考試類別 copytoxwfieldsxm,kcm,cj,kslbforxm="李小偉" usexw &&打開“李小偉”的成績(jī)表,并關(guān)閉學(xué)生成績(jī)表 list &&顯示結(jié)果如下

use 11.從文件中追加記錄 實(shí)際應(yīng)用中,經(jīng)常需要將不同表中的記錄合并到同一個(gè)表,比如將不同用戶輸入的數(shù)據(jù)進(jìn)行合并。這時(shí)可以使用APPENDFROM命令。 命令格式:APPENDFROM<文件名>[FOR<條件>][FIELDS<字段表名>] 這條命令把指定表文件中的記錄追加到當(dāng)前表文件的末尾。在復(fù)制記錄時(shí)只復(fù)制兩個(gè)文件中字段名和字段類型相同的那些字段。若有FOR<條件>子句,則只將滿足條件的記錄追加到目標(biāo)文件中。如果省略FIELDS<字段名表>選項(xiàng)表示復(fù)制所有的字段,否則只復(fù)制在<字段名表>中指出的字段。 例3-18對(duì)學(xué)生成績(jī)表完成下列操作(“***”后為要求完成操作的內(nèi)容),并進(jìn)一步理解各命令的作用。 usexscj &&打開學(xué)生成績(jī)表 ***將姓名為“李小偉”的記錄復(fù)制到另一表文件xw.dbf copytoxwforxm="李小偉" ***查看新表文件 usexw &&打開“李小偉”的成績(jī)表,并關(guān)閉學(xué)生成績(jī)表 l ist &&顯示結(jié)果如下usexscj &&打開學(xué)生成績(jī)表,并關(guān)閉“李小偉”的成績(jī)表***邏輯刪除姓名為“李小偉”的記錄;防止練習(xí)追加記錄時(shí)數(shù)據(jù)重復(fù)deleforxm="李小偉"list &&顯示結(jié)果如下,記錄號(hào)中的“*”為邏輯刪除標(biāo)記 Pack &&物理刪除姓名為“李小偉”的記錄 List&&顯示結(jié)果如下,標(biāo)有“*”的記錄已經(jīng)被刪除 ***以上操作使學(xué)生成績(jī)表中缺少了“李小偉”成績(jī) ***從xw.dbf表中追加“李小偉”的成績(jī)(注意記錄位置的變化) appefromxw list &&顯示追加后結(jié)果如下 3.2.2菜單方式編輯表記錄 1.打開表文件 在前一節(jié)中,我們學(xué)習(xí)了表的創(chuàng)建。創(chuàng)建表后,如果要對(duì)表作進(jìn)一步的操作,首先要打開表文件。用菜單方式打開文件的方法為選擇“文件”/“打開”,然后,在“打開”對(duì)話框(見圖3-13)中選擇需要打開的表文件。

除了菜單方式外,也可以可合理地運(yùn)用“數(shù)據(jù)工作期”窗口來(lái)選擇并打開表文件。具體方法為: (1)

用鼠標(biāo)單擊工具欄的“數(shù)據(jù)工作期”按鈕,使圖3-14所示的“數(shù)據(jù)工作期”窗口出現(xiàn)。 (2)

在“數(shù)據(jù)工作期”窗口中,用鼠標(biāo)單擊“打開”按鈕,一個(gè)如圖3-13所示的“打開”對(duì)話框就會(huì)出現(xiàn)。這個(gè)操作相當(dāng)于執(zhí)行了use<表文件>命令。 (3)

從“打開”對(duì)話框中選擇需打開的表文件。 (4)

在圖3-14的“別名”列表框中,選擇相應(yīng)的表文件,然后,單擊“瀏覽”按鈕即可查閱或修改表。 在進(jìn)行菜單操作的同時(shí),系統(tǒng)執(zhí)行的相應(yīng)命令會(huì)都會(huì)在“命令”窗口中出現(xiàn),讀者可留意“命令”窗口中出現(xiàn)的這些命令。圖3-13打開表文件圖3-14“數(shù)據(jù)工作期”窗口 2.關(guān)閉表文件 在圖3-14所示的對(duì)話框中選擇需關(guān)閉的表文件,然后用鼠標(biāo)單擊“關(guān)閉”按鈕。 3.瀏覽及記錄指針的定位 以菜單方式瀏覽表文件的方法為選擇“顯示”/“瀏覽”(必須先打開要瀏覽的表)。 利用“數(shù)據(jù)工作期”窗口(見圖3-14)也可以瀏覽表文件,只要在“數(shù)據(jù)工作期”窗口中打開并選擇要瀏覽的表文件,然后,單擊“瀏覽”按鈕即可進(jìn)行瀏覽。若對(duì)成績(jī)表進(jìn)行以上操作,即可見到如圖3-15所示的結(jié)果。在瀏覽狀態(tài)下,菜單中將新增加一個(gè)菜單欄“表”(見圖3-16)。 在瀏覽表文件時(shí),可利用新增的“表”菜單完成GO,SKIP,LOCATE等操作。其中,“表”菜單欄中的“第一個(gè)”菜單項(xiàng)等同于GOTOP命令;“最后一個(gè)”菜單項(xiàng)等同于GOBOTTOM命令;“下一個(gè)”菜單項(xiàng)等同于SKIP命令;“上一個(gè)”菜單項(xiàng)等同于SKIP–1命令;“記錄號(hào)”菜單項(xiàng)等同于GO<記錄號(hào)>命令;“定位”菜單項(xiàng)等同于LOCATE命令。讀者可自行嘗試以上菜單操作,操作時(shí)請(qǐng)注意圖3-15中最左邊黑三角箭頭的位置變化。圖3-15瀏覽表文件圖3-16記錄定位 注意,如果選擇了新增菜單的“轉(zhuǎn)到記錄”/“記錄號(hào)”菜單項(xiàng),就會(huì)出現(xiàn)圖3-17所示的“轉(zhuǎn)到記錄”對(duì)話框,要求輸入記錄號(hào);當(dāng)選擇“轉(zhuǎn)到記錄”/“定位”菜單項(xiàng),就會(huì)出現(xiàn)圖3-18所示的“定位記錄”對(duì)話框,要求輸入作用范圍(即LOCATE命令的[范圍]子句)及查詢條件(即LOCATE命令的FOR<條件>子句)。圖3-17轉(zhuǎn)到指定記錄號(hào)圖3-18轉(zhuǎn)到定位記錄 在進(jìn)行以上菜單操作的同時(shí),同樣請(qǐng)留意命令窗口出現(xiàn)的相應(yīng)命令,以便加深對(duì)命令及菜單操作的相互關(guān)系的理解。 4.追加與修改記錄 在表文件的瀏覽狀態(tài)下,可以通過移動(dòng)光標(biāo)來(lái)定位要修改的表記錄的內(nèi)容,但是不能通過移動(dòng)光標(biāo)來(lái)增加新的記錄。在VFP瀏覽狀態(tài)下,增加新記錄的操作必須通過菜單或鍵盤操作方式來(lái)完成。 菜單方式:選擇“表”/“追加新記錄”(相當(dāng)于執(zhí)行APPENDBLANK命令),每作一次操作可在表中增加一條空記錄。增加空記錄后,可進(jìn)行記錄內(nèi)容的修改。

§

鍵盤操作:按下CTRL+Y鍵,每按一次CTRL+Y鍵可增加一條空記錄。 如果忘記了增加一條空記錄的鍵盤操作要按下哪些鍵,可用鼠標(biāo)單擊菜單欄“表”,在“追加新記錄”菜單項(xiàng)的右邊就可以看到該鍵盤操作命令。VFP中的其他鍵盤操作也可以采用這種方式進(jìn)行查閱。 以上操作方式可以在表中增加新的空記錄。除此之外,利用菜單方式還可以由另一個(gè)文件中追加記錄,具體可按下面的方法操作: (1)

選擇“表”/“追加記錄”,打開圖3-19所示的“追加來(lái)源”對(duì)話框。 (2)

用鼠標(biāo)單擊“類型”框后的向下箭頭以選擇文件的類型,然后用鼠標(biāo)單擊“類型”框后的按鈕選擇要追加的數(shù)據(jù)所在的表。 (3)

單擊“確定”按鈕。 用鼠標(biāo)單擊圖3-19中的“選項(xiàng)”按鈕后,可以進(jìn)一步選擇要追加的“字段”及指定追加的“條件”,讀者可自行嘗試使用。圖3-19“追加來(lái)源”對(duì)話框 5.記錄的其他操作 在打開表文件與瀏覽表文件時(shí),還可以進(jìn)行以下操作: (1)

單個(gè)記錄的邏輯刪除與恢復(fù):選擇“表”/“切換刪除標(biāo)記”,通過此操作可對(duì)當(dāng)前記錄的邏輯刪除狀態(tài)進(jìn)行,記錄左邊有黑色方塊者表示已邏輯刪除(見圖3-20)。 (2)

刪除單個(gè)或多個(gè)記錄:選擇“表”/“刪除記錄”,在隨之出現(xiàn)的“刪除”對(duì)話框中(與圖3-18所示的對(duì)話框類似)輸入或選擇范圍及刪除條件,然后,單擊“刪除”按鈕。 (3)

恢復(fù)單個(gè)或多個(gè)記錄:選擇“表”/“恢復(fù)記錄”,在隨之出現(xiàn)的對(duì)話框中(與圖3-18所示的對(duì)話框類似)輸入或選擇范圍及恢復(fù)條件,然后,單擊“恢復(fù)記錄”按鈕。 (4)

物理刪除記錄:選擇“表”/“徹底刪除”。這項(xiàng)操作相當(dāng)于執(zhí)行了命令PACK。 (5)

調(diào)整字段顯示的大?。哼x擇“表”/“調(diào)整字段大小”或?qū)⑹髽?biāo)指向兩字段間的分界位置(見圖3-20),當(dāng)出現(xiàn)兩邊分開鼠標(biāo)箭頭時(shí),按住鼠標(biāo)左鍵拖動(dòng)至適當(dāng)位置并放開鼠標(biāo)左鍵即可。 (6)

改變字段顯示順序:選擇“表”/“移動(dòng)字段”或?qū)⑹髽?biāo)指向某字段,當(dāng)出現(xiàn)向下的鼠標(biāo)箭頭時(shí),按住鼠標(biāo)左鍵拖動(dòng)至適當(dāng)位置放開即可。 (7)

分區(qū)顯示:將鼠標(biāo)指向圖3-20所示的分區(qū)塊,出現(xiàn)兩邊分開鼠標(biāo)箭頭時(shí),按住鼠標(biāo)左鍵拖動(dòng)即可。圖3-20瀏覽狀態(tài)下的記錄操作 7.替換字段 通過“表”/“替換字段”操作,可利用菜單完成REPLACE命令,具體方法是: (1)

選擇“表”/“替換字段”,打開圖3-21所示的“替換字段”對(duì)話框。 (2)

在“替換字段”對(duì)話框的“字段”框中選取字段,在“替換為”框中輸入替換內(nèi)容,同時(shí),輸入作用范圍及條件,然后,單擊“替換”按鈕完成替換操作。圖3-21“替換字段”對(duì)話框 3.2.3備注與通用字段的簡(jiǎn)單編輯 1.表文件瀏覽狀態(tài)下編輯 打開表,在瀏覽方式下將光標(biāo)置于某記錄的備注或通用字段(見圖3-22)上,然后,按Crtl+PageDown鍵或用鼠標(biāo)雙擊該字段就可以打開備注或通用字段的編輯窗口。在編輯窗口中,可利用通常的文本編輯或圖片粘貼等技術(shù)進(jìn)行編輯,編輯完成后存盤(按Ctrl+W或關(guān)閉窗口)或按Esc鍵放棄存盤。若記錄的備注或通用字段中存有內(nèi)容,則圖3-22中備注或通用字段顯示方式為“Gen”、“Memo”;若記錄的備注或通用字段顯示為“gen”、“memo”,則表示字段內(nèi)容為空。圖3-22光標(biāo)置于通用字段 2.命令方式下編輯 打開表文件后,若表文件有備注或通用字段,可用如下命令編輯: (1)

編輯備注字段:使用命令MODIFYMEMO<備注字段名表> (2)

從文本文件中添加:使用命令

APPENDMEMOFROM<文本文件名>[OVERWRITE]

該命令中若是使用了[OVERWRITE]選項(xiàng),則用文本文件的內(nèi)容替換當(dāng)前備注字段內(nèi)容;若無(wú)[OVERWRITE]選項(xiàng),則將文本文件的內(nèi)容追加到原備注字段內(nèi)容之后。 (3)

編輯通用字段:使用命令MODIFYGENERAL<通用字段名表>3.3索引、查詢和排序 3.3.1索引 1.單項(xiàng)索引文件 1)建立單項(xiàng)索引文件 命令格式:INDEXON<索引表達(dá)式>TO<索引文件名> 該命令根據(jù)“索引表達(dá)式”的值從小到大地對(duì)打開的表文件進(jìn)行排序,并建立相應(yīng)的單項(xiàng)索引文件。單項(xiàng)索引文件只能以升序排列。

2)打開單項(xiàng)索引文件 新建的單項(xiàng)索引文件在建立后即處于打開狀態(tài)。如果關(guān)閉表文件后,再次打開該表文件,那么就應(yīng)當(dāng)使用專門的單項(xiàng)索引文件打開命令打開索引文件,或者在打開表文件時(shí)使用命令要求索引文件隨著表文件一起打開。具體方法是: (1)

同時(shí)打開單項(xiàng)索引文件與表文件,可使用命令:

USE<表文件名>INDEX<索引文件名>

(2)

表文件打開后,再單獨(dú)打開單項(xiàng)索引文件,可使用命令:

SETINDEXTO<索引文件名> 3)關(guān)閉單項(xiàng)索引文件 單項(xiàng)索引文件隨著表文件的關(guān)閉自動(dòng)關(guān)閉,也可以采用下列命令單獨(dú)關(guān)閉: SETINDEXTO 例3-19理解以下“單項(xiàng)索引文件”的應(yīng)用(“***”后為要求完成的操作或說明)。 Clear &&清空VFP窗口內(nèi)容命令 setdefaulttoc:\vfplx &&設(shè)置VFP缺省路徑 ***設(shè)置VFP缺省路徑,以保證使在不指明路徑時(shí),打開與建立的文件都處于此路徑下 usexscj &&打開c:\vfplx\xscj表文件 list &&顯示以記錄號(hào)排列(即,按輸入次序排列) ***使記錄顯示等按學(xué)號(hào)的升序排列 indeonxhtoxhsy &&據(jù)xh字段,新建單項(xiàng)索引文件xhsy list &&顯示結(jié)果如下:注意記錄號(hào)為輸入的物理順序記錄號(hào)XHXMKCMCJKSLB799041101李小偉英語(yǔ)80.0面試899041101李小偉計(jì)算機(jī)基礎(chǔ)82.0正??荚?99041101李小偉法律基礎(chǔ)85.0口試199041102王勇計(jì)算機(jī)基礎(chǔ)87.0正常考試299041102王勇英語(yǔ)70.0面試 699041102王勇英語(yǔ)67.0面試399041105吳國(guó)穎英語(yǔ)90.0面試499041105吳國(guó)穎法律基礎(chǔ)67.0口試599041107周天成計(jì)算機(jī)基礎(chǔ)92.0正??荚? ***單項(xiàng)索引文件的建立使記錄依據(jù)學(xué)號(hào)由小到大排列而不按物理順序排列 setindeto&&單獨(dú)關(guān)閉單項(xiàng)索引文件 list &&顯示結(jié)果恢復(fù)輸入的物理順序(自己查看) setindetoxhsy &&打開已建立的單項(xiàng)索引文件

list &&顯示結(jié)果依據(jù)學(xué)號(hào)排列 use &&關(guān)閉表文件,單項(xiàng)索引文件同時(shí)關(guān)閉 usexscjindexhsy &&同時(shí)打開表文件與已建立的單項(xiàng)索引文件 list &&顯示結(jié)果依據(jù)學(xué)號(hào)排列 use 2.復(fù)合索引文件 1)建立復(fù)合索引文件 命令格式:INDEXON<索引表達(dá)式>TAG<索引標(biāo)識(shí)名>[OF<索引文件名>] [ASCENDING|DESCENDING] 該命令為復(fù)合索引文件建立一個(gè)索引標(biāo)識(shí)。如省略“[OF<索引文件名>]”子句,則索引文件名與表文件名相同,索引標(biāo)識(shí)被寫到結(jié)構(gòu)復(fù)合索引文件中;如使用了“[OF<索引文件名>]”子句,則索引文件名有該子句確定,索引標(biāo)識(shí)被寫到獨(dú)立復(fù)合索引文件中。 2)打開復(fù)合索引文件 結(jié)構(gòu)復(fù)合索引文件自動(dòng)隨表文件一起打開,無(wú)需特別命令。如需打開獨(dú)立復(fù)合索引文件,則需專門說明。 命令格式:USE<表文件名>INDEX<索引文件名> 由于復(fù)合索引文件可包含多個(gè)索引表達(dá)式,因此除打開索引文件外,還需說明采用哪一個(gè)索引標(biāo)識(shí)排序(即確定主控索引標(biāo)識(shí))。確定主控索引標(biāo)識(shí)應(yīng)使用以下命令: SETORDERTOTAG<索引標(biāo)識(shí)> 3)關(guān)閉索引文件 命令格式1:CLOSEINDEXES 命令格式2:SETINDEXTO 4)在復(fù)合索引文件中刪除索引標(biāo)識(shí) 命令格式:DELETETAG<標(biāo)記名表> 該命令刪除當(dāng)前打開的復(fù)合索引文件的索引標(biāo)識(shí)。如果執(zhí)行DELETAGALL命令,則表示刪除所有的索引標(biāo)識(shí)并將復(fù)合索引文件從磁盤上刪掉。 例3-20理解以下“復(fù)合索引文件”的應(yīng)用(“***”后為要求完成的操作或說明)。 Clear &&清空VFP窗口 setdefaulttoc:\vfplx &&設(shè)置VFP缺省路徑 usexscj &&打開c:\vfplx\xscj表文件 list &&以輸入順序顯示記錄 ***建立學(xué)號(hào)升序,姓名降序的結(jié)構(gòu)復(fù)合索引文件 indeonxhtagxh &&據(jù)xh字段,建立復(fù)合索引文件xscj.cdx。 ***因?yàn)槭÷粤恕癧OF<索引文件名>]”子句,所以,結(jié)構(gòu)復(fù)合索引文件的文件

***名默認(rèn)為xscj.cdx,索引標(biāo)識(shí)為xh字段 indeonxmtagxmdescending &&復(fù)合索引文件中增加xm索引標(biāo)識(shí),降序 setordertoxm &&確定以索引標(biāo)識(shí)xm(姓名)排序 list &&按xm降序顯示記錄 setordertoxh &&確定以索引標(biāo)識(shí)xh排序 list &&顯示結(jié)果按xh升序排列 setindeto &&單獨(dú)關(guān)閉索引文件

list &&顯示結(jié)果恢復(fù)輸入的物理順序(自己查看) use &&關(guān)閉表文件 usexscj &&表文件與已建立xscj.cdx一起打開,無(wú)需其他說明 use ***若沒有建立以上結(jié)構(gòu)復(fù)合索引文件,采用以下獨(dú)立復(fù)合索引文件完成 usexscj &&打開c:\vfplx\xscj表文件 list &&以輸入順序顯示記錄 ***建立學(xué)號(hào)升序,姓名降序的獨(dú)立復(fù)合索引文件 indeonxhtagxhofcjsy &&據(jù)xh字段建立獨(dú)立復(fù)合索引文件cjsy.cdx。

indeonxmtagxmofcjsydescending&&增加xm索引標(biāo)識(shí),降序 setordertoxm &&確定以索引標(biāo)識(shí)xm(姓名)排序 list &&顯示結(jié)果為按xm降序排列 setordertoxh &&確定以索引標(biāo)識(shí)xh排序 list &&顯示結(jié)果為按xh升序排列 setindeto &&單獨(dú)關(guān)閉索引文件 list &&顯示結(jié)果恢復(fù)輸入的物理順序(自己查看) use &&關(guān)閉表文件 usexscj &&表文件打開時(shí),cjsy.cdx沒有一起打開。 use

***若要求cjsy.cdx與表文件一起打開,應(yīng)輸入 usexscjindecjsy &&使表文件與索引文件一起打開 use ***也可以單獨(dú)打開獨(dú)立復(fù)合索引文件 usexscj setindetocjsy &&單獨(dú)打開獨(dú)立復(fù)合索引文件 deletagxm &&從cjsy.cdx刪除索引標(biāo)識(shí)xm deletagall &&刪除所有索引標(biāo)識(shí),并刪除復(fù)合索引文件cjsy.cdx use 除了利用索引使表記錄在不改變表文件的物理順序的情況下,按指定的次序排列外,也可以改變表記錄的物理順序使表文件中的記錄按照某個(gè)關(guān)鍵字值的大小重新排列。 3.3.2索引查詢 1.FIND命令 命令格式:FIND<表達(dá)式> FIND命令在當(dāng)前表文件的主索引文件中查找索引關(guān)鍵字段與指定的<表達(dá)式>相匹配的第一條記錄,若檢索到匹配的記錄,則將記錄指針指向該記錄,同時(shí)使函數(shù)FOUND()的返回值為“真”;否則使FOUND()函數(shù)的返回值為“假”,EOF()函數(shù)的返回值為“真”。FIND只能查找字符型或數(shù)值型關(guān)鍵字。 例3-21利用FIND命令查找姓名為“吳國(guó)穎”與姓“李”的人。 Clear &&清空VFP窗口 setdefaulttoc:\vfplx &&設(shè)置VFP缺省路徑usexscj &&打開c:\vfplx\xscj表文件 indeonxmtagxmofcjsy&&據(jù)xh字段,建立獨(dú)立復(fù)合索引文件cjsy.cdx find“吳國(guó)穎” &&據(jù)姓名索引查找“吳國(guó)穎”(可加定界符""查找)

disp &&顯示當(dāng)前記錄 find李 &&查找姓“李”的人(可不加定界符查找) disp deletagall &&刪除復(fù)合索引文件 use 2.SEEK命令 命令格式:SEEK<表達(dá)式> SEEK命令在當(dāng)前表文件的主索引文件中檢索索引關(guān)鍵字段與指定<表達(dá)式>相匹配的第一條記錄。 SEEK命令功能比FIND命令強(qiáng),它不僅可以檢索字符型或數(shù)值型數(shù)據(jù),而且還能檢索數(shù)值型和日期型數(shù)據(jù)。該命令要求字符型數(shù)據(jù)必須用定界符括起來(lái),數(shù)值型數(shù)據(jù)則不用定界符,字符型日期數(shù)據(jù)則要用CTOD函數(shù)將其轉(zhuǎn)換成日期型數(shù)據(jù)。此外,在SEEK命令中如果<表達(dá)式>為變量名,則無(wú)需用宏替換函數(shù)。SEEK命令在檢索到相匹配的記錄后,記錄指針指向該記錄,并使函數(shù)FOUND()的返回值為“真”;否則使FOUND()函數(shù)的返回值為“假”,EOF()函數(shù)的返回值為“真”。 注意:邏輯型定界符為“.”,字符型定界符為“”(雙引號(hào)),日期型定界符為{^}。 例3-22利用SEEK命令查找xs.dbf中日期為1973年11月16日的記錄。 Clear &&清空VFP窗口 setdefaulttoc:\vfplx &&設(shè)置VFP缺省路徑 usexs &&打開c:\vfplx\xs表文件 indeoncsnytagcsnyofcsnysy &&據(jù)csny字段建立獨(dú)立復(fù)合索引文件 seek{^1973-11-16} &&{^1973-11-16}是VFP6.0中的年月日格式 disp &&顯示當(dāng)前記錄 deletagall use 3.3.3排序 所謂排序就是把表文件中的記錄按照關(guān)鍵字值的大小重新排列并生成一個(gè)新的表文件。排序有時(shí)又稱為分類。排序時(shí),使用SORT命令。 命令格式:SORTTO<文件名>ON<字段名>[/A][/D][<范圍>][FOR<條件>][FIELDS<字段名表>] 其中,/A表示按升序排序,/D表示按降序排序,如果省略此項(xiàng)則按升序排序。

例3-23按升序?qū)scj表中的xh字段進(jìn)行排序并建立一個(gè)xhxscj表文件。 Clear &&清空VFP窗口 setdefaulttoc:\vfplx &&設(shè)置VFP缺省路徑 usexscj &&打開c:\vfplx\xscj表文件 sorttoxhxscjonxh use 例3-24按降序?qū)scj表中的xm字段進(jìn)行排序并建立一個(gè)xmxscj表文件。 Clear &&清空VFP窗口 setdefaulttoc:\vfplx &&設(shè)置VFP缺省路徑 usexscj &&打開c:\vfplx\xscj表文件 sorttoxhxscjonxm/d use3.

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論