Visual FoxPro 数据库及操作课件_第1页
Visual FoxPro 数据库及操作课件_第2页
Visual FoxPro 数据库及操作课件_第3页
Visual FoxPro 数据库及操作课件_第4页
Visual FoxPro 数据库及操作课件_第5页
已阅读5页,还剩145页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1

VisualFoxPro資料庫及操作2第一節VisualFoxPro資料庫及其建立

資料庫是表的集合。從VisualFoxPro3.0開始引入了真正意義上的資料庫概念。把一個二維表定義為表,把若干個關係比較固定的表集中起來放在一個資料庫中管理,在表間建立關係,設置屬性和數據有效性規則使相關聯的表協同工作。資料庫檔具有.dbc擴展名,其中可以包含一個或多個表、關係、視圖等。一個VisualFoxPro表或.dbf檔,能夠存在以下兩種狀態之一:與資料庫相關聯的資料庫表,與資料庫不關聯的自由表。二者的絕大多數操作相同且可以相互轉換。相比之下,資料庫表的優點要多一些。當一個表是資料庫的一部分時,它就可以具有以下內容:●長表名和表中的長字段名●表中字段的標題和注釋●默認值、輸入掩碼和表中字段格式化●表字段的默認控件類3●字段級規則和記錄級規則●支持參照完整性的主關鍵字索引和表間關係●INSERT、UPDATE或DELETE事件的觸發器一、建立資料庫1.命令方式【格式】CREATEDATABASE[<資料庫檔案名>|?]【功能】建立一個新的擴展名為.DBC的資料庫檔並打開此資料庫。【說明】<資料庫檔案名>指定生成的資料庫檔,若省略擴展名,則默認為.DBC,同時也自動建立相關聯的資料庫備註檔擴展名為.DCT,關聯的索引檔擴展名為.DCX。如果未指定資料庫檔案名或用“?”代替資料庫名,VisualFoxPro系統會彈出創建對話框,以便用戶選擇資料庫建立的路徑和輸入資料庫名。保存後該資料庫檔被建立,並且自動以獨佔方式打開該資料庫。4

2.菜單方式用菜單方式建立資料庫的具體步驟如下:(1)選擇【檔】∣【新建】出現新建對話框。(2)選擇“資料庫”單選按鈕,再單擊“新建檔”按鈕,出現“創建”對話框。(3)在“創建”對話框中輸入檔案名。選擇“保存”按鈕,系統自動打開資料庫檔,並且將資料庫設計器也自動打開。3.利用專案管理器建立資料庫打開已建立的專案檔,出現專案管理器窗口。在“數據”選項卡中選擇“資料庫”,然後單擊“新建資料庫”按鈕,再通過“創建”對話框提示用戶輸入資料庫名,即擴展名為.DBC的檔案名,單擊“保存”,出現資料庫設計器。

51.打開資料庫1).命令方式

【格式】OPENDATABASE[<資料庫檔案名>|?][EXCLUSIVE|SHARED]

【功能】將磁片上一個擴展名為.DBC的指定資料庫文件打開。

【說明】打開一個資料庫檔,同名的.DCT相關的數據庫備份檔與.DCX相關的索引檔也一起被打開。資料庫打開後,在常用工具欄中可以看見當前正在使用的資料庫名,同時當資料庫設計器為當前窗口時,系統菜單上出現【資料庫】菜單項。<資料庫檔案名>:指定要打開的資料庫名。如果用戶省略<資料庫檔案名>或用“?”代替資料庫名。系統會顯示打開對話框。二、資料庫的打開與關閉6

在資料庫被打開的情況下,它所包含的所有表可以使用。但是,表並沒有被真正打開,用戶要打開它,仍要用USE命令。

2).菜單方式

(1)選擇【檔】|【打開】,出現打開對話框。

(2)選擇資料庫檔所在的檔夾,將檔類型選擇為“資料庫(.dbc)”。(3)選擇所要打開的資料庫檔案名,單擊“確定”按鈕。3).利用專案管理器打開資料庫打開已建立的專案檔,出現專案管理器窗口,選擇“數據”標籤,選擇要打開的資料庫名,然後單擊“打開”按鈕。

7資料庫檔操作完成後,或暫時不用時,必須將其關閉,保存在外部存貯器中以確保數據的安全性。關閉資料庫檔有以下幾種方式:1.命令方式【格式】CLOSE[ALL|DATABASE]【功能】關閉當前打開的資料庫。【說明】ALL用於關閉所有對象。如數據庫、表、索引、專案管理器等。DATABASE關閉當前資料庫和數據庫表;如果當前沒有打開的資料庫,則關閉所有打開的自由表、所有工作區內所有索引和格式檔。

三、資料庫的關閉82.利用專案管理器關閉資料庫

打開已建立的專案檔,出現專案管理器窗口,選擇“數據”標籤,選擇“資料庫”下麵需要關閉的資料庫名,然後單擊“關閉”按鈕。在常用工具欄上的當前資料庫下拉列表框中該資料庫名消失,同時在專案管理器中“關閉”按鈕變成“打開”按鈕。四、資料庫的修改在VFP中,修改資料庫實際是打開資料庫設計器,用戶可以在資料庫設計器中完成各種數據對象的建立、修改、刪除等操作。9資料庫設計器打開的方法:(1)從專案管理器中打開資料庫設計器。(2)從“打開”對話框中打開資料庫設計器。(3)用命令方式打開資料庫設計器。命令格式:

MODIFYDATABASE[資料庫檔案名|?][NOWAIT][NOEDIT]

說明:(1)資料庫檔案名,是指定要修改的資料庫檔案名,選用“?”,則彈出“打開”對話框,選定要打開的資料庫檔。(2)NOWAIT選項:只用於程式中,交互方式下無效。(3)NOEDIT:指打開資料庫設計器,但禁止對數據庫進行修

改。

101.命令方式

【格式】DELETEDATABASE<資料庫檔案名|?>

【功能】從磁片上刪除一個擴展名為.DBC的資料庫檔。

【說明】被刪除的資料庫不能處於打開狀態。被刪除的資料庫中的表成為自由表。資料庫檔案名可以包括資料庫的路徑和數據庫名字。如果用“?”代替資料庫檔案名,將顯示打開對話框,用戶從打開對話框中選擇要從磁片上刪除的資料庫的名字。2.使用專案管理器打開已建立的專案檔,出現專案管理器窗口,單擊“數據”標籤,選擇要刪除的“資料庫”,然後單擊“移去”按鈕。若選擇“移去”僅將資料庫從專案中移去,被刪除的資料庫中的表成為自由表。若選擇“刪除”將從磁片上刪除資料庫。五、刪除資料庫11前面我們已經知道表有二種,一種是資料庫表,另一種是自由表。如果建表時資料庫是打開的,則建立的表為當前資料庫表,否則,建立自由表。無論建立那種表,其方法都相同。一個表由表結構和表記錄兩部分組成。表結構描述了數據存放形式以及存貯的順序,確定了表的字段,就完成了對表結構的定義;表記錄是表所要保存的數據主體,數據由記錄組成,字段是構成記錄的基本單元。建立一個表檔首先第一步就是建立表結構,然後再輸入表記錄。建立表結構的方法有很多,在這裏主要講述三種方法:命令方式、菜單方式和使用專案管理器的方式。第二節資料庫表的建立和操作12一、資料庫表的建立

