第2章數(shù)據(jù)表的建立與操作_第1頁
第2章數(shù)據(jù)表的建立與操作_第2頁
第2章數(shù)據(jù)表的建立與操作_第3頁
第2章數(shù)據(jù)表的建立與操作_第4頁
第2章數(shù)據(jù)表的建立與操作_第5頁
已閱讀5頁,還剩112頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第2章數(shù)據(jù)表的建立與操作浙江財經(jīng)學(xué)院信息學(xué)院軟件教研室?2005-2006

ZUFE,

InformationSchool內(nèi)容導(dǎo)航理論教學(xué)課后習(xí)題與上機實驗本章要點回顧學(xué)習(xí)提要與目標學(xué)習(xí)提要與目標熟練掌握表結(jié)構(gòu)的建立與表內(nèi)容的輸入;熟練掌握內(nèi)容的編輯與修改;熟練掌握索引的概念及索引表的建立與運用;熟練使用常用的表的運算操作命令;對表記錄指針的概念及定位有深刻的理解。本章內(nèi)容表結(jié)構(gòu)的建立表內(nèi)容的輸入表內(nèi)容的編輯修改表內(nèi)容的索引及查找表的其他操作文件管理類命令返回2.1表結(jié)構(gòu)的建立與表內(nèi)容的輸入基本數(shù)據(jù)表表結(jié)構(gòu)的建立表結(jié)構(gòu)的顯示與修改一、基本數(shù)據(jù)表(P220)在數(shù)據(jù)庫中,數(shù)據(jù)表是最基本的文件,該文件的擴展名為.DBF,若數(shù)據(jù)表中有一個或多個備注型字段,則VisualFoxPro系統(tǒng)會自動產(chǎn)生一個同名的.FPT文件,用于存放備注型字段的內(nèi)容。數(shù)據(jù)表文件由表結(jié)構(gòu)和記錄(內(nèi)容)兩部分組成。本教材主要使用以下幾張數(shù)據(jù)表:學(xué)生基本情況表,課程情況表和學(xué)生成績表:二、表結(jié)構(gòu)的建立1、VisualFoxPro系統(tǒng)對表結(jié)構(gòu)的規(guī)定文件名:數(shù)據(jù)表文件的擴展名為.DBF,文件名由用戶自定,但必須由ASCII碼和漢字組成,文件名長度最多可以使用250個字符。字段數(shù):一個表文件最多可有255個字段。字段名:自由表字段的命名規(guī)則是名稱的最大長度為10個字符,即最多5個漢字,由字母、漢字、數(shù)字和下劃線組成。庫表字段名的最大長度可以達到128個字符。字段類型:支持數(shù)據(jù)類型共有13種。它們是:字符型(C)、數(shù)值型(N)、邏輯型(L)、日期型(D)、備注型(M)、通用型(G)、整型(N)、雙精度型(N)、浮點型(N)、日期時間型(T)、貨幣型(Y)、二進制字符型(C)、二進制備注型(M)。字段寬度:字段寬度表示該字段中可以存放數(shù)據(jù)的最大字符數(shù)。以下9種類型的字段寬度是系統(tǒng)規(guī)定:小數(shù)位數(shù):小數(shù)位的最大寬度是字段寬度減1,即至少要留出小數(shù)點的位置。2、設(shè)計表結(jié)構(gòu)(1)用表設(shè)計器建立表結(jié)構(gòu)。①菜單方法(a)單擊“文件”→“新建”菜單或“新建”按鈕,出現(xiàn)“新建”對話框3、表結(jié)構(gòu)的建立(b)選擇好保存位置,在“輸入表名”框中輸入表的名稱:(c)在表設(shè)計器窗口中輸入已設(shè)計好的表結(jié)構(gòu):注意:在輸入過程中,移動光標可使用TAB鍵或使用鼠標,不能按回車鍵,按回車鍵則是結(jié)束表結(jié)構(gòu)的創(chuàng)建!!

“插入”按鈕:在已選定的字段前插入一個新字段?!皠h除”按鈕:從表中刪除選定字段。拖動字段名左端的方塊可改變字段的順序。⑵命令方式。格式:CREATE[<表文件名>/?]功能:在當前文件夾下建立一個新數(shù)據(jù)表文件(.DBF)。若有備注字段則自動建立一個同名的備注文件(.FPT)當前文件夾的問題:當前文件夾也即默認目錄。系統(tǒng)默認目錄一般是VisualFoxPro系統(tǒng)所在的文件夾,需要我們重新設(shè)置默認目錄,默認目錄的設(shè)置方法有下面兩種:方法1(菜單方式):使用菜單命令:“工具”→“選項”,出現(xiàn)“選項”對話框…方法2(命令方式):命令格式:SETDEFAULTTO[<驅(qū)動器號>][<路徑>]例2.1:用命令方式將當前工作目錄設(shè)置為D盤“VFP”文件夾下的“數(shù)據(jù)”文件夾。SETDEFAULTTOD:\VFP\數(shù)據(jù)&&在命令窗口輸入(2)通過復(fù)制建立表結(jié)構(gòu):格式:COPYSTRUCTURETO<文件名>[FIELDS<字段名表>]功能:復(fù)制當前表文件的結(jié)構(gòu)到指定的文件。例2.2:從已存在的“學(xué)生”表創(chuàng)建“XS1”的表結(jié)構(gòu),“XS1”表的結(jié)構(gòu)與“學(xué)生”表的結(jié)構(gòu)一樣。USE學(xué)生COPYSTRUCTURETOXS1例2.3:從已存在的“學(xué)生”表創(chuàng)建“XS2”的表結(jié)構(gòu),“XS2”表的結(jié)構(gòu)只取“學(xué)生”表的學(xué)號、姓名、性別三個字段。COPYSTRUCTURETOXS2FIELD學(xué)號,姓名,性別三、表結(jié)構(gòu)的顯示與修改1、表結(jié)構(gòu)的顯示格式1:DISPLAYSTRUCTURE格式2:LISTSTRUCTURE注意:DISPLAYSTRUCTURE的顯示格式是分頁顯示,而LISTSTRUCTURE的顯示格式是連續(xù)滾動顯示。例2.4:顯示“學(xué)生.DBF”表結(jié)構(gòu),在命令窗口輸入下述命令:USE學(xué)生DISPLAYSTRUCTURE總計的字節(jié)數(shù)為38,比各字段寬度之和多1個字節(jié),用來存放刪除標記“*”。如果支持空值,則總計的字節(jié)數(shù)為39,還要增加1個字節(jié),用來記錄支持空值的狀態(tài)。2.表結(jié)構(gòu)的修改(1).菜單方式從“顯示”→“表設(shè)計器”命令,進入表設(shè)計器,可查看和修改當前表的結(jié)構(gòu)。(2)命令方式格式:MODIFYSTRUCTURE功能:用表設(shè)計器修改當前表結(jié)構(gòu)。注意:在修改表結(jié)構(gòu)時要防止數(shù)據(jù)的丟失。更改字段類型或字段寬度變小時,原字段內(nèi)容會丟失。在更改表結(jié)構(gòu)后會自動建立原表的備份。 (.DBF→.BAK,.FPT→.TBK)如果丟失了數(shù)據(jù),可以通過備份文件恢復(fù)。(.BAK→.DBF,.TBK→.FPT)2.2表內(nèi)容的輸入表文件的打開與關(guān)閉表內(nèi)容的輸入表內(nèi)容的顯示2.2表內(nèi)容的輸入2.2.1表文件的打開與關(guān)閉

1、表的打開(1)菜單方式:方法1:“文件”→“打開”………方法2:選擇“窗口”→“數(shù)據(jù)工作期”菜單命令(2)命令方式:格式:USE<表文件名>功能:在當前工作區(qū)打開指定的表文件。說明:(1)默認擴展名是.DBF。

(2)若表中有備注字段,自動打開相關(guān)的備注文件(.FPT)。 (3)表文件打開時,記錄指針指向首記錄。2、表的關(guān)閉(1)菜單方式:“窗口”+“數(shù)據(jù)工作期”→選擇表名→“關(guān)閉”。注意:關(guān)閉表的瀏覽窗口,并未關(guān)閉文件。(2)命令方式

USE:使用不加表名的USE命令,關(guān)閉當前工作區(qū)中打開的表。

CLOSETABELS:關(guān)閉所有工作區(qū)中已打開的表文件。CLEARALL:清除內(nèi)存變量,同時關(guān)閉所有工作區(qū)中已打開的表文件。CLOSEALL:關(guān)閉所有已打開的文件,包括表文件。二、表內(nèi)容的輸入當結(jié)構(gòu)建完后,屏幕自動提示“現(xiàn)在輸入數(shù)據(jù)記錄嗎?”,回答“是”,即可立即給一個空表輸入記錄。沒有立即輸入記錄,可以用下面的方法輸入記錄。1、用菜單方式輸入記錄:(1)追加任意條記錄:選擇“顯示”→“瀏覽××表”進入表的瀏覽窗口,然后選擇“顯示”→“追加方式”菜單命令,(2)追加一個空白記錄:“顯示”→“瀏覽××表”的命令,進入表的瀏覽窗口,然后選擇“表”→“追加新記錄”(3)成批追加記錄:選擇“表”+“追加記錄”。2.命令方式(1)追加記錄。格式:APPEND[BLANK][IN<工作區(qū)號>/<別名>]功能:在表的末尾添加一個或多個新記錄。說明:BLANK選項是添加一個空記錄例2.5:給學(xué)生表追加記錄。USE學(xué)生APPEND&&用全屏幕編輯方式追加記錄APPENDBLANK&&在表文件末尾追加一個空記錄(2)插入命令格式:INSERT[BEFORE][BLANK]功能:在當前表中插入一個新記錄。說明:BLANK選項:插入一個空記錄。

BEFORE選項:在當前記錄前插入一個新記錄。注意問題:記錄多時不宜使用INSERT命令。沒有主控索引時,用INSERT命令插入的記錄只能添加到表的最后;如果有主控索引,插入的記錄調(diào)整到相應(yīng)的位置。對具有完整性約束(如觸發(fā)器、主關(guān)鍵字或候選關(guān)鍵字等)的表不能使用INSERT命令(見本書第7章)。例2.6:在“學(xué)生.DBF”表的第5條記錄前、后各插入一條空記錄。USE學(xué)生GO5INSERTBLANKGO5INSERTBEFOREBLANKLIST&&結(jié)果如圖2.19所示3.編輯備注字段顯示“memo”表示無數(shù)據(jù)。顯示“Memo”,表示已有數(shù)據(jù)。進入編輯狀態(tài):雙擊備注字段或在備注字段上按Ctrl+PgDn鍵。退出:關(guān)閉窗口或Ctrl+W或菜單“文件”+“關(guān)閉”,保存并關(guān)閉。 ESC鍵或Ctrl+Q,則不保存退出。4.編輯通用字段:(1)OLE對象:

OLE是ObjectLinkingandEmbedding的簡稱,即對象的鏈接與嵌入。OLE對象可以是一個完整的Word文檔或部分的Word文檔,也可以是一幅畫、一張照片,或者一段音樂。(2)鏈接與嵌入:鏈接方法是按照文件的路徑與指定文件保持連接;嵌入方法則是將指定文件的副本放到VisualFoxPro中。鏈接與嵌入的區(qū)別:數(shù)據(jù)的存儲地點不同。(3)將OLE對象鏈接到通用型字段:

(被鏈接的文件應(yīng)存在)“gen”表示尚無數(shù)據(jù),“Gen”表示已有數(shù)據(jù)存在。①用鼠標雙擊通用型字段或按Ctrl+PgDn鍵,進入通用型字段編輯窗口;②選擇“編輯”→“插入對象”命令;③選擇“由文件創(chuàng)建”,并將鏈接打√,按“瀏覽…”按鈕,找到需要的文件,“確定”(4)將OLE對象嵌入到通用型字段:進入通用型字段編輯窗口;選擇“編輯”→“插入對象”命令,;選擇“新建”,選擇一個應(yīng)用程序,建立對應(yīng)的文件并嵌入;或者選擇“由文件創(chuàng)建”,但鏈接不打√,按“瀏覽…”按鈕….(5)通用型字段內(nèi)容的修改與刪除:修改:進入通用型字段編輯窗口后,雙擊對象調(diào)出該對象的應(yīng)用程序,可對對象進行修改。刪除:進入已放入OLE對象的通用型字段編輯窗口,選擇菜單“編輯”→“清除”命令,可將OLE對象刪除。三、表內(nèi)容的顯示1、菜單方式: 選擇菜單“顯示”→“瀏覽××表”,用瀏覽窗口瀏覽表的內(nèi)容瀏覽窗口有“瀏覽”和“編輯”兩種顯示方式,用菜單“顯示”→“瀏覽”和“顯示”→“編輯”命令來切換。2.命令方式(1)瀏覽命令(BROWSE)格式:BROWSE[FIELDS<字段名表>][FOR<條件1>][LAST][TITLE<標題文本>]…功能:打開當前表的瀏覽窗口,可實現(xiàn)顯示、修改、刪除和追加表中的記錄。參數(shù):[FIELDS<字段名表>]:指定顯示的字段。缺省為所有字段。FOR<條件>:只有<條件>為“真”的記錄才顯示于瀏覽窗口。LAST:表示保留上次命令[FIELDS<字段名表>]的選擇。TITLE<標題文本>:改寫標題欄中的默認表名。例2.7:瀏覽“學(xué)生.DBF”表中男同學(xué)記錄的學(xué)號,姓名,出生年月字段,并給出瀏覽標題:“男生基本情況表”。USE學(xué)生BROWSEFIELDS學(xué)號,姓名,出生年月FOR性別;TITLE“男生基本情況表”(2)連續(xù)滾動顯示:格式:LIST[OFF][<范圍>][FOR...][FIELDS….]功能:滾動顯示表中的記錄。說明:[OFF]:不顯示記錄號;[<范圍>]:有ALL、NEXTN、RECORDN、REST[FOR<條件>]:指定顯示記錄的條件[WHILE<條件>]:遇到不滿足條件的記錄就停止,優(yōu)先于FOR<條件>默認范圍為ALL,命令執(zhí)行完畢記錄指針定在文件尾。如果要顯示備注字段的內(nèi)容,必須在LIST命令中指定字段名例2.8:用LIST命令進行顯示“學(xué)生.DBF”表記錄的各種操作。USE學(xué)生LIST&&顯示所有記錄LISTFIELDS學(xué)號,姓名,YEAR(出生年月),獎學(xué)金,獎學(xué)金+100GO1&&記錄指針移到第1條記錄LISTNEXT3FIELDS學(xué)號,姓名,性別,簡歷?RECNO()&&測試記錄指針的位置,結(jié)果是3P47LISTFORSUBSTR(學(xué)號,1,3)=”953”.AND.性別P43GO6&&記錄指針移到第6條記錄LISTREST&&顯示第6及后續(xù)的所有記錄?EOF()&&測試記錄指針是否在文件尾,結(jié)果為.T.

P47(3)分屏顯示格式:DISPLAY[OFF][<范圍>][FOR<條件>][FIELDS<表達式表>]功能:分屏顯示當前表中的指定數(shù)據(jù),功能與LIST相同。說明:在不帶所有選項時,DISPLAY的默認范圍為當前記錄。DISPLAY與LIST的區(qū)別有兩點:DISPLAY的默認范圍為當前記錄,LIST的默認范圍為所有記錄;DISPLAY是分屏顯示,LIST是滾屏顯示。例2.9:分屏顯示“學(xué)生.DBF”表記錄。USE學(xué)生&&剛打開的表,記錄指針在第1條記錄DISPLAYDISPLAYFOR!性別AND出生年月>={^1971-01-01}P36&&注意帶選項后是從所有的記錄中挑選滿足條件的記錄2.3表內(nèi)容的編輯修改表記錄定位表內(nèi)容修改表記錄刪除一、表記錄定位(P81)1、記錄指針 是系統(tǒng)給表文件設(shè)計的一種內(nèi)部標志,用來指出表的當前記錄。記錄號:表的每條記錄都有一個,記錄號是系統(tǒng)按照表記錄輸入時的順序自動給加上的,不是用戶設(shè)計的字段。記錄指針定位的方法有三種: 絕對定位、相對定位和查找定位。2.絕對移動格式1:GO/GOTO[RECORD]<記錄號>格式2:GO/GOTOTOP/BOTTOM文件頭BOFTOP(首記錄)BOTTOM(末記錄)文件尾EOF3.相對移動格式:SKIP±<記錄數(shù)>功能:使記錄指針在表中向前或向后相對移動。USE學(xué)生?RECNO(),BOF()LIST?RECNO(),EOF()GOTOP ?RECNO(),BOF()SKIP–1?RECNO(),BOF()GOBOTTOM?RECNO(),EOF()SKIP ?RECNO(),EOF()GO5DISPLAYSKIP22?RECNO(),EOF()二、表內(nèi)容修改1、菜單方式打開表后,選擇“顯示”→“瀏覽××”進入瀏覽窗口…2、命令方式修改有:BROWSE、EDIT、CHANGE、REPLACE等命令。其中BROWSE、EDIT、CHANGE命令與上面的菜單類似。重點掌握成批修改命令:REPLACE格式:REPLACE<字段名1>WITH<表達式1>[,<字段名2>WITH<表達式2>]…[<范圍>][FOR<條件>]注意:默認范圍是當前記錄例2.11:將“學(xué)生.DBF”表復(fù)制生成一個副本“XS1.DBF”,然后將“XS1.DBF”表的獎學(xué)金字段的數(shù)據(jù)改為原來的十倍,并將羅浩的出生年月改為1972年9月8日。USE學(xué)生COPYTOXS1USEXS1REPLACEALL獎學(xué)金WITH獎學(xué)金*10LOCATEFOR姓名="羅浩"&&查找"羅浩"的記錄REPLACE出生年月WITH{^1972-09-08}LIST&&結(jié)果如圖2.37所示例2.12:有一個工資表文件“工資.DBF”,其表結(jié)構(gòu)如表2.8所示,要求計算每位職工的應(yīng)發(fā)工資和實發(fā)工資。USE工資LIST三、表記錄刪除1、菜單方式(在瀏覽窗口中進行)(1)邏輯刪除:進入表的瀏覽窗口,單擊要刪記錄左邊的小方框(即刪除框)(2)物理刪除:選擇“表”→“徹底刪除”。2、命令方式(1)邏輯刪除格式:DELETE[<范圍>][FOR<條件>]功能:給要刪除的記錄打上刪除標記“*”。注意:默認范圍是當前記錄(NEXT1)例2.13:記錄的邏輯刪除。USE學(xué)生COPYTOXS2USEXS2DELETEFOR獎學(xué)金=75GO5DELETELIST&&結(jié)果如圖2.42所示,1、2、5、9記錄被邏輯刪除

(2)設(shè)置邏輯刪除的有效性格式:SETDELETEDON/OFF功能:指定標有刪除標記的記錄是否參與其他命令的處理。SETDELETEDONLIST&&顯示結(jié)果如圖2.43(3)恢復(fù)刪除格式:RECALL[<范圍>][FOR<條件>]功能:將指定記錄的邏輯刪除標記清除。注意:默認的范圍是當前記錄(NEXT1)。例2.15:表記錄的邏輯刪除與恢復(fù)。USE課程DELETEFOR考查標志=“1”SETDELETEDOFFLISTRECALLFOR開課學(xué)期=“1”LIST(4)物理刪除格式:PACK功能:永久刪除當前表中標有刪除標記的記錄。例2.16:物理刪除操作。USE學(xué)生COPYTOXS3USEXS3DELETEFOR性別PACK&&PACK后記錄號重新編排LIST(5)刪除所有記錄格式:ZAP功能:物理刪除所有記錄,只留下表的結(jié)構(gòu)。例2.17:物理刪除所有記錄。USEXS3LIST&&結(jié)果如圖2.46所示SETSAFETYON&&設(shè)置安全開關(guān)為ON狀態(tài)ZAP&&出現(xiàn)確認對話框,如圖2.47所示2.4表內(nèi)容的索引及查找表內(nèi)容的排序索引的建立表內(nèi)容的檢索一、表內(nèi)容的排序格式:SORTTO<表文件名>ON<字段名1>[/A//D][/C]…功能:對當前表按<字段名1>、<字段名2>依次排序,并將排序后的記錄存放到指定文件中。注意:命令的默認范圍是ALL。USE學(xué)生SORTON獎學(xué)金,出生年月TOXSS64USEXSS64LISTSORTON學(xué)號TOXSS1FIELD學(xué)號,姓名USEXSS1LIST&&結(jié)果略二、索引的建立SORT排序的不足: 是物理排序,生成與原表一樣大小的.DBF文件,排序的速度慢,占很大的存儲空間。1、索引文件的概念僅由索引關(guān)鍵字和指針(記錄號)組成的文件。索引文件2、索引文件的分類索引文件單項索引.IDX復(fù)合索引.CDX壓縮不壓縮結(jié)構(gòu)復(fù)合索引非結(jié)構(gòu)(獨立)復(fù)合索引(1)單項索引文件(.IDX)

用命令建立,只有一個索引項,不會隨著表的打開而打開。單項索引文件的示意(2)結(jié)構(gòu)復(fù)合索引文件(.CDX)

在創(chuàng)建表或修改表結(jié)構(gòu)時建立的。與表名相同,隨表自動打開和同時關(guān)閉。結(jié)構(gòu)復(fù)合索引文件示意(3)非結(jié)構(gòu)(獨立)復(fù)合索引文件(.CDX)

是用命令另行建立的,與表文件不同名。不會隨表自動打開,必須用命令打開。非結(jié)構(gòu)復(fù)合索引文件示意

建議:表文件的索引一般選擇結(jié)構(gòu)復(fù)合索引文件的形式。如果是臨時需要索引,可以選擇單項索引文件.IDX。3、創(chuàng)建索引文件(1)菜單方式:(只能建結(jié)構(gòu)復(fù)合索引?。。帮@示”→“表設(shè)計器”→“字段卡”

…也可以在“索引卡”中建立、修改和刪除索引標識。主索引:索引表達式必須是關(guān)鍵字段。候選索引:同主索引的要求。唯一索引:相同索引值的記錄只留一條記錄。普通索引:沒有限制。(2)命令方式①建立單項索引文件:格式:INDEXON<索引表達式>TO<文件名>[UNIQUE][COMPACT][ADDITIVE]功能:對當前表根據(jù)索引表達式的值升序建立單項索引文件。壓縮索引唯一性添加,不關(guān)閉原索引例2.19:建立各種單項索引文件。USE學(xué)生INDEXON學(xué)號TOXH INDEXON獎學(xué)金TOJXJ INDEXONSTR(獎學(xué)金,6,2)+DTOS(出生年月)TOS64LIST&&結(jié)果如圖2.58所示INDEXON8000-獎學(xué)金TOJXJJX②建立復(fù)合索引文件格式:INDEXON<索引表達式>TAG<索引標識>[OF<文件名>][FOR<條件>][UNIQUE][ASCENDING/DESCENDING][ADDITIVE]功能:對當前表按索引表達式升序或降序建立索引,并以〈索引標識〉為標志,存入結(jié)構(gòu)復(fù)合索引文件或OF后指定的非結(jié)構(gòu)(獨立)復(fù)合索引文件中。非結(jié)構(gòu)(獨立)復(fù)合索引文件名升序/降序例2.20:建立各種復(fù)合索引文件。USE學(xué)生EXCLUSIVE&&建立結(jié)構(gòu)復(fù)合索引文件必須以獨占方式打開表文件INDEXON姓名TAGXM1INDEXON姓名TAGXM2OFFJGINDEXON性別TAGXBOFFJGUNIQUEINDEXON獎學(xué)金DESCENDINGTAGJXJ4、打開索引文件(下列情況索引已打開:剛建立的索引、結(jié)構(gòu)復(fù)合索引。)(1)打開表的同時打開索引文件格式:USE[<表文件名>][INDEX<索引文件名表>[ORDER[<索引序號>/<單項索引文件名>/[TAG]<索引標識>[OF<復(fù)合索引文件>]功能:在打開表文件時打開各個索引文件。例2.23:打開索引文件并觀察記錄指針以及文件頭尾的情況。GOTOP?RECNO(),BOF() SKIP-1?RECNO(),BOF() GOBOTTOM?RECNO(),EOF() SKIP?RECNO(),EOF() (10.T.)(2)打開表文件后打開索引文件格式:SETINDEXTO[<索引文件名表>][ORDER…...]功能:打開一個或多個索引文件,供當前表使用。例2.24:打開前面已經(jīng)建立的非結(jié)構(gòu)復(fù)合索引文件FJG..CDX、單項索引文件XS64.IDX、XH.IDX、JXJ.IDX,并觀察主控索引。USE學(xué)生SETINDEXTOFJG,XS64,XHLIST &&記錄以物理順序顯示(見圖2.62)SETINDEXTOJXJADDITIVE&&追加打開JXJ.IDXLIST &&以JXJ.IDX為主控索引,如圖2.63所示5、確定主控索引文件所謂主控索引是指處理和顯示記錄使用的索引順序。格式:SETORDERTO[<索引序號>/<單項索引文件>/[TAG]<索引標識>[OF<復(fù)合索引名>]功能:重新確定主控索引文件說明:有三種方式:<索引序號>:1、2、3、….,順序為:打開的.IDX文件,然后是結(jié)構(gòu)復(fù)合索引中按其生成順序編號;最后是非結(jié)構(gòu)(獨立)復(fù)合索引文件按其生成順序編號??刹榭幢碓O(shè)計器中的索引卡。單項索引文件名:復(fù)合索引的索引標識:[TAG]<索引標識>[OF<索引文件名>]例2.25:確定主控索引文件或主控標識。SETORDERTOXHSETORDERTOTAGXBLIST&&結(jié)果如圖2.66所示SETORDERTO&&恢復(fù)自然順序6、索引文件更新格式:REINDEX功能:更新當前工作區(qū)打開的所有索引文件。例2.26:更新索引實例。USE學(xué)生APPENDBLANKSETINDEXTOJXJ,XS64,XH,FJGLIST&&添加的空記錄沒有反映到新打開的索引文件中REINDEX&&更新打開的所有索引文件LIST &&如圖2.68所示注意:索引文件打開的情況下,能自動更新。不須用REINDEX!7、關(guān)閉索引文件格式1:CLOSEINDEXES格式2:SETINDEXTO功能:都是關(guān)閉當前工作區(qū)的所有索引文件。另:關(guān)閉表的同時索引文件也被關(guān)閉。三、表內(nèi)容的檢索1、順序查找(1)順序查找命令。格式:LOCATEFOR<條件>[<范圍>]功能:按順序搜索表找到滿足條件的第一個記錄。說明:該命令用于查找未索引或已索引的表文件。LOCATE的默認范圍是ALL,即所有記錄。如果找到滿足條件的記錄,函數(shù)FOUND()的結(jié)果為.T.,函數(shù)EOF()為.F.;否則,F(xiàn)OUND()為.F.,EOF()為.T.。(2)繼續(xù)查找命令。格式:CONTINUE定位到滿足LOCATE條件的下一條記錄,可重復(fù)執(zhí)行CONTINUE,直到到達范圍邊界或文件尾。例2.27:用LOCATE、CONTINUE順序查找滿足條件的一組記錄。USE學(xué)生LOCATEFORSUBSTR(學(xué)號,1,3)="951"?FOUND()DISPLAY&&顯示找到的第一個記錄CONTINUE&&繼續(xù)查找下一條記錄DISPLAYCONTINUE&&繼續(xù)查找下一條記錄DISPLAYCONTINUE?EOF()&&結(jié)果為真,說明到了文件尾,查找結(jié)束2、檢索查找SEEK命令:格式:SEEK<表達式>……功能:在已打開的索引文件中搜索索引關(guān)鍵字與指定表達式匹配的第一個記錄。說明:<表達式>:可以是字符型、數(shù)值型、邏輯型、日期型等各種類型的表達式。也可以是單個的常量或變量。例2.28:用SEEK命令進行索引查找。USE學(xué)生SETINDEXTOJXJ SEEK25 &&查找獎學(xué)金=25的記錄DISPLAYSKIP &&查找下一個獎學(xué)金=25的記錄DISPLAY INDEXON學(xué)號+姓名TAGXHXMNAME="朱偉"SEEK"953002"+NAME?FOUND(),RECNO(),EOF()DISPLAYINDEXON出生年月TOCSNYSEEK{^1971-08-03}DISPLAY2.5表的其他操作表內(nèi)容的統(tǒng)計計算表內(nèi)容的復(fù)制與大批量數(shù)據(jù)追加表結(jié)構(gòu)文件的建立與應(yīng)用一、表內(nèi)容的統(tǒng)計計算

1、計數(shù)命令格式:COUNTTO<內(nèi)存變量>[<范圍>][FOR<條件>]功能:統(tǒng)計當前表中指定范圍內(nèi)滿足條件的記錄個數(shù)。說明:默認的范圍是ALL。TO<內(nèi)存變量>:存儲計算結(jié)果(內(nèi)存變量或數(shù)組)例2.29:統(tǒng)計學(xué)生表的學(xué)生總?cè)藬?shù)以及男生、女生的人數(shù)。USE學(xué)生COUNTTOZRSCOUNTFOR性別TONSCOUNTFOR!性別TOVS?"總?cè)藬?shù)="+STR(ZRS,1),"男生人數(shù)="+STR(NS,1),"女生人數(shù)="+STR(VS,1)2、數(shù)值字段求和命令格式:SUM[<表達式表>][<范圍>][FOR<條件>][TO<內(nèi)存變量名表>][TOARRAY<數(shù)組名>]功能:對當前表的指定數(shù)值型字段或全部數(shù)值型字段縱向求和。說明:默認范圍是所有記錄(ALL)。例2.30:對工資表的基本工資、崗位津貼和實發(fā)金額字段求和。SETTALKOFF&&關(guān)閉對話開關(guān),計算結(jié)果不馬上顯示USE工資SUM基本工資,崗位津貼,實發(fā)金額TOGZ1,GZ2,GZ3?GZ1,GZ2,GZ3&&用顯示命令顯示結(jié)果SETTALKON&&打開對話開關(guān),計算結(jié)果馬上顯示SUMTOARRAYGZ&&對所有數(shù)值型字段求和,結(jié)果存入內(nèi)存變量數(shù)組GZLISTMEMORYLIKEGZ*&&顯示內(nèi)存變量數(shù)組GZ3、求平均數(shù)命令格式:AVERAGE[<表達式表>][<范圍>][FOR<條件>][[TO<內(nèi)存變量名表>/TOARRAY<數(shù)組名>]功能:計算數(shù)值表達式或字段的算術(shù)平均值。說明:AVERAGE命令各參數(shù)的含義與SUM命令相同。例2.31:對工資表的基本工資、崗位津貼和實發(fā)金額字段求平均值。USE工資AVERAGE基本工資,崗位津貼,實發(fā)金額TOPJ1,PJ2,PJ3?PJ1,PJ2,PJ3例2.32:在工資表的最后追加二條新記錄,分別填入每項工資的總額和平均值。結(jié)果如下:USE工資COPYTO工資1USE工資1SUMTOARRAYAAVERAGETOARRAYBAPPENDBLANKREPLACE姓名WITH"合計",基本工資WITHA(1),崗位津貼WITHA(2),其他發(fā)款WITHA(3),應(yīng)發(fā)金額WITHA(4),其他扣款WITHA(5),實發(fā)金額WITHA(6)APPENDBLANKREPLACE姓名WITH"平均值",基本工資WITHB(1),崗位津貼WITHB(2),其他發(fā)款WITHB(3),應(yīng)發(fā)金額WITHB(4),其他扣款WITHB(5),實發(fā)金額WITHB(6)LISTOFF 4、統(tǒng)計計算命令格式:CALCULATE<表達式表>[<范圍>][FOR<條件][TO<內(nèi)存變量名表>/TOARRAY<數(shù)組名>]功能:能對當前表文件的字段作平均、總和、最大、最小等各種統(tǒng)計計算。說明:<表達式表>可由函數(shù)任意組合而成,下面給出一些常用函數(shù):AVG(<數(shù)值表達式>):計算<數(shù)值表達式>的算術(shù)平均值。SUM(<數(shù)值表達式>):計算<數(shù)值表達式>的和。CTN():返回滿足<條件>的記錄數(shù)。MIN(<表達式>):返回<表達式>的最小值,該<表達式>可以是各種數(shù)據(jù)類型。MAX(<表達式>):返回<表達式>的最大值,該<表達式>可以是各種數(shù)據(jù)類型。例2.33:應(yīng)用統(tǒng)計計算命令統(tǒng)計有關(guān)項目。USE工資SETTALKONCALCULATEAVG(基本工資),AVG(崗位津貼),AVG(實發(fā)金額)CALCULATEMIN(基本工資),MAX(崗位津貼),SUM(實發(fā)金額)TOX,Y,ZUSE學(xué)生CALCULATEMIN(出生年月),MAX(出生年月)TONY1,NY25、分類求和命令格式:TOTALTO<文件名>ON<字段名>[FIELDS<字段名表>]功能:分類計算當前選定表中數(shù)值字段的總和。說明:結(jié)果存放在<文件名>指定的表中,該表的結(jié)構(gòu)與原表相同。ON<字段名>是分類的依據(jù),表文件必須以該字段排序或索引FIELDS<字段名表>:指定要求和的字段。例2.34:對工資表按照部門代碼分類求各工資項目的分類和。USE工資INDEXON部門代碼TOBMDMTOTALON部門代碼TOGZBMT1USEGZBMT1LISTOFFUSE工資INDEXBMDMTOTALON部門代碼FIELDS實發(fā)金額TOGZBMT2USE工資INDEXBMDMTOTALON部門代碼FIELDS實發(fā)金額TOGZBMT2二、表內(nèi)容的復(fù)制與大批量數(shù)據(jù)追加1、表內(nèi)容的復(fù)制命令格式:COPYTO<文件名>[FIELDS<字段名表>][<范圍>][FOR<條件>][TYPE][SDF/XLS][DELIMITED[WITH<分隔字符>…]功能:用當前表中選定的記錄和字段復(fù)制成一個新表或其它類型的文件。說明:<文件名>指定要創(chuàng)建的新文件,默認擴展名.DBF。TYPE指定非.DBF的文件類型。SDF:系統(tǒng)數(shù)據(jù)格式的文本文件。DELIMITED:創(chuàng)建分隔格式文本文件。XLS:EXCEL文件例2.35:用“學(xué)生”表復(fù)制產(chǎn)生一個新的表文件、一個新的SDF格式的文本文件、一個新的DELIMITED格式的文本文件和一個新的Excel格式的文件。USE學(xué)生COPYTOXSBFFOR性別 COPYTOXSSDFTYPESDFTYPEXSSDF.TXTCOPYTOXSSDELTYPEDELIMITEDTYPEXSSDEL.TXTCO

溫馨提示

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

評論

0/150

提交評論