第四章自由表_第1頁
第四章自由表_第2頁
第四章自由表_第3頁
第四章自由表_第4頁
第四章自由表_第5頁
已閱讀5頁,還剩36頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第四章自由表4.1表文件結(jié)構(gòu)的創(chuàng)建和修改4.2輸入表數(shù)據(jù)4.3表的基本操作4.4修改和刪除記錄數(shù)據(jù)4.5表的排序、索引和查尋4.6表的計算、匯總4.7多表間的基本操作4.1表文件結(jié)構(gòu)的創(chuàng)建和修改4.1.1表結(jié)構(gòu)1)字段名2)字段類型3)字段寬度確定字段寬度就是字段中能夠存放的最大字符數(shù)或數(shù)值的最大位數(shù)4)小數(shù)位若字段的類型是數(shù)字型(N)和浮點(F),就須給出小數(shù)位數(shù)。若是整數(shù),小數(shù)位是05)索引6)Null不等于零或空格,只表明是無明確的值。4.1.2建立表結(jié)構(gòu)1、用命令1)created:\df.dbf2)create3)create?2、用菜單4.1.3修改表結(jié)構(gòu)1)liststructure&&顯示表結(jié)構(gòu)2)modifystructure&&修改表結(jié)構(gòu)備份時VFP自動備份當前表備份文件擴展名是.bak,備注備份文件是.tbk如果不想改了,則把.bak改成.dbf,.tbk改成.fpt4.2輸入表數(shù)據(jù)4.2.1在create命令期間輸入數(shù)據(jù)在創(chuàng)建好表后會提示你是否添加數(shù)據(jù)4.2.2表添加命令A(yù)PPEND[BLANK]參數(shù)描述:[BLANK]:在當前表的末尾添加一條空記錄。功能:在表的末尾添加一個或多個新記錄。說明:■可以在只有表結(jié)構(gòu)而沒有記錄的空表中添加記錄,也可以在已經(jīng)錄入數(shù)據(jù)的表中的尾部追加記錄;■它可以向當前表的尾部追加一條或多條新記錄。省略可選項,則在當前表的尾部追加任意新記錄,追加記錄的方法及操作與用CREATE命令建立表時輸入數(shù)據(jù)的方法相同;當發(fā)出APPEND或APPENDBLANK命令,并且在選定工作區(qū)中沒有打開的表時,將顯示一個“打開”對話框,我們可以在對話框中選擇一個要添加記錄的表。APPEND命令打開一個編輯窗口,我們可以在其中輸入一個或多個新記錄。增加新記錄后,VFP將自動修改打開的所有索引。打開瀏覽窗口后通過追加方式添加記錄方法:在項目管理器中選定一個要添加記錄的表,然后單擊【瀏覽】,然后在系統(tǒng)菜單中選擇【顯示】|【追加方式】。4.2.3在表中插入記錄命令格式:INSERT[BEFORE][BLANK]功能:在當前表當前記錄前面或后面插入一條新記錄,并進入編輯狀態(tài)。選擇[BEFORE]子句,新記錄插在當前記錄之前選擇[BLANK]子句,則插入一條空記錄。也可以用insertinto表values(字段…)4.3表的基本操作4.3.1打開關(guān)閉表文件格式:USE[<表文件名>][EXCLUSIVE][SHARED]功能:打開指定的表文件。參數(shù)描述:<表文件名>:指定要打開的表的名稱。[EXCLUSIVE]:在網(wǎng)絡(luò)上以獨占的方式打開表。[SHARED]:在網(wǎng)絡(luò)上以共享的方式打開表?!龃蜷_表時若表含有備注型字段,則FPT文件也同時被打開?!雒總€表被打開時均賦于一個別名。若省略ALIAS<別名>,則其別名與主文件名相同?!鋈舨贿x擇任何參數(shù),表示關(guān)閉當前工作區(qū)中已打開的表。■在任一時刻,每個工作區(qū)最多允許打開一個表。如果指定工作區(qū)已有表打開,在打開新的表時,系統(tǒng)總是先自動關(guān)閉原來打打開的表。■打開表時,記錄指針指向第一條記錄。4.3.2表的顯示和列表1、顯示表記錄格式一:LIST[OFF][FIELDS<字段名列表>][<范圍>][FOR<條件>][WHILE<條件>][TOPRINTER[PROMPT]/TOFILE<文本文件名>]

格式二:DISPLAY[OFF][FIELDS<字段名列表>][<范圍>][FOR<條件>][WHILE<條件>][TOPRINTER[PROMPT]/TOFILE<文本文件名>]功能:顯示當前表中的全部或部分記錄和數(shù)據(jù)。參數(shù)描述:[OFF]:使用OFF時,不顯示記錄號,否則顯示記錄號。[<范圍>]:范圍為可選項,選擇時為ALL、RECORD(N)、[NEXT(N)、REST中的一個參數(shù),表示記錄顯示的范圍。FIELDS<字段名列表>:若省略<字段名表列>,則顯示當前表中的所有字段,否則顯示指定的字段。如果備注字段名出現(xiàn)在<字段名表列>中,則它的內(nèi)容按50個字符列寬顯示[FOR<條件>/WHILE<條件>]:該子句用于有選擇地顯示某些記錄,省略時則顯示<范圍>限定的全部記錄。[TOPRINTER[PROMPT]/TOFILE<文本文件名>]:指定記錄列表的輸出方向。TOPRINTER[PROMPT]指定輸出到打印機。[PROMPT]參數(shù)的使用方法同前。TOFILE<文本文件名>指定輸出到所指定的文本文件中。2、LIST和DISPLAY的區(qū)別:(1)DISPLAY每顯示一屏記錄時暫停一次,按任意鍵后繼續(xù)顯示剩余的記錄,而LIST沒有周期性暫停,連續(xù)向下顯示,直到記錄顯示完畢為止。(2)若省略所有可選項,則DISPLAY命令顯示當前記錄,即范圍為NEXT1,而LIST命令顯示全部記錄,即范圍為ALL。3、顯示表結(jié)構(gòu)格式一:LISTSTRUCTURE[TOPRINTER[PROMPT]/TOFILE<文本文件名>]格式二:DISPLAYSTRUCTURE[TOPRINTER[PROMPT]/TOFILE<文本文件名>]功能:顯示當前表結(jié)構(gòu)的有關(guān)信息。包括表文件名、記錄個數(shù)、最后一次修改日期、各字段的字段號、字段名、類型、寬度和小數(shù)位,一條記錄的字節(jié)總數(shù)。參數(shù)說明:[TOPRINTER]子句表示將操作結(jié)果送到打印機。后面可以接[PROMPT]參數(shù),這一參數(shù)的在執(zhí)行打印命令之前,先打開“打印設(shè)置”對話框,用以對打印機有關(guān)參數(shù)(如紙張大小、打印范圍等)進行設(shè)置。[PROMPT]參數(shù)只能緊接TOPRINTER命令。[TOFILE]子句表示將操作結(jié)果輸出到指定的磁盤文件中。LISTSTRUCTURE和DISPLAYSTRUCTURE命令的區(qū)別DISPLAYSTRUCTURE在每顯示一屏信息后暫停,等待用戶按任意一鍵后繼續(xù)顯示;LISTSTRUCTURE顯示信息時沒有周期性暫停,而是連續(xù)向下顯示,直到顯示完畢。4.3.3記錄定位1、絕對定位格式一:GOTO[RECORD<數(shù)值表達式>]/TOP/BOTTOM

格式二:GO[RECORD<數(shù)值表達式>]/TOP/BOTTOM格式三:

<數(shù)值表達式>功能:將記錄指針直接定位到指定的記錄上。參數(shù)描述:<數(shù)值表達式>:指定一個物理記錄號,記錄指針移至該記錄上。TOP:將記錄指針定位在表的第一個記錄上。[BOTTOM]:將記錄指針定位在表的最后一個記錄上。說明:RECORD可省略。<數(shù)值表達式>的值必須大于0,且不大于當前表文件的記錄個數(shù)。2、相對定位把記錄指針從當前位置作相對移動。格式:SKIP[<數(shù)值表達式>]功能:將記錄指針向前或向后作相對若干條記錄的移動。參數(shù)描述:<數(shù)值表達式>:指定記錄指針作相對移動的記錄數(shù)據(jù)。說明:1、移動的記錄數(shù)等于<數(shù)值表達式>的值,其值為正數(shù)時,記錄指針向下移動,當<數(shù)值表達式>是負數(shù)時,記錄指針向上移動。2、省略選擇項<數(shù)值表達式>,約定為向下移動一條記錄,即SKIP等價于SKIP1。4.4修改和刪除記錄數(shù)據(jù)4.4.1修改表數(shù)據(jù)1、按記錄的字段縱向排列顯示修改格式:change[<范圍>][fields<字段名表>][while<條件>][for<條件>]2、瀏覽修改命令格式:BROWSE[FIELDS<字段名表>][LOCK<數(shù)據(jù)型表達式>][LAST][FOR<邏輯型表達式>]功能:在屏幕上打開一個瀏覽窗口,在窗口中顯示表的記錄。參數(shù)描述:

[Fields<字段名表>]:指定在瀏覽窗口中顯示的表的字段。LOCK<數(shù)據(jù)型表達式>:將瀏覽窗口一分為二,指定在左窗口中顯示的字段數(shù)。LAST:按最后一次關(guān)閉瀏覽窗口的方式打開瀏覽窗口。FOR<邏輯型表達式>:指定在瀏覽窗口中顯示的記錄所要求滿足的條件。說明:1、BROWSE命令可以帶有很多任選項,命令格式中只介紹了BROWSE命令的最基本的任選項。

2、在<字段名表>中,除了可以使用表所定義的字段以外,還可以使用計算字段。計算字段:就是由表中的字段組合成的合法的VFP的表達式。注意:計算字段的名稱不能與當前表中的字段名同名,長度不能超過10個字符。計算字段是只讀的,它的值隨著組成計算字段的表中的字段值的變化而變化。計算字段的格式為:<計算字段名>=<表達式>BROWSEFIELDSNAME_BIRTH=姓名+":"+性別+":"+DTOC(出生日期)+"出生"當執(zhí)行上述命令后屏幕顯示結(jié)果3、表運算替代命令格式:REPLACE<字段名1>[ADDITIVE][,<字段名2>WITH<表達式2>[ADDITIVE]…][<范圍>][FOR<條件>][WHILE<條件>]

功能:不進入全屏幕編輯方式,根據(jù)命令中指定的條件和范圍,用表達式的值去更新指定字段的內(nèi)容。參數(shù)描述:<字段名1>:指定要替換值的字段。WITH<表達式1>:指定用來進行替換的表達式或值。<范圍>:指定進行替換時的記錄范圍。FOR<條件>:指定要進行替換字段值的記錄應(yīng)滿足的條件。WHILE<條件>:當記錄的條件不滿足時結(jié)束替換。用以按條件中的字段建立了索引的表。說明:WITH后面的表達式的類型必須與WITH前面的字段類型一致。4.4.2刪除表記錄1、邏輯刪除(為記錄做上刪除標記)格式:DELETE[<范圍>][FOR<條件>][WHILE<條件>]功能:對當前表文件中指定的記錄做刪除標記。GO7DELETEGO4DELETENEXT3LIST2、物理刪除(清除帶有刪除標記的記錄)格式:PACK[DBF][MEMO]功能:省略選擇項,該命令將從當前表中刪除所有帶刪除標記的記錄。選擇DBF,表示僅清除邏輯刪除的記錄而不壓縮備注文件,選擇MEMO表示僅壓縮備注文件中無用的空間而不清除被邏輯刪除的記錄。不帶任何選擇項時,PACK命令既清除邏輯刪除的記錄,又壓縮備注文件。說明:用PACK命令刪除的記錄是不可被恢復(fù)的。所以在使用PACK命令前一定要檢查刪除標記是否加的正確。PACKLIST3、恢復(fù)帶刪除標記的記錄格式:RECALL[<范圍>][FOR<條件>][WHILE<條件>]功能:恢復(fù)當前表中帶刪除標記的記錄,即去掉刪除標記“*”號。當省略所有的選項時,僅恢復(fù)當前記錄。RECALLALLBROW4、清除所有記錄格式:ZAP功能:從當前表中清除全部記錄,僅保留表的結(jié)構(gòu)。ZAP命令與DELETEALL和PACK兩條命令執(zhí)行的結(jié)果相同,區(qū)別在于ZAP執(zhí)行的速度更快,當表中的記錄很多時尤為明顯。4.5表的排序、索引和查詢4.5.1表的排序格式:SORTTO<表文件名>ON<字段名1>[/A|/D][/C][,<字段名2>[/A|/D][/C]...][ASCENDING|DESCENDING][<范圍>][FOR<邏輯表達式>][WHILE<邏輯表達式>][FIELDS<字段名列表> |FIELDSLIKE<框架>|FIELDSEXCEPT<框架>]功能:對當前選定的表排序,并將排序后的記錄輸出到新表中。參數(shù)描述:<表文件名>:指定經(jīng)過排序后所生成的新表的表文件名。ON<字段名1>:在當前選定的、要排序的表中指定關(guān)鍵字段,字段的內(nèi)容和數(shù)據(jù)類型決定了記錄在新表中的順序。[/A|/D][/C]:指定排序順序(升序或降序)。/A指定為按升序排序,/D指定按降序排序。如果在字符型字段名后面包含/C,則忽略大小寫??梢园?C選項與/A或/D選項組合起來。[ASCENDING]:將所有不帶/D的字段指定為升序排列。[DESCENDING]:將所有不帶/A的字段指定為降序排列。如果省略ASCENDING和DESCENDING參數(shù),則排序默認為升序。[<范圍>]:指定需要排序記錄的范圍。默認范圍為ALL。[FOR<邏輯表達式>]:在當前表中指定排序中只包含邏輯條件為“真”的記錄。[WHILE<邏輯表達式>]:指定一個條件,在當前表中只要<邏輯表達式>的計算值為“真”,則依據(jù)此條件,排序中包含這條記錄。[FIELDS<字段名列表>]:指定用SORT命令排序時所創(chuàng)建的新表中要包含的原表中的字段。如果省略FIELDS子句,新表中將包含原表中的所有字段。[FIELDSLIKE<框架>]:在新表中包含那些與字段梗概框架相匹配的原表字段。[FIELDSEXCEPT<框架>]:在新表中包含那些不與字段梗概框架相匹配的原表字段。4.5.2表的索引索引文件有二種,單索引文件和復(fù)合索引文件,而復(fù)合索引文件又可分為結(jié)構(gòu)復(fù)合索引文件和非結(jié)構(gòu)復(fù)合索引文件兩種。VFP對結(jié)構(gòu)復(fù)合索引文件提供了四種類型:主索引、候選索引、唯一索引和普通索引。主索引是指關(guān)鍵字段或索引表達式中不允許出現(xiàn)重復(fù)值的索引,主要用于主表或被引用的表,用來在一個永久關(guān)系中建立參照完整性。一個表而言,只能創(chuàng)建一個主索引。

候選索引是可以作主關(guān)鍵字的索引,因為它不包含Null值或重復(fù)值。在數(shù)據(jù)表和自由表中均可以為每個表建立多個候選索引。唯一索引不允許兩個索引具有相同的索引值,這種要求與主索引相同。為了保持與早期版本的兼容性,可以建立一個唯一索引,以指定字段的首次出現(xiàn)值為基礎(chǔ),選定一組記錄,并對記錄進行排序。普通索引可以用來對記錄排序和搜索記錄,它不強迫記錄中的數(shù)據(jù)具有唯一性。在一個表中可以有多個普通索引。選擇合適的索引類型可以以下列準則作為依據(jù):

1、如果需要排序記錄,以便顯示、查詢或打印,可以使用普通索引、候選索引或主索引。2、如果要在字段中控制重復(fù)值的輸入并對記錄排序,則對數(shù)據(jù)表可以使用主索引或候選索引,對自由表可以使用候選索引。3、如果準備設(shè)置關(guān)系,則可以依據(jù)表在關(guān)系中所起的作用來分別使用普通索引、主索引或候選索引。建立索引1、單索引文件的建立

格式:INDEXON<索引關(guān)鍵表達式>TO<索引文件名>[UNIQUE]FOR<條件>[ADDITIVE]功能:對當前表中滿足條件的記錄,按<索引表達式>的值建立一個索引文件,并打開此索引文件,其缺省的文件擴展名為.IDX。參數(shù)描述:<索引關(guān)鍵表達式>:用以指定記錄重新排序的字段或表達式。<索引關(guān)鍵表達式>可以是字段名,也可以是含有當前表中字段的合法表達式。表達式值的數(shù)據(jù)類型可以是字符型、數(shù)值型、日期型、邏輯型。若在表達式中包含有幾種類型的字段名,常常需要使用類型轉(zhuǎn)換函數(shù)將其轉(zhuǎn)換為相同類型的數(shù)據(jù)。

[UNIQUE]:指定UNIPUE子句時,若有多條記錄的<索引關(guān)鍵表達式>的值相同時,則只把第一次遇到的記錄進行排序加入到索引文件中;省略該子句時,則把所有遇到的記錄值都加入到索引文件中。[ADDITIVE]:若省略ADDITIVE子句,當為一個表建立新的索引文件時,除結(jié)構(gòu)復(fù)合索引文件外,所有其它打開的索引文件都將會被關(guān)閉;若選擇此選擇項,則已打開的索引文件仍然保持打開狀態(tài)。FOR<條件>:指定一個條件,只顯示和訪問滿足這個條件的表達式<條件>的記錄,索引文件只為那些滿足條件的表達式的記錄創(chuàng)建索引關(guān)鍵字。USESTUDENTINDEXON學號TOXHSYLIST當執(zhí)行上述命令后屏幕顯示結(jié)果2、復(fù)合索引文件的建立格式:INDEXON<索引關(guān)鍵表達式>TAG<標記名>[OF<復(fù)合索引文件名>][FOR<條件>] [ASCENDING|DESCENDING][UNIQUE] [ADDITIVE]功能:建立和修改復(fù)合索引文件,并打開此索引文件,其缺省的文件擴展名為.CDX。參數(shù)描述:<索引關(guān)鍵表達式>、[FOR<條件>]、[ADDITIVE]:與上相同。TAG<標記名>[OF<復(fù)合索引文件名>]:創(chuàng)建一個復(fù)合索引文件。在TAG<標記名>參數(shù)中不包含可選的[OF<復(fù)合索引文件名>]子句時,便可以創(chuàng)建結(jié)構(gòu)復(fù)合索引文件。4.5.3表的查詢1、檢索命令find格式:FIND<字符型常量>/<數(shù)值型常量>2、檢索命令seek格式:SEEK<表達式>[ORDER<索引號>/<單索引文件名>/[TAG]<索引標記>[OF<復(fù)合索引文件名>][ASCENDING/DESCENDING]]3、LOCATE命令

格式:LOCATE[<范圍>][FOR<條件>][WHILE<條件>]功能:按順序搜索表,從而找到滿足指定邏輯表達式的第一個記錄。參數(shù)描述:[<范圍>]:指定要定位的記錄范圍。只有在范圍內(nèi)的記錄才被定位。LOCATE命令的默認范圍是ALL。[FOR<條件>]:LOCATE命令按順序搜索當前表以找到滿足邏輯表達式的第一個記錄。若邏輯表達式是可優(yōu)化的表達式,則Rushmore優(yōu)化由LOCATEFOR創(chuàng)建的查詢。為了獲得最佳執(zhí)行效果,可在FOR子句中使用可優(yōu)化的表達式。[WHILE<條件>]:指定一個條件,只要邏輯表達式計算值為真,就繼續(xù)查找記錄。說明:(1)被搜索的表不必有索引。(2)若LOCATE發(fā)現(xiàn)一個滿足條件的記錄,就將記錄指針定位在該記錄上。可以使用RECNO()返回該記錄的記錄號,同時FOUND()函數(shù)返回“真”,EOF()函數(shù)返回“假”。如果沒有找到,則將記錄指針指向范圍的最后一個記錄,同時將FOUND()函數(shù)值置為“假”,屏幕上顯示“已到定位范圍末尾”。(3)如果執(zhí)行SETEXACTOFF命令后,再用LOCATE命令查找字符型數(shù)據(jù)時,不要求字符型數(shù)據(jù)精確匹配。(4)該命令只能查找第一條滿足條件的記錄。若表中有多條滿足條件的記錄,當已經(jīng)找到一條滿足條件的記錄后,還想繼續(xù)查找后面滿足條件的記錄時,可以使用CONTINUE命令繼續(xù)向后查找滿足條件的記錄。4、CONTINUE命令

功能:它使LOCATE命令從當前記錄開始繼續(xù)查找下一條滿足條件的記錄。說明:CONTINUE是用在LOCATE之后繼續(xù)查找滿足同一條件的記錄的命令,它繼續(xù)LOCATE的操作。CONTINUE命令移動記錄指針到下一個與<條件>邏輯表達式相匹配的記錄上。CONTINUE命令能被重復(fù)執(zhí)行直到記錄指針到表的結(jié)尾或到指定范圍的尾部。如果CONTINUE命令成功地查找到了一條記錄,RECNO()函數(shù)將返回該記錄的記錄號,并且FOUND()函數(shù)返回邏輯“真”值和EOF()返回邏輯“假”值。如果CONTINUE命令沒有查找到滿足條件的記錄,RECNO()函數(shù)返回在tableplusone中的記錄數(shù),FOUND()函數(shù)返回邏輯“假”值,并且EOF()函數(shù)返回邏輯“真”值。4.6表的計算和匯總1、計算命令COUNT格式:COUNT[<范圍>][FOR<條件>][WHILE<條件>][TO<內(nèi)存變量>]功能:統(tǒng)計當前表中指定范圍內(nèi)滿足條件的記錄個數(shù),并存于<內(nèi)存變量>中。參數(shù)描述:<范圍>、<條件>子句的用法和前面所有命令的用法是一樣的。若使用<范圍>、<條件>子句,可統(tǒng)計出指定<范圍>內(nèi)滿足<條件>的記錄個數(shù),否則統(tǒng)計表中的記錄的總數(shù)。對COUNT命令,默認的范圍是ALL。若使用任選項TO<內(nèi)存變量>可選項,可將統(tǒng)計的結(jié)果送到內(nèi)存變量中保存,否則將統(tǒng)計結(jié)果顯示在屏幕上(SETTALKON)。例:USESTUDENTSETEXACTOFF&&置字符串是模糊比較COUNTFOR姓名="李".OR.姓名="王"TORS2、求和命令

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論