1.命令方式【格式】CREATE[<表檔案名>|?]【功能】建立一個新的、擴展名為.DBF的表檔。【說明】<表檔案名>指定生成的表檔案名,若缺省擴展名,則默認為.DBF。如果使用“?”或末指定表檔案名,VisualFoxPro系統會彈出創建對話框,以便用戶輸入表名。13現在用命令方式來建立stud.dbf表。表內容如下:

學號姓名性別班級名系別代號地址出生日期是否團員照片備註011110李建國男計012101湖北武漢09/28/84T

011103李寧女電013402江西九江05/06/85F

011202趙娜女英011203廣西南寧02/21/84F

021204孫亮男電013402湖南長沙09/08/86T

011111趙琳女計012101江蘇南京11/18/85T

021405羅宇波男英011203江蘇南通12/12/85F

14用命令方式建立表的具體步驟為:(1)如果沒有建立STUDENT資料庫,則先建立資料庫再打開它。如果創建自由表,該步可略去。(2)在命令窗口中輸入CREATESTUD回車,系統打開“表設計器”對話框,如圖3-1和圖3-2所示。(3)在“字段名”文本框中輸入第一個字段名:“學號”,在“類型”下拉列表框中,選擇字段的類型為字元型,在寬度輸入框中輸入10或单击右边的微调按钮至10。(4)将输入光标定位在第二个字段的字段名上,用同样的方法依次输入各个字段的字段名、类型、宽度和小数位数。(5)將所有字段的參數確定好之後,單擊“確定”或按快捷鍵CTRL+W存盤。系統會打開提示窗口,詢問用戶是否立即輸入記錄,選擇“是”立即開始輸入記錄,選擇“否”不輸入記錄,游標返回命令窗口,只建立表結構。15圖3-1自由表設計器圖3-2資料庫表設計器16表設計器對話框中包含“字段”、“索引”、“表”三個選項卡。1)“字段”選項卡:適用於建立表結構,確定表中每個字段的字段名、字段類型、字段寬度和小數位數等。●

字段名:是某字段的名字。在表中必須是唯一的,字段名必須以漢字、字母和下劃線開頭,由漢字、字母、數字和下劃線組成,對於資料庫表支持長字段名,字段名最多為128個字元,自由表不支持長字段名,字段名最多為10個字元。當資料庫表轉化為自由表時截去超長部分的字元。字段名不能使用系統的保留字。●

字段類型:表示該字段中存放數據的類型。一個字段即二維表中的一列,其中的數據應具有共同的屬性。若存放的是一些符號,不進行數值運算,則定義為字元型;若需要進行數值運算,則根據數值表示的實際意義,選擇數值型、貨幣型、浮點型、雙精度型、整型中的一種。對描述日期的字段,可根據需要定義為日期型或日期時間型。對取值只有兩種情況,為“真”或為“假”的數據定義為邏輯型。17若存儲的字元超過254,為節省存儲空間可定義為備註型。若要保存圖片或OLE對象,可定義為通用型。備註型和通用型字段的資訊都沒有直接存放在表檔中,而是存放在一個與表檔同名的.FPT檔中。●

字段寬度:表示該字段所允許存放數據的最大寬度。由數據的最大寬度決定。過大浪費存儲空間,過小數據溢出。字元型字段的最大寬度254個字元,數值型字段和浮點型字段的寬度為20位,邏輯型字段的寬度固定為1,日期型字段的寬度固定為8,通用型字段和備註型字段的寬度固定為4。●

小數位數:只對數值型字段和浮點型字元等數值類型有效,允許最大寬度20。在計算數值型字段和浮點型字段的寬度時,小數點本身也算作一個字元。數值型字段的小數位數由數據的精度決定位數。

若建立的是資料庫表,則下麵還有顯示、字段有效性等框。18①字段的顯示屬性●

格式:控制字段在流覽窗口、表單、報表等顯示時的樣式。格式字元及功能如表3-1所示。字元功

能字元功

能A字母字元,不允許空格和標點符號R顯示文本框的格式掩碼,但不保存到字段中D使用當前的SETDATA格式T刪除前導空格和結尾空格E英國日期格式!字母字元轉換成大寫K游標移至該字段選擇所有內容^用科學計數法表示數值數據L數值字段顯示前導0$顯示貨幣符號表3-1字段的格式字元19表3-2字段的顯示掩碼字元●

標題:若表結構中字段名用的是英文,則可以在標題中輸入漢字,這樣顯示該字段值時就比較直觀了。沒有設置標題,則將表結構中的字段名作為字段的標題。字元功

能字元功

能X任意字元*左側顯示*9數字字元和+-號.指定小數點位置#數字字元、+-號和空格,用逗號分隔整數部分$指定位置顯示貨幣符號$$貨幣符號與數字不分開顯示●

輸入掩碼:控制輸入該字段的數據的格式。掩碼字元及功能如表3-2所示。

20②字段有效性●

規則:限制該字段的數據的有效範圍。在規則中輸入:性別="男".OR.性別="女"。這樣當給“性別”字段輸入記錄值時就只能輸入“男”或“女”。●

資訊:當向設置了規則的字段輸入不符合規則的數據時,就會將所設置的資訊顯示出。●

默認值:當往表中添加記錄時,系統向該字段預置的值。在“性別”字段中輸入默認值為“男”。輸入記錄時只有女生才需要改變默認值,可以減少輸入。字段有效性的設置可在圖3-2中進行。2)表選項卡:字段選項卡上主要介紹的是字段屬性,它控制了字段值的輸入,表選項卡則對表的記錄屬性進行描述,控制記錄數據。在這裏主要介紹記錄有效性和觸發器。如圖3-3所示。

21圖3-3記錄有效性和觸發器22①

記錄有效性●規則:指定記錄的有效條件,滿足該條件,數據才能輸入到表中,它確定的是該記錄各字段值之間的總體數據關係是否有錯。●資訊:當記錄的數據不符合規則時,由系統顯示給用戶的提示資訊。②觸發器當對記錄進行操作時,若設置了觸發器,則對觸發器設置的條件運算式進行驗證,若其值為真.T.,則允許進行相關操作,否則,則拒絕操作。●插入觸發器:當向表中插入或追加記錄時,判斷其運算式的值,為“真”允許插入或追加,為“假”不允許插入或追加。●更新觸發器:當要修改記錄時,判斷其運算式的值,為“真”允許修改,為“假”不允許修改。

23●刪除觸發器:當要刪除表中記錄時,判斷其運算式的值,為“真”允許刪除,為“假”不允許刪除。以上三類觸發器也可以用相應的命令實現:CREATETRIGGERON表名FORINSERTAS觸發條件運算式CREATETRIGGERON表名FORUPDATEAS觸發條件運算式CREATETRIGGERON表名FORDELETEAS觸發條件運算式

2.菜單方式選擇【檔】|【新建】打開新建對話框,選擇“表”,單擊“新建檔”出現創建對話框,確定需要建立表的路徑和表名,按“保存”按鈕後,出現“表設計器”對話框。以下步驟同命令方式。24

3.用項目管理器新建表打開已建立的專案檔,出現專案管理器窗口,選擇“數據”選項卡中的“資料庫”下的表,然後單擊“新建”按鈕。出現新建表對話框,選擇“新建表”出現創建對話框,確定需要建立表的路徑和表名,按“保存”按鈕後,出現圖3-1所示的“表設計器”對話框。以下步驟同命令方式。

二、資料庫表記錄的輸入

如果在剛建好表結構時,在系統提示是否立即輸入記錄的對話框中選擇“是”可直接進入輸入記錄窗口。如果選擇了“否”,再想輸入表記錄就要以追加方式輸入記錄。輸入表記錄的方法又分為命令方式和菜單方式兩種方法。

1.命令方式

【格式】APPEND[BLANK]

【功能】在當前已打開表的末尾追加一條或多條記錄。25

【說明】BLANK:表示在表末尾追加一條空記錄,並自動返回命令窗口,此時系統並不彈出編輯窗口。【例4-1】在學生表末尾追加記錄。

USESTUD

&&打開表

APPE

&&或EDIT

注意:輸入邏輯值時只輸入T或F,定界符系統自動生成輸入日期值時只輸入數碼,分隔符號系統自動生成輸入備註值時,游標位於MEMO上時,按CTRL+PgDn進入編輯窗口,完成後按CTRL+W返回下一個字段繼續輸入。2.菜單方式(1)首先打開表STUD.DBF。(2)選擇【顯示】|【流覽】命令。(3)選擇【表】|【追加新記錄】命令,用戶可以輸入追加記錄的各個字段。261.表的打開表檔建好後,以檔的形式保存在磁片上,在進行各種操作之前,首先必須打開表。打開表的過程實質上就是將表從磁片調入記憶體,這樣就可以對表中的數據進行各種操作。系統在任何時刻都只能對內存中的表進行訪問。(1)命令方式

【格式】USE[[<盤符>][<路徑>]<[資料庫名!]表檔名|?>

【功能】打開指定磁片的指定路徑下的表和相關的索引文件。

【說明】<盤符>和<路徑>:指定表檔所在的驅動器及路徑,若省略盤符和路徑參數,則打開當前盤、當前路徑下的表檔。三、表的打開與關閉27[資料庫名!]表檔案名:指定打開指定資料庫中的表檔。若末指定資料庫名,則在當前資料庫中查找,沒有則在自由表中查找。兩者同名,則打開資料庫中的表。如果表檔中含有通用型、備註型字段,同名的.FPT檔也同時打開。若不指定表檔案名而使用“?”,系統會彈出“使用”對話框,以便用戶指定打開表的檔案名。【例4-2】打開在E盤VFP子目錄中STUD.DBF表。

USEE:\VFP\STUD(2)用項目管理器打開表在專案管理器中選中需要打開的表,選擇“流覽”或“修改”都能直接打開表且進行流覽或修改,關閉流覽或修改窗口後,該表仍處於打開狀態。282.表的關閉表檔操作完成後,或暫時不用時,必須將其關閉,保存到外存中以確保數據的安全性。關閉表就是將表檔從記憶體中調出,保存在磁片上。關閉表檔有以下幾種方式:(1)打開另一個表檔如果工作區中已打開有表檔,打開另一表檔時,系統將自動將先前打開的表檔關閉。(2)使用不帶任何選項的USE命令

【格式】USE

【功能】關閉當前已打開的表檔。(3)使用CLEAR命令

【格式】CLEARALL

【功能】關閉所有工作區中已打開的表檔、索引文件、格式檔及備註檔等,同時釋放所有的記憶體變數。並選擇工作區1為當前工作區。29(4)使用CLOSE命令

【格式1】CLOSEALL

【功能】關閉各種類型檔,並選擇工作區1為當前工作區。

【格式2】CLOSEDATABASES

【功能】關閉所有已打開的資料庫檔、表檔、索引文件、格式檔及備註檔等,並選擇工作區1為當前工作區。(5)退出VisualFoxPro系統

【格式1】

QUIT

【功能】退出VisualFoxPro系統,並關閉所有打開的檔,返回操作系統。(6)在數據工作窗口中關閉在數據工作窗口中選擇要關閉的表檔,然後選擇“關閉”按鈕,系統將關閉所選擇的表檔。301.刪除自由表【格式】DELETEFILE[表檔案名|?]【功能】將指定的表檔從磁片上刪除。【說明】如果刪除的表檔存在有與之相關的.fpt備註文件和(.cdx或.idx)索引檔,則同時刪除這些檔。刪除一個表檔,應保證該表檔是處於關閉狀態的。要刪除的表檔如果不是在默認的路徑下,則檔案名應指明路徑。表檔名不能包含通配符。若不指定檔案名或使用“?”,系統會彈出“刪除”對話框,選擇要刪除的表檔路徑、檔類型及檔案名後,單擊“刪除”按鈕。四、表的刪除312.刪除資料庫表先將資料庫表從資料庫中移去,然後再用刪除自由表的方法進行刪除。移去資料庫表的命令是:

【格式】REMOVETABLE[表檔案名|?][DELETE][RECYCLE]

【功能】從當前資料庫中移去一個表。

【說明】表檔案名:準備從資料庫中移去的表檔案名。

選擇?將出現移去對話框,從中選擇一個要從當前資料庫中移去的表。選擇DELETE在移去資料庫表的同時,從磁片上刪除。選擇RECYCLE在移去資料庫表的同時,不會立即從磁片上刪除,而是放入回收站中。323.在專案管理器中刪除表在專案管理器中選中需要刪除的表,選擇“移去”按鈕或選擇主菜單中【專案】|【移去檔】命令,出現一個選擇對話框,若選擇“移去”按鈕,則將表檔移出項目檔,若選擇“刪除”按鈕,則將表檔從磁片上刪除。五、表的顯示1.表結構的顯示在表的使用過程,要經常查看表的結構和記錄,以隨時瞭解表的變化情況。【格式】LIST|DISPLAYSTRUCTURE[TOPRINT[PROMPT]|TO[FILE][<檔案名>]]

【功能】顯示或列印當前表檔的結構。

33

在執行以上命令時,如果系統中沒有已打開的表檔,系統提示輸入檔案名。用LIST命令,所有資訊連續顯示,資訊較多時,螢幕停止在最後一屏;用DISPLAY命令,如果資訊較多則分屏顯示,敲任意鍵繼續顯示下一屏。【例4-3】顯示表STUD.DBF的結構。

USESTUDLISTSTRUCTURE

需要指出的是,最後一行顯示出的記錄位元組數是所有字段寬度之和再加1。這額外的一個位元組是用來存放記錄的刪除標記(*)的。2.表記錄的顯示1).命令方式

【格式】LIST|DISPLAY[FIELDS<字段名表>][<範圍>][FOR<條件運算式>][WHILE<條件運算式>][OFF][NOCONSOLE][TOPRINTER[PROMPT]|TOFILE<檔案名>]

【功能】將當前表檔的記錄按照指定的選項進行顯示。34

【說明】DISPLAY命令與LIST命令的功能相似,當表檔的數據記錄較多時,用DISPLAY命令較為方便。還有一點不同之處就是,如果同時缺省<範圍>和<條件>子句,DISPLAY命令只顯示當前的一條記錄,而LIST命令則是取默認值ALL而顯示全部記錄。FIELDS<字段名表>:用來指定顯示的字段。<範圍>:用來指定顯示哪些記錄。“範圍”有以下四種表示方法:●

ALL:所有記錄。●

NEXTN:從當前記錄開始,後面的N條記錄(包括當前記錄)●

RECORDN:第N條記錄。●

REST:當前記錄後的全部記錄(包括當前記錄)。

35FOR<條件運算式>:指定對表檔中指定範圍內滿足條件的記錄進行操作。WHILE<條件運算式>:也是指定對表檔中指定範圍內滿足條件的記錄進行操作,但是,當第一次遇到不滿足條件的記錄時,停止繼續往後搜索。WHILE<條件運算式>若與FOR<條件運算式>同時使用,則WHILE項優先;若兩者都不選用,則顯示<範圍>中指定的全部記錄。OFF:表示不顯示記錄號;若不選此項,則在各記錄前顯示記錄號。

【例4-4】顯示表STUD.DBF的全部記錄。

USESTUDLIST

36【例4-5】顯示男生的記錄。

USESTUDDISPLAYFOR性別=’男’FIELDS學號,姓;名,性別,班級名,系別代號【例4-6】顯示表中所有記錄的學號、姓名和性別。

USESTUD

LISTFIELDS學號,姓名,性別

【例4-7】顯示表中1985年出生的同學的學號、姓名、性別及出生日期。

USESTUDLISTFIELDS學號,姓名,性別,出生日期;FORYEAR(出生日期)=1985

372).菜單方式(1)打開表。(2)選擇【顯示】|【流覽】命令,系統彈出記錄流覽窗口,顯示當前表中的記錄。這時還可以選擇【顯示】|【流覽】或【編輯】來改變顯示方式。3).利用專案管理器

在專案管理器中,選擇需要顯示的表檔,單擊“流覽”按鈕或選擇主菜單中【專案】|【流覽】命令,系統彈出記錄流覽窗口,顯示當前表中的記錄。38六、表的修改1.表結構的修改表結構的改變有時會引起表記錄的變化,所以在一般情況下不輕易進行修改。但在確實需要時也可以進行修改。無論進行何種修改,使用的命令都是一個

1).命令方式【格式】MODIFYSTRUCTURE【功能】將當前已打開的表檔的表設計器打開進行修改。【說明】要修改表結構必須要先打開需要修改結構的表檔。如果當前工作區中沒有已打開的資料庫,執行此命令時系統會彈出“打開”對話框,以便用戶選擇需要修改表結構的檔案名及路徑等資訊,用戶選擇完成後,系統將彈出表設計器對話框。主要有增加、修改、刪除和移動幾種操作。39(1)增加字段:將游標移至需插入位置上的字段上,選擇“插入”按鈕或按快捷鍵ALT+I,在該位置上出現一個新字段,原位置以下的各字段均下移一行。確定增加字段的字段名、字段類型、字段寬度等參數,選擇“確定”按鈕即可。

(2)修改字段:將游標定位在需要修改處,編輯修改,完成後選擇“確定”按鈕即可。(3)刪除字段:將游標移至需刪除的字段上,選擇“刪除”按鈕或按快捷鍵ALT+D,在該位置上的字段被刪除,原位置以下各字段均上移一行。選擇“確定”按鈕。(4)移動字段:將游標移至需移動位置的字段上,用滑鼠拖動字段名前的“”按鈕,出現一個虛框,當虛框出現在目標位置上時鬆開滑鼠,移動完成,選擇“確定”按鈕即可。無論是何種修改,選擇“確定”按鈕後,由於表結構的變化要影響表記錄數據,所以都要出現對話框由用戶確認修改是否有效。40使用MODIFYSTRUCTURE命令要注意以下幾點:①在MODIFYSTRUCTURE命令的執行期間,如果強行退出,有可能丟失數據。②不能同時修改字段名和它的類型,否則系統將不能正確地送回原來的數據而造成數據的丟失。③如果在修改字段名的同時插入或刪除了字段,會引起字段位置發生變化,有可能造成數據丟失。但是,在插入或刪除字段的同時卻可以修改字段的寬度或字段的類型,MODIFYSTRUCTURE將根據字段名正確地從備份檔中傳送數據。④如果修改表結構完成後出現了數據丟失現象,或者對其不滿意,可利用備份檔將表恢復到修改前的狀態,方法是先將新的表檔刪除掉,再將備份檔的擴展名.BAK改為表檔擴展名.DBF,將備註備份檔擴展名.TBK改為備註檔的擴展名.FPT。

412).利用資料庫設計器

在資料庫設計器中選中需要修改的表檔,再選擇主菜單中【資料庫】|【修改】命令,具體的修改方法同命令方式。3).利用專案管理器

在專案管理器中選中需要修改的表檔,再選擇主菜單中【專案】|【修改】命令或單擊專案管理器中的“修改”按鈕。2.修改記錄

在表的使用維護過程中,有大量的工作是對數據記錄的修改、編輯與更新,通常可以採用編輯修改、流覽修改和替換修改三種方式。42

1).編輯修改

【格式】EDIT/CHANGE[FIELDS<字段名表>][<範圍>][FOR<邏輯運算式1>][WHILE<邏輯運算式2>]

【功能】按照給定條件編輯修改當前打開的表檔記錄。

【說明】[FIELDS<字段名表>]:若選擇此選項,則只列出字段名表中的字段,且顯示順序同字段名表中的順序;若未選擇此選項,將顯示表中的所有字段,顯示順序同表中的字段順序。

[<範圍>]:若未選擇此選項,則EDIT/CHANGE命令的範圍為全部記錄。[FOR<邏輯運算式1>]和[WHILE<邏輯運算式2>]:同前面其他命令所述,在此不再重複敘述。43【例4-8】修改STUD.DBF中計0121班學生的學號、姓名和性別等資訊。

USESTUDEDITFIELDS學號,姓名,性別FOR班級名=”計0121”全部修改完畢,使用

Ctrl+End或

Ctrl+W鍵保存所有修改的結果。

442).流覽修改(1)命令方式

【格式】BROWSE[FIELDS<字段名表>][FOR<邏輯運算式1>]

【功能】顯示當前表的記錄內容,以供編輯修改。

【說明】編輯結束後,按Ctrl+W或Ctrl+End存盤退出BROWSE編輯窗口,或者按Ctrl+Q或Esc鍵放棄存盤退出BROWSE窗口。(2)菜單方式利用菜單方式進行流覽修改的操作步驟如下:①打開表。②選擇【顯示】|【流覽】命令,系統彈出記錄流覽窗口。③在編輯修改窗口中編輯修改數據內容,完成後按Ctrl+W鍵存盤退出Browse窗口。453).替換修改(1)命令方式

【格式】REPLACE<字段名1>WITH<運算式1>[ADDITIVE][,<字段名2>WITH<運算式2>[ADDITIVE]]...[<範圍>][FOR<邏輯運算式1>][WHILE<邏輯運算式2>][NOOPTIMIZE]

【功能】用指定運算式的值替換當前表中滿足條件記錄的指定字段的值。

【說明】該命令適合對當前庫進行成批地、有規律地修改。缺省範圍、條件時,僅替換當前記錄。該命令回車後,數據修改自動完成。適用於程式設計。

ADDITIVE:只對備註型字段修改有效。選擇:表示添加內容,不選擇:表示替換內容。運算式的類型必須與字段類型一致。運算式的值不能超出字段寬度,否則,數據無效。46【例4-9】修改STUD.DBF中的“學號”字段數據,。

USESTUDREPLACE學號WITH”20”+學號ALL(2)菜單方式①打開表檔。選擇【顯示】|【流覽】命令。

②選擇【表】|【替換字段】命令,彈出圖3-4所示的“替換字段”對話框。③單擊字段下拉按鈕選擇要進行替換操作的字段名,在“替換為”顯示欄中輸入替換運算式,再選擇“替換條件”顯示框中的範圍、條件。④單擊“替換”按鈕,系統將自動完成替換操作。

47表3-4替換字段對話框48七、記錄指針的定位記錄號用於標識數據記錄在表檔中的物理順序。記錄指針是一個指示器,它始終指向當前表中正在操作處理的那條記錄,此記錄被稱為當前記錄。如果要對某條記錄進行處理,必須移動記錄指針,使其指向該記錄。在任意時刻指針只能指向唯一的一條記錄。記錄指針定位有絕對定位、相對定位和查詢定位三種。在這裏暫時只講前二種,查詢定位在講到查詢時再詳細介紹。49

1.絕對定位【格式】[GO|GOTO]<[RECORD]<數值運算式1>[IN<數值運算式2>|IN<字元運算式>]【功能】將記錄指針絕對定位到<數值運算式1>指定的記錄上。<數值運算式1>:記錄的物理記錄號。IN<數值運算式2>|IN<字元運算式>:指定操作表所在的工作區;若缺省,則對當前工作區表操作。工作區的概念在後面再詳細介紹。絕對定位與是否打開索引檔沒有關係。

502.相對定位【格式1】SKIP[<數值運算式1>][IN<數值運算式2>|<字符運算式>]【功能】記錄指針從當前記錄向前(或向後)移動若干個記錄。【說明】<數值運算式1>:表示移動的記錄個數。若數值運算式的值為負值,表示向前移動記錄;否則,表示向後移動記錄。如果缺省此項,則表示向後移動1個記錄。如果記錄指針已經移過檔的最後一個記錄,則RECNO()函數返回的值等於檔中的記錄總數加1,EOF()函數返回邏輯真(.T.)值。【格式2】GO|GOTO<|TOP|BOTTOM>【功能】將記錄指針移動到表檔的首記錄或尾記錄。TOP:將記錄指針移動到表檔的首記錄。BOTTOM:將記錄指針動到表檔的最後一條記錄。51相對定位與是否打開索引檔有關。如果打開了索引檔,記錄指針按索引檔中順序移動。否則按表檔中物理順序移動。

【例4-10】絕對定位命令的用法。

USESTUDGOTO2GO3【例4-11】相對定位的用法。

USESTUDSKIP4&&系統主窗口顯示為5

SKIP–3 &&系統主窗口顯示為2

SKIP8&&超出了記錄總數6

gotop&&系統主窗口顯示為152表記錄的刪除也是表維護的一項經常性的工作,因為刪除意味著數據的消失,所以對記錄的刪除操作比較慎重,刪除可分為邏輯刪除和物理刪除兩種操作。邏輯刪除還可以恢復,而物理刪除則不可恢復。1.邏輯刪除記錄邏輯刪除就是給指定的記錄作刪除標記“*”。(1)命令方式

【格式】DELETE[<範圍>][FOR<條件>][WHILE<條件>]

【功能】對當前表中指定範圍內滿足條件的記錄作刪除標記“*”。

【說明】DELETE命令僅僅是在要刪除的記錄前加上一個刪除標記“*”,並不是真正地從表檔中將該記錄刪除掉。可以用LIST或DISP命令顯示帶刪除標記的記錄。八、表記錄的刪除53<範圍>,FOR<條件>、WHILE<條件>等各項選項意義同前;如果同時缺省<範圍>和<條件>子句,則僅僅刪除當前的記錄。【例4-12】刪除STUD.DBF中所有男同學的記錄。

USESTUDDELETEFOR性別="男"LISTFIELDS學號,姓名,性別,班級名,系別;代號,地址,出生日期,是否團員(2)菜單方式利用菜單方式邏輯刪除記錄的具體操作步驟如下:①首先打開表檔②選擇【顯示】|【流覽】命令,系統彈出記錄流覽窗口,顯示當前表中的記錄。主菜單上增加【表】菜單項。

54③選擇【表】|【刪除記錄】命令,出現圖3-5所示的“刪除”對話框。④單擊刪除對話框中的For…按鈕或While…按鈕,系統彈出運算式生成器,用戶可以在運算式框中輸入一個邏輯運算式,如性別=”男”,單擊【確定】按鈕完成條件運算式的輸入。⑤在“作用範圍”下拉列表框中選擇範圍,如ALL。⑥單擊“刪除”對話框中的“刪除”按鈕,系統將完成對指定範例內滿足指定條件的記錄的邏輯刪除。2.隱藏邏輯刪除記錄【格式】SETDELETEDON|OFF【功能】將表檔中已邏輯刪除的記錄隱藏,仿佛真正刪除一樣。

55圖3-5記錄刪除對話框56【說明】表檔中被邏輯刪除的記錄只是在該記錄上加一個刪除標記,當SETDELETED設置為OFF時,對該表檔的各種操作,對被刪除的記錄同樣有效。當SETDELETEDON時,可使對表檔中數據的各種操作,一般均不包括有刪除標記的記錄,但下列情況例外:命令的記錄範圍是當前記錄或RECORD(n)時;INDEX或REINDEX命令不受SETDELETED的影響,始終處理帶刪除標記的記錄。SETDELETED的缺省狀態是OFF。【例4-13】隱藏上題中STUD.DBF的標記刪除記錄。

USESTUDSETDELETEDON3.恢復邏輯刪除記錄恢復邏輯刪除是將被邏輯刪除的記錄恢復為正常記錄。即去掉“*”號。57(1)命令方式

【格式】RECALL[<範圍>][FOR<條件>][WHILE<條件>][NOOPTIMIZE]

【功能】將當前表檔中指定範圍內滿足條件的已作刪除標記“*”的記錄恢復,即去掉這些刪除記錄的刪除標記,使之成為正常記錄。

【說明】RECALL命令與DELETE命令相對應,它可以去掉被邏輯刪除記錄的刪除標記“*”。<範圍>,FOR<條件>、WHILE<條件>等各項選項意義同前;如果同時缺省<範圍>和<條件>子句,則僅僅恢復當前記錄。【例4-14】恢復STUD.DBF中刪除的所有記錄。

USESTUDRECALLALL(2)菜單方式①首先打開表檔58②選擇【顯示】|【流覽】命令。③選擇【表】|【恢復記錄】命令,出現類似圖3-5所示對話框。餘下操作與“刪除”對話框的操作相同。4.物理刪除記錄物理刪除是將當前表檔中被邏輯刪除的記錄全部清除。(1)命令方式

【格式】PACK[MEMO][DBF]

【功能】將當前表檔中所有帶刪除標記(*)的記錄全部真正地刪除掉。

【說明】若選用MEMO選項,PACKMEMO將壓縮與表檔同名的備註檔中的無用空間,但並不刪除表檔中作了刪除標記的記錄。若選用DBF選項,而不用MEMO選項,則只刪除表檔中作了刪除標記的記錄,而不壓縮相應的備註檔。59若不帶任何選項,PACK命令將刪除資料庫檔中作了刪除標記的記錄,同時壓縮相應的備註檔。注意:執行該命令後被刪除的記錄將不能被恢復,因此使用時應特別小心。【例4-15】將STUD.DBF中的學號為“021405”的記錄進行物理刪除。

USESTUDDELETEFOR學號=”021405”

PACK(2)菜單方式利用菜單方式物理刪除表記錄的具體步驟如下:①首先打開表檔②選擇【顯示】|【流覽】命令,系統彈出記錄流覽窗口,顯示當前表中的記錄。主菜單上增加【表】菜單。③選擇【表】|【徹底刪除】命令,出現“確認”對話框。60④單擊“是”按鈕,完成物理刪除過程。注意:用戶也可以在EDIT、CHANGE、BROWSE窗口中,按Ctrl+T鍵對當前記錄作(或取消)刪除標記,也可以用滑鼠單擊記錄最左邊的刪除標記欄作刪除(或取消)標記。

5.刪除全部記錄

【格式】ZAP

【功能】將當前打開的表檔中的所有記錄完全刪除掉。

【說明】執行該命令之後,將只保留表檔的結構,而不再有任何數據存在。這種刪除無法恢復,因此,為防止用戶發生錯誤操作而刪除有用的表檔記錄,執行該命令時,系統會彈出提示窗口,以確認是否刪除全部記錄,單擊“是”按鈕清除所有記錄,單擊“否”按鈕放棄ZAP操作。611.表結構的複製【格式】COPYSTRUCTURETO<檔案名>[FIELDS<字段名表>][[WITH]CDX|[WITH]PRODUCTION]【功能】複製當前表檔的結構作為新表檔的結構。【說明】命令執行前,需複製的表檔必須是打開的。執行後,生成的新表檔只有結構。<字段名表>:確定新表結構的字段名,<字段名表>中的字段必須是原表檔中具有的字段名。若省略該選項,則原樣複製當前表檔的結構。【例4-16】用複製命令將STUD.DBF中的學號、姓名、性別、出生日期等四個字段,構成一個新表結構。九、表的複製62

USESTUDCOPYSTRUCTURETOSTUD1FIELDS學號,姓名,性別,出生日期2.表檔的複製【格式】COPYTO<檔案名>[FIELDS<字段名表>][<範圍>][FOR<邏輯運算式1>][WHILE<邏輯表達式2>][[WITH]CDX]|[[WITH]PRODUCTION]【功能】將當前打開的表檔全部或部分複製到一個新生成的表檔中。【說明】新生成表檔中的字段順序由FIELDS選擇項<字段名表>確定,缺省表示新表的結構與原表的結構完全相同,新表檔中的記錄由<範圍>選擇項以及<條件>選擇項確定。同時缺省<範圍>、<條件>表示將原表的全部記錄都複製到新表中。若<範圍>、<條件>和<字段名表>都缺省,則表示將原表進行備份。63

<檔案名>指定新生成的表檔。若當前原表檔中有備註型字段,則相應的備註檔(.FPT檔)將同時被複製。新表檔案名不能與被複製的原表檔同名,省略盤符和路徑表示在當前盤當前目錄下生成新表檔。

【例4-17】複製STUD.DBF中所有女同學的記錄到STUD2.DBF中。

USESTUD

COPYTOSTUD2FOR性別=“女”

3.表記錄保存為文本檔

【格式】COPYTO<檔案名>[FIELDS<字段名表>][<範圍>][FOR<邏輯運算式1>][WHILE<邏輯表達式2>]<TYPESDF|DELIMITED[WITH<定界符>|WITHBLANK|WITHTAB]>

【功能】將當前表的記錄全部或部分保存到一個文本文件中。

64【說明】

FIELDS<字段名表>:確定文本檔中的字段順序,缺省表示將表中記錄的全部字段值保存到文本檔中,。<範圍>以及<條件>選擇項:確定哪些記錄的字段值保存到文本檔中。同時缺省<範圍>、<條件>表示將原表的全部記錄的字段值都保存到文本檔中。[TYPE]:當用戶生成的新檔不是DBF格式檔時,可以用TYPE選項指定新檔的格式,系統會自動產生不同格式的新檔,並為新檔加上相應的擴展名。TYPE檔類型包括下列幾種:●

SDF:複製為SDF(SystemDataFormat)格式的ASCII文本檔,默認擴展名為.TXT。●DELIMITED[WITH<定界符>WITHBLANK|WITHTAB]:複製為帶分隔符號的ASCII文本檔,默認擴展名為.TXT。65SDF和DELIMITED格式的區別:SDF是將表檔的每一條記錄複製到SDF文本檔中,在每一行中,字段與字段間沒有分隔符號,每一行以回車換行結束。字段在SDF檔中的寬度是固定的,等於源表中該字段的定義寬度。在SDF檔中,表檔中的字元型字段和數值型字段原樣存貯,即字元型左對齊存貯,不足部分在右邊填以空格;數值型則以右對齊方式存貯,不足部分在左邊填以空格。日期型數據以YYYYMMDD格式存貯。邏輯型數據以T或F存貯。SDF文本檔不接受備註型字段和通用型字段。DELIMITED檔帶定界符格式文本檔,也是將源表檔中的每一條記錄作為一行存貯,每行以回車換行結尾。但記錄的各字段間以分隔符號隔開,各字段的寬度為字段值的實際寬度。66字段間的分隔符號默認為“,”號,字元型字段的定界符為雙引號。用戶可以用WITH<定界符>WITHBLANK|WITHTAB指定分隔符號,WITH<定界符>表示用指定的<定界符>為字元型字段的定界符;WITHBLANK|WITHTAB則指定空格或Tab鍵作為字段間的分隔符號。若使用WITHBLANK,則字元型字段不再有定界符。注意:該命令和表檔的複製命令實際上是同一個命令,是複製為表檔還是文本檔,看是否帶TYPE子句。【例4-18】複製STUD.DBF中的記錄內容複製到SSTUD.TXT(SDF格式)、DSTUD.TXT(DELIMITED格式)和ESTUD.TXT(以空格為分隔符號的DELIMITED格式)中。

USESTUDCOPYTOSSTUDSDFCOPYTODSTUDDELIMITEDCOPYTOESTUDDELIMITEDWITHBLANK67十、表記錄的追加

維護資料庫的一項經常性的操作就是根據需要隨時向表檔中添加記錄,添加記錄包括追加記錄、插入記錄和利用其他檔追加。追加記錄在前面已經介紹,在這裏就介紹後面兩種方法。1.從另一個表檔中追加記錄

【格式】APPENDFROM<檔案名|?>[FIELDS<字段名表>][FOR<邏輯運算式>]

【功能】從指定的表檔中讀入數據,並添加到當前表檔的末尾。

【說明】數據的追加是從命令中指定的表檔追加到當前表檔中,所以,應先將需要追加記錄的表檔打開,設置為當前表,然後再使用該命令進行追加。68

追加原則是同名原則,即將數據來源表中的字段與當前表的字段進行比較,同名則將符合條件的記錄的值追加過來。若數據來源表中缺少某些字段,則當前表中該字段值為空。追加數據記錄時,若兩個表檔同名字段的寬度不相同,一般情況下,若當前表的字段寬度大於數據來源表的字段寬度,記錄能正常追加,對字元型數據後面加空格,對數值型數據前面加“0”,但若當前表的字段寬度小於數據來源表的字段寬度,記錄不能正常追加,數據失去原來的意義。對字元型數據截去後面多餘字元,對數值型數據進行小數部分的四捨五入,仍不夠根據當前表的寬度用“*”號填充,表示溢出。692.從另一個文本檔中追加記錄(1)命令方式

【格式】APPENDFROM<檔案名|?>[FIELDS<字段名表>][FOR<邏輯運算式>][[TYPE]SDF|[DELIMITED[WITHTAB|WITH<定界符>|WITHBLANK]]

【功能】從指定類型的文本檔中讀入數據,並添加到當前表檔的末尾。

【說明】<檔案名>是指獲取數據的文本檔案名。文本檔中的每一行,追加為一條記錄。可以在文本檔中輸入文本,但要保證文本格式相同,再利用此命令追加為記錄。注意:數據檔若由COPYTO命令生成的且定義了文本檔的分隔符號,則追加記錄時也應用相同的分隔符號。因為系統以每個分隔符號作為字段值的分隔符號。這樣才能保證數據能正確還原。70(2)菜單方式①打開表檔。②選擇【顯示】|【流覽】命令。③選擇【表】|【追加記錄】命令,彈出圖3-6所示的“追加來源”對話框。④單擊類型下拉按鈕選擇用來追加記錄的數據檔的類型,在“來源於”顯示欄中輸入數據來源檔的路徑和文件名,再選擇“選項”顯示框中的字段、條件。確定後返回追加來源窗口。⑤單擊“確定”按鈕,系統將滿足條件的記錄完成追加操作。3.插入記錄【格式】INSERT[BEFORE][BLANK]【功能】在當前表檔的指定位置插入新記錄或空記錄。

71圖3-6追加來源對話框72【說明】INSERT是在當前記錄之後插入新記錄,INSERTBEFORE是在當前記錄之前插入新記錄,INSERTBLANK是在當前記錄之後插入空記錄。若表檔建立了索引,則插入的新記錄按索引值進行排列。【例4-19】在表STUD.DBF的第2號記錄前插入一條新記錄,在第4號記錄後插入一條新記錄。

USESTUDGOTO2INSERTBEFORE &&在2號記錄前插入一條新記錄

GOTO5&&因已插入了一條新記錄,原4號現為5號

INSERT&&在4號記錄後插入一條新記錄73十一、檔管理命令

VisualFoxPro除了表檔之外,還有其他多種類型的檔,系統對各類檔提供了通用的管理手段,其功能類似於DOS的檔管理命令,但必須注意它們之間的區別。1.顯示檔目錄

【格式】DIR|DIRECTORY[ON<盤符>][[LIKE][<路徑>][<通配符>]][TOPRINTER[PROMPT]|TOFILE<檔案名>]或LIST|DISPLAYFILES[ON<盤符>][LIKE<通配符>]

[TOPRINTER[PROMPT]|TOFILE<檔案名>]

【功能】顯示磁片檔目錄資訊。

【說明】該命令類似於DOS操作系統的DIR命令。

ON<盤符>:指定所顯示檔目錄所在的驅動器符號,缺省此項為當前盤。[LIKE][<路徑>][<通配符>]:<路徑>指定顯示檔所在路徑;

742.檔改名【格式】RENAME<檔案名1>TO<檔案名2>【功能】將<檔案名1>改為<檔案名2>。【說明】該命令類似於DOS操作系統的REN命令。改名之前檔必須關閉,正在使用的檔不能改名。如果有備註檔,對表檔改名時,不要忘記為相應的.FPT檔改名,否則打不開改名後的表。【例4-20】將STUD.DBF改為GL.DBF。

USERENAMESTUD.DBFTOGL.DBFRENAMESTUD.FPTTOGL.FPT753.檔刪除【格式】ERASE[<檔案名>|?]或

DELETEFILE[<檔案名>|?]【功能】從磁片上刪除指定的檔。【說明】此命令類似於DOS操作系統的DEL命令。如果選擇參數?或缺省檔案名選項,系統將彈出Open對話框,供用戶選擇所需刪除的檔。為防止誤操作,該命令不默認擴展名,所以<檔案名>必須用全稱,<檔案名>不能使用通配符,如果<檔案名>不在目錄下,則需指定路徑。同時,此命令也不能刪除已打開的檔。【例4-21】刪除當前目錄下的.BAK檔。

ERASEABC.BAKERASESTUD.BAKDELETEFILEXSCJ.BAKDIR*.BAK764.檔複製【格式】COPYFILE<檔案名1>TO<檔案名2>【功能】對各類檔進行複製【說明】此命令類似於DOS操作系統的COPY命令。<檔案名1>和<檔案名2>必須給出全名,不能使用通配符;不能複製已打開的檔;當複製含有備註型字段或已建立索引的表檔時,必須複製相應的備註檔和索引檔。【例4-22】將STUD.DBF改名為STUDBAK.DBF複製到A:盤上。

COPYFILESTUD.DBFTOA:STUDBAK.DBFCOPYFILESTUD.FPTTOA:STUDBAK.FPT

&&複製.FPT備註檔775.顯示文本檔

【格式】TYPE<檔案名1>[AUTO][WRAP][TOPRINTER

[PROMPT]|TOFILE<檔案名2>][NUMBER]

【功能】顯示或同時列印文本檔

【說明】此命令類似於DOS操作系統的TYPE命令。文本檔是指非結構式檔,即沒有任何內部控制符的ASCII碼檔。例如命令檔.PRG、螢幕格式檔.FMT和文本文件.TXT。<檔案名1>和<檔案名2>:必須帶擴展名,不能使用通配符,且不能是打開的檔。

6.調用外部命令如果覺得VisualFoxPro的檔管理命令不方便,可以調用DOS的有關命令。

【格式】RUN|![/N[K]]<MS-DOS命令|程式名>

【功能】執行MSDOS的系統命令。

【說明】此命令直接完成外部程式的功能。使用本命令必須有足夠的記憶體空間,否則會產生“記憶體不足”的錯誤。78

為了高效方便地存取數據,往往要求表記錄以某一定的順序排放或顯示,因此,VisualFoxPro提供了兩種方法重新組織數據,即排序和索引。排序是從物理上對表進行重新整理,按照指定的關鍵字段來重新排列表中數據記錄的順序,並產生一個新的表檔。由於新表的產生即費時間也浪費空間,實際中很少用。索引是從邏輯上對表進行重新整理,按照指定的關鍵字段的建立索引檔。一個表檔可以建立多個索引檔,但對於打開的表檔,任何時侯只有一個索引檔起作用,此索引檔稱為主控索引。第三節表的排序與索引79一、表的排序【格式】SORTTO<新檔案名>ON<字段1>[/A|/D][/C][,<字段2>[/A|/D][/C]...][ASCENDING|DESCENDING][<範圍>][FOR<邏輯運算式1>][WHILE<邏輯運算式2>][FIELDS<字段名表>]【功能】對當前打開的表,按指定的字段進行排序,生成新的表檔。【說明】

生成的排序檔也是一個資料庫檔。範圍、條件的含義同COPYTO命令。用作排序的字段的數據類型允許是N、C、D、L型。/A表示昇冪/D表示降序/C表示不區分大小寫。

80當有多個關鍵字段時,先按字段1的值排列,其值相同的,再按字段2的值排列。原庫中的記錄發生變化,排序檔不能自動完成同步修改。該命令執行後,當前表不變,產生的新表不會自動打開。該排序方法占空間、廢時間,很少用。【例4-23】將STUD.DBF按性別進行降序排列

USESTUD

SORTTOSTUD2ON性別/D81二、索引的基本概念1.索引及索引檔的概述索引是以索引檔的形式存在的,它根據指定的索引關鍵字運算式建立的。索引檔可以看成索引關鍵字的值與記錄號之間的對照表,關鍵字可以是一個字段,也可以是幾個字段的組合。在建立索引檔時,把表所有記錄的索引關鍵字運算式的值按指定順序排序,並把每個索引關鍵字運算式值與該值在表中所對應的記錄對應起來,保存在索引檔中。索引檔必須與原表一起使用,查詢時根據索引關鍵字運算式的值先在索引檔中找到某字段所在的記錄號,然後再到表裏直接定位。這樣的查找方式使順序查找和隨機查找都有較高的效率。打開索引檔時,將改變表中記錄的邏輯順序,但並不改變表中記錄的物理順序。82一個表檔可建立多個索引檔,也可同時打開多個索引檔,但在同一時間內只有一個索引起作用,這個索引稱為主控索引。

VisualFoxPro系統中支持兩種不同的索引檔類型,即單索引檔和複合索引檔。單索引檔是根據一個索引關鍵字運算式(或關鍵字)建立的索引檔,檔擴展名為.IDX,它可用INDEX命令的各種形式建立。單索引檔分為標準和壓縮兩種類型。複合索引檔是指索引檔中可以包含多個索引標識的擴展名為.CDX。每個索引標識與單索引檔類似,也可以根據一個索引關鍵字運算式(或關健字)建立。每一個索引標識均有一個特殊的標識名(TAG)。標識名由字母或下劃線開頭,由字母、數字或下劃線組成,長度不超過10個字元。用戶可以利用標識名來使用標識,向複合索引檔中追加標識。複合檔中標識的數目,僅受記憶體和磁片空間的限制。83複合索引檔又有兩種:一種是獨立複合索引檔;另一種是結構複合索引檔。結構複合索引檔是由VisualFoxPro自動命名的,與相應的表檔同名,擴展名為.CDX。當VisualFoxPro打開一個表時,便自動查找一個結構複合索引檔,如果找到便自動打開,該索引檔隨表檔同時打開和同時關閉。獨立複合索引檔不與表檔同名,擴展名為.CDX。在打開表時不會自動打開此索引檔,由命令指定打開。索引可分為下列四種類型:

2.主索引主索引是一個永遠不允許在指定字段和運算式中出現重複值的索引。它也是在資料庫表的永久關聯中創建參照完整性時主表和被引用表使用的索引。每一個表只能建立一個主索引,只有資料庫表才能建立主索引。84

3.侯選索引侯選索引也是一個不允許在指定字段和運算式中出現重複值的索引。資料庫表和自由表都可以建立侯選索引,一個表可以建立多個侯選索引。主索引和侯選索引都存儲在.CDX結構複合索引檔中,不能存儲在獨立複合索引檔和單索引檔中,因為主索引和侯選索引都必須與表檔同時打開和同時關閉。

4.唯一索引系統只在索引檔中保留第一次出現的索引關鍵字值。資料庫表和自由表都可以建立唯一索引

5.普通索引是一個最簡單的索引,允許關鍵字值的重複出現,適合用來進行表中記錄的排序和查詢,也適合於一對多永久關聯中“多”的一邊(子表)的索引。資料庫表和自由表都可以建立普通索引。85

三、索引檔的建立1.命令方式

【格式】INDEXON<索引關鍵字運算式>TO<單索引檔>|TAG<標識名>[OF<獨立複合索引檔案名>][FOR<邏輯運算式>][COMPACT][ASCENDING|DESCENDING][UNIQUE][ADDITIVE]

【功能】對當前表檔按指定的關鍵字建立索引檔。

【說明】<索引關鍵字運算式>:指定建立索引檔的關鍵字運算式,可以是單一字段名,也可以是多個字段組成的字元型運算式,運算式中各字段的類型只能是數值型、字元型和日期型和邏輯型。當運算式是單個字段名時,字段類型不用轉換;應轉換成同一類型的運算式。86

TAG<標識名>:此選項只對建立複合索引檔時有效,指定建立或追加索引標識的標識名。OF<獨立複合索引檔>:指定獨立複合索引檔案名。若有此選項,表示在指定的獨立複合索引檔中追加一個索引標識,若指定的獨立複合索引檔不存在,系統將自動建立指定的檔。若沒有此選項,表示在結構複合檔中追加一個索引標識,若結構複合索引檔不存在,系統將自動建立結構複合索引檔。FOR<邏輯運算式>:表示只對滿足條件的記錄建立索引。COMPACT:此選項只對單索引檔有效,表示建立壓縮索引檔。ASCENDING|DESCENDING:ASCENDING表示按昇冪建立索引,DESCENDING表示按降序建立索引。缺省時,按昇冪建立索引。單索引檔不能選用DESCENDING選項。87UNIQUE:表示建立的是唯一索引。ADDITIVE:表示保留以前打開的索引檔。否則,除結構複合索引檔外,以前打開的其他索引檔都將被關閉。新建的索引檔自動打開,並開始起作用。【例4-24】對STUD.DBF表檔建立出生日期單索引檔STUD.IDX。

USESTUDINDEXON出生日期TOSTUD【例4-25】對表檔STUD.DBF,建立一個基於出生日期字段的結構複合索引檔。USESTUDINDEXON出生日期TAG出生日期DESCENDING88【例4-26】在表檔STUD.DBF的結構複合索引檔中,按學號和姓名各追加一個標識。

USESTUDINDEXON學號TAG學號【例4-27】在表檔STUD.DBF的結構複合索引檔中,先按性別再按學號追加一個標識。

USESTUDINDEXON性別+學號TAG性別學號【例4-28】在表檔STUD.DBF中,先按性別再按是否團員建立一個獨立複合索引檔SXBTY.CDX。

USESTUDINDEXON性別+IIF(是否團員,’團員’,’非團員’)TAG性別團員OFSXBTY89

2.菜單方式①打開表檔。②選擇【顯示】|【表設計器】命令,打開表設計器對話框,選擇“索引”標籤,如圖3-7所示。③在索引名中輸入索引標識名,在類型的下拉列表框中確定一種索引類型,在運算式中輸入索引關鍵字運算式,在篩選中輸入確定參加索引的記錄條件,在排序

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论