版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第三章
數(shù)據(jù)庫和數(shù)據(jù)表的操作3.1.1VFP數(shù)據(jù)庫及數(shù)據(jù)表
數(shù)據(jù)庫管理系統(tǒng)主要是通過數(shù)據(jù)庫對數(shù)據(jù)進行有效的組織和管理。VFP引入了大型數(shù)據(jù)庫管理系統(tǒng)的“數(shù)據(jù)庫”概念,數(shù)據(jù)采用“數(shù)據(jù)庫——表與視圖——記錄——字段”的邏輯結(jié)構(gòu)進行存儲,并且引入了數(shù)據(jù)字典(數(shù)據(jù)字典是在創(chuàng)建數(shù)據(jù)庫文件時系統(tǒng)自動生成的相應(yīng)文件,是一個記錄數(shù)據(jù)庫中所有信息的表。)功能對數(shù)據(jù)庫進行管理,增強了數(shù)據(jù)的可靠性、一致性和完整性。數(shù)據(jù)庫及作用按照關(guān)系數(shù)據(jù)庫理論,二維表就是關(guān)系模型中的一個關(guān)系,稱為表(Table)。數(shù)據(jù)庫則是關(guān)系的集合,即表的集合,這些表協(xié)同完成某項任務(wù)。數(shù)據(jù)庫中各表之間是有聯(lián)系的,稱為關(guān)系。所以利用數(shù)據(jù)庫除了可以存儲一系列表之外;還可以在表之間建立永久關(guān)系,并存儲在數(shù)據(jù)庫中;可以設(shè)置表屬性、字段屬性及有效性規(guī)則和默認值;還可以建立和存儲本地視圖和外地視圖,存儲與遠程服務(wù)器的連接。實際上,數(shù)據(jù)庫主要用于組織表,但數(shù)據(jù)并不存儲于數(shù)據(jù)庫文件(.DBC)中,而是存儲在表文件(.DBF)中。但表間的永久關(guān)系、表屬性、字段屬性、視圖定義、遠程連接的定義等是真正存儲在數(shù)據(jù)庫文件中。數(shù)據(jù)庫及作用二表表是基本的數(shù)據(jù)組織單位,數(shù)據(jù)管理的核心是對表的管理,表是按一定結(jié)構(gòu)組織起來的。二表根據(jù)表是否屬于數(shù)據(jù)庫,可將表分為數(shù)據(jù)庫表(DatabaseTable,也稱數(shù)據(jù)表)和自由表(FreeTable)。在同一時間一個表只能屬于一個數(shù)據(jù)庫??梢栽跀?shù)據(jù)庫中創(chuàng)造新?lián)毂恚部梢韵驍?shù)據(jù)庫中添加自由表轉(zhuǎn)為數(shù)據(jù)庫表。還可以從數(shù)據(jù)庫中移出表使之變?yōu)樽杂杀恚蛘咭瞥鎏砑拥絼e的數(shù)據(jù)庫中。二表我們?nèi)粘S玫降亩S表格,對應(yīng)于數(shù)據(jù)庫中的一個數(shù)據(jù)表。日常二維表格有兩大部分組成:表頭和表格內(nèi)容。在數(shù)據(jù)庫的數(shù)據(jù)表中,數(shù)據(jù)表結(jié)構(gòu)對應(yīng)于表頭,記錄對應(yīng)于表格內(nèi)容。(見RSDA.DBF數(shù)據(jù)表)表3-1人事檔案信息表
編
號姓
名性別工作時間職
稱簡
歷照
片05002苗
莉女1963.7.1
04002林文靈男1963.9.2教授
04001姜瑞青男1984.9.3教授
01001韓偉東男1985.9.4
03001王為冬男1988.7.5副教授
02002賈貴紅女1988.9.6主治醫(yī)師
02001劉巧玲女1993.9.7
從表3-1可以看到,它是由以下幾部分組成的:①表的名字(標(biāo)題):每張表都有一個名字,是用來概括表的內(nèi)容。例如上表的名字人事檔案信息表②表中每一列的欄目標(biāo)題序列為表頭,它標(biāo)明了每一列對應(yīng)數(shù)據(jù)的屬性。例如在表3-1中的編號、姓名、出生日期、簡歷……等等,即是表頭。③表中每一行的數(shù)據(jù)是表的內(nèi)容,由每行中具體的數(shù)據(jù)項內(nèi)容組成的,它標(biāo)明了某一事物的基本內(nèi)容。例如在表3-1中,第二行反映的便是林文靈的個人情況。數(shù)據(jù)表中一行稱為一個記錄一列稱為一個字段記錄描述實體字段描述實體的屬性字段應(yīng)是數(shù)據(jù)表中不可再分割的基本數(shù)據(jù)項。二維表與數(shù)據(jù)表的對應(yīng)關(guān)系一張二維表由表名、表頭、表的內(nèi)容三部分組成,一個數(shù)據(jù)表則由數(shù)據(jù)表名、數(shù)據(jù)表的結(jié)構(gòu)、數(shù)據(jù)表的記錄三要素構(gòu)成。①數(shù)據(jù)表的文件名相當(dāng)于二維表中的表名,它是數(shù)據(jù)表的主要標(biāo)識,用戶可以依靠數(shù)據(jù)表名在磁盤上存取、使用指定的數(shù)據(jù)表。②數(shù)據(jù)表的結(jié)構(gòu)相當(dāng)于二維表的表頭,二維表的每一列對應(yīng)數(shù)據(jù)表中的一個字段,其屬性決定了字段名、字段類型和字段長度。③數(shù)據(jù)表中的記錄是數(shù)據(jù)表中不可分割的基本項,即二維表中的表的內(nèi)容。一個數(shù)據(jù)表的大小,主要取決于它擁有的數(shù)據(jù)記錄的多少。不包含記錄的數(shù)據(jù)表稱為空表。1.?dāng)?shù)據(jù)表名數(shù)據(jù)表及自由表都有各自的名字標(biāo)識符,以區(qū)別于其它表。每個表都是以單獨的文件存儲于磁盤中,數(shù)據(jù)表名就是對應(yīng)的文件名,文件名應(yīng)符合Windows的規(guī)定,擴展名默認為.DBF??梢允褂米帜?、漢字、數(shù)字、下劃線及它們的組合,但不能使用*、?、空格等字符。注意:由于系統(tǒng)已設(shè)定了A、B、……、J和W11、W12、……、W32767
作為數(shù)據(jù)庫工作區(qū)別名,所以用戶不要單獨用它們作文件名。2.?dāng)?shù)據(jù)表結(jié)構(gòu)在創(chuàng)造數(shù)據(jù)表時,首先要定義數(shù)據(jù)表的結(jié)構(gòu),然后按數(shù)據(jù)表結(jié)構(gòu)輸入記錄數(shù)據(jù)。定義數(shù)據(jù)表結(jié)構(gòu)就是依次定義每個字段的字段名、字段類型、字段寬度、小數(shù)位數(shù)及是否允許NULL(空)值。1)字段名字段名是用來標(biāo)識字段的,又稱為字段變量。其命名規(guī)則同內(nèi)存變量。在VFP運行期間,許多操作都是通過字段名來訪問這個字段的,所以字段名的定義最好與該字段所代表的數(shù)據(jù)屬性相符,例如用英文單詞、漢語拼音、漢字作為字段名,盡量遵循“見名知義”的原則。
2)字段類型和字段寬度VFP中的每一項數(shù)據(jù)都有固定的類型,每一個字段中的數(shù)據(jù)必須是同一種數(shù)據(jù)類型。數(shù)據(jù)類型定義了該種數(shù)據(jù)的表示方法、取值范圍、所能進行的運算。在VFP數(shù)據(jù)表中,字段的數(shù)據(jù)類型共有13種,應(yīng)根據(jù)具體的需要進行設(shè)置。
2.?dāng)?shù)據(jù)表結(jié)構(gòu)數(shù)據(jù)表的結(jié)構(gòu) ③小數(shù)位數(shù)只對數(shù)值型和浮動型數(shù)據(jù)有效。小數(shù)位的取值范圍為0~15。
④NULL值
該屬性指定記錄中字段是否允許輸入NULL(空)值。需要注意的是,NULL值與空格、空字符串或0是不同的。NULL不是一種數(shù)據(jù)類型,當(dāng)一個字段的值被置為NULL時,其數(shù)據(jù)類型并不發(fā)生改變。
2.數(shù)據(jù)表的存在方式
數(shù)據(jù)表可以有兩種存在方式:單獨的一個數(shù)據(jù)表,我們稱之為自由表(FreeTable);存在于數(shù)據(jù)庫中的表,我們稱之為數(shù)據(jù)庫表(DatabaseTable)。自由表是擴展名為.DBF的文件,它獨立存在,不與任何數(shù)據(jù)庫相關(guān)聯(lián);而數(shù)據(jù)庫表的擴展名雖然也是.DBF,但是,它與某一個數(shù)據(jù)庫相關(guān)聯(lián)(也只能和惟一數(shù)據(jù)庫相關(guān)聯(lián)),隸屬于某一數(shù)據(jù)庫。
2.數(shù)據(jù)表的存在方式
數(shù)據(jù)庫中的表可以有一些自由表所沒有的特性。這兩種類型的數(shù)據(jù)表建立方式基本相同,只是數(shù)據(jù)庫表需設(shè)定較多的屬性,可以設(shè)置表和字段的各種規(guī)則。自由表可以很容易地添加到數(shù)據(jù)庫中,使之轉(zhuǎn)化成數(shù)據(jù)庫表;反之,將一個數(shù)據(jù)庫表從數(shù)據(jù)庫中移走,則可將其轉(zhuǎn)化為一個自由表,這時,表原有的一些特性或規(guī)則將會丟失。
3.1.2建立數(shù)據(jù)庫和數(shù)據(jù)表的準備工作
1.確定數(shù)據(jù)庫的組織結(jié)構(gòu)
在建立數(shù)據(jù)庫和數(shù)據(jù)表時,應(yīng)首先確定應(yīng)用系統(tǒng)中的數(shù)據(jù)有哪些,這些數(shù)據(jù)應(yīng)存放在幾個數(shù)據(jù)表中,每個數(shù)據(jù)表中應(yīng)包含哪些數(shù)據(jù)、數(shù)據(jù)表文件如何命名等。例如,對于一個人事管理系統(tǒng),可能包含有人員編號、工作部門、姓名、性別、籍貫、出生日期、婚姻狀況、工資狀況、學(xué)歷、職稱、職務(wù)、簡歷等許多數(shù)據(jù),為便于管理和避免數(shù)據(jù)的冗余,可以將這些數(shù)據(jù)組織到不同的數(shù)據(jù)表中,如檔案信息數(shù)據(jù)表、工資信息表、管理信息數(shù)據(jù)表等。
3.1.2建立數(shù)據(jù)庫和數(shù)據(jù)表的準備工作
2.數(shù)據(jù)規(guī)范化
日常生活中的表格大都是不規(guī)則表格,需要首先將其改造為規(guī)則的二維表格,按照關(guān)系理論中關(guān)系的規(guī)范化原則,設(shè)計數(shù)據(jù)庫的總體結(jié)構(gòu)和各個數(shù)據(jù)表的結(jié)構(gòu)。
4.1.2建立數(shù)據(jù)庫和數(shù)據(jù)表的準備工作
3.確立數(shù)據(jù)表的結(jié)構(gòu)
在設(shè)置數(shù)據(jù)表的字段類型和寬度時,一般應(yīng)遵循以下原則:(1)文字性質(zhì)內(nèi)容的字段(如姓名、職稱、職務(wù)、家庭住址等)以及不參加運算的數(shù)字性質(zhì)內(nèi)容的字段(如職工編號、身份證號、電話號碼、商品代碼等),其類型應(yīng)定義為字符(C)型。
4.1.2建立數(shù)據(jù)庫和數(shù)據(jù)表的準備工作(2)參與運算的數(shù)字性質(zhì)內(nèi)容的字段(如工資、成績、金額、單價等),其類型應(yīng)定義為數(shù)值(N)型,并應(yīng)根據(jù)實際需要保留相應(yīng)的小數(shù)位。不要忘記負號和小數(shù)點都各占一位。(3)日期性質(zhì)內(nèi)容的字段(如出生日期、制表日期等),其類型應(yīng)定義為日期(D)型。(4)內(nèi)容只能在兩者中取一的字段(如婚否、性別等),其類型應(yīng)定義為邏輯(L)型。
3.1.2建立數(shù)據(jù)庫和數(shù)據(jù)表的準備工作(5)字符個數(shù)較多的字段(如簡歷、簡介等),其類型應(yīng)定義為備注(M)型。
(6)內(nèi)容為OLE對象的字段(如照片、音樂等),其類型應(yīng)定義為通用(G)型。
對非固定長度的字段,在定義其字段寬度時,既要注意目前的實際情況,也要考慮到將來的發(fā)展(如職工編號、學(xué)生證號等),要留有一定的余地。
3.1.2建立數(shù)據(jù)庫和數(shù)據(jù)表的準備工作根據(jù)上述原則,人事檔案信息表中各字段定義字段名類型寬度小數(shù)位字段名類型寬度小數(shù)位編號字符型(C)5
職稱字符型(C)8
姓名字符型(C)8
簡歷備注型(M)4
性別字符型(C)2
照片通用型(G)4
工作時間日期型(D)8
3.2數(shù)據(jù)表結(jié)構(gòu)的建立、修改和顯示
3.2.1建立數(shù)據(jù)庫
1.建立數(shù)據(jù)庫
(1)在項目管理器中建立數(shù)據(jù)庫文件
(建立一個名為rsgl.dbc的數(shù)據(jù)庫文件
)(2)利用菜單建立數(shù)據(jù)庫文件
(3)利用命令建立數(shù)據(jù)庫文件
CREATEDATABASE[<數(shù)據(jù)庫名>|?]3.2.1建立數(shù)據(jù)庫2.打開數(shù)據(jù)庫
(1)在項目管理器中打開數(shù)據(jù)庫文件
(2)利用菜單打開數(shù)據(jù)庫文件
(3)利用命令打開數(shù)據(jù)庫3.關(guān)閉數(shù)據(jù)庫【格式】CLOSEDATABASE|ALL
3.2.2建立數(shù)據(jù)表結(jié)構(gòu)
所謂建立數(shù)據(jù)表的結(jié)構(gòu),就是把數(shù)據(jù)表的字段名、字段類型、字段長度和小數(shù)位個數(shù)等數(shù)據(jù)輸入到VFP系統(tǒng)中并保存到數(shù)據(jù)表文件中。
1.利用表設(shè)計器創(chuàng)建數(shù)據(jù)表結(jié)構(gòu)
(1)在項目管理器中打開表設(shè)計器
(2)利用菜單打開表設(shè)計器
(3)利用命令打開表設(shè)計器
3.2.2建立數(shù)據(jù)表結(jié)構(gòu)2.利用表向?qū)Ы?shù)據(jù)表結(jié)構(gòu)①在數(shù)據(jù)庫設(shè)計器中打開數(shù)據(jù)庫rsgl.dbc,然后選擇“文件”菜單中的“新建”命令,出現(xiàn)“表向?qū)Р襟E1-字段選取”對話框。把rsda表添加到樣表當(dāng)中;選擇rsda數(shù)據(jù)表;并選擇樣表中的字段②“表向?qū)Р襟E1a—選擇數(shù)據(jù)庫”對話框,③“修改字段設(shè)置”對話框,④“步驟3-為表建立索引”對話框,忽略后將出現(xiàn)“步驟3a-建立關(guān)系”對話框,也忽略出現(xiàn)“步驟4—完成”對話框,選擇“保存表,然后在表設(shè)計器中修改”
3.2.2建立數(shù)據(jù)表結(jié)構(gòu)3.設(shè)置數(shù)據(jù)庫表的字段屬性和表屬性(1)設(shè)置數(shù)據(jù)庫的字段屬性①顯示區(qū)域“格式”屬性“輸入掩碼”屬性“標(biāo)題”屬性②匹配字段類型到類③字段有效性“規(guī)則”信息默認值④字段注釋3.2.2建立數(shù)據(jù)表結(jié)構(gòu)(2)設(shè)置數(shù)據(jù)表的屬性①記錄有效性規(guī)則:指定記錄中各字段取值必須滿足的條件,也是通過[表達式生成器]對話框,將有效性規(guī)則用邏輯型表達式表示出來。信息:指定當(dāng)記錄有效性驗證不符合規(guī)則時,則彈出警告框,所顯示的提示信息。②觸發(fā)器觸發(fā)器也是一種檢查表中記錄數(shù)據(jù)有效性的機制。當(dāng)對表中的記錄進行插入、更新或刪除操作時,將分別激活插入觸發(fā)器、更新觸發(fā)器、刪除觸發(fā)器,根據(jù)定義的驗證條件進行檢查。定義觸發(fā)器的驗證條件,也是用邏輯型表達式來表示。
③表注釋3.2.3數(shù)據(jù)表結(jié)構(gòu)的修改修改表結(jié)構(gòu)主要包括:修改字段名、字段類型、字段寬度、小數(shù)位數(shù)、插入(添加)一個字段、刪除一個字段、調(diào)換字段的順序等內(nèi)容。
1.打開表設(shè)計器(1)在項目管理器中選擇要修改結(jié)構(gòu)的表,然后單擊“修改”按鈕。(2)數(shù)據(jù)庫設(shè)計器中選擇要修改結(jié)構(gòu)的表,右單擊其表名,然后從彈出的快捷菜單中選擇“修改”命令。(3)使用MODIFYSTRUCTURE命令。3.2.3數(shù)據(jù)表結(jié)構(gòu)的修改2.修改數(shù)據(jù)表結(jié)構(gòu)(1)若要修改字段名、類型、寬度和小數(shù)位等(2)若要調(diào)換字段的位置(3)若要插入字段,(4)若要刪除某字段,(5)若要在尾部添加字段,3.2.4數(shù)據(jù)表結(jié)構(gòu)的顯示1.在表設(shè)計器中顯示數(shù)據(jù)表結(jié)構(gòu)2.命令方式顯示數(shù)據(jù)表結(jié)構(gòu)【格式】LIST|DISPLAYSTRUCTURE[IN<工作區(qū)號>|<表別名>][TOPRINTER[PROMPT]|TOFILES<文件名>]說明:LIST和DISPLAY可以選擇任意一個,所不同的是:若字段很多,一頁顯示不下,LIST連續(xù)顯示信息直到顯示完為止;DISPLAY采用分頁顯示信息,即顯示一屏信息后暫停,按任意鍵或單擊鼠標(biāo)就可以繼續(xù)顯示后面的內(nèi)容。
3.2.4數(shù)據(jù)表結(jié)構(gòu)的顯示例如,可在命令窗口輸入以下命令來顯示數(shù)據(jù)表rsda.dbf的結(jié)構(gòu):
USErsdaLISTSTRU從顯示的信息中可以看出,字段寬度的總計數(shù)目比各字段寬度之和大1,這時因為系統(tǒng)保留了1個字節(jié)的寬度用來存放邏輯刪除標(biāo)記
3.3數(shù)據(jù)表的基本操作3.3.1數(shù)據(jù)表的打開和關(guān)閉1.打開數(shù)據(jù)表(1)在項目管理器中打開數(shù)據(jù)表(2)通過“文件”菜單打開數(shù)據(jù)表(3)通過“數(shù)據(jù)工作期”窗口打開數(shù)據(jù)表(4)用命令打開數(shù)據(jù)表【格式】USE[<表文件名>|?][IN<工作區(qū)號>|<工作區(qū)別名>][ALIAS<表別名>]3.3.1數(shù)據(jù)表的打開和關(guān)閉2.關(guān)閉數(shù)據(jù)表USE:關(guān)閉當(dāng)前工作區(qū)中打開著的數(shù)據(jù)表。CLEARALL:關(guān)閉所有打開著的數(shù)據(jù)庫和數(shù)據(jù)表,釋放所有的內(nèi)存變量。CLOSEALL:關(guān)閉所有打開著的數(shù)據(jù)庫和數(shù)據(jù)表、設(shè)計器、項目管理器。CLOSEDATABASE:關(guān)閉當(dāng)前數(shù)據(jù)庫和數(shù)據(jù)表,并選擇1區(qū)為當(dāng)前工作區(qū)。CLOSETABLES:關(guān)閉當(dāng)前數(shù)據(jù)庫中的所有數(shù)據(jù)表。QUIT:在退出VFP的同時關(guān)閉所有的數(shù)據(jù)庫和數(shù)據(jù)表等。3.3.2記錄的輸入1.記錄輸入根據(jù)輸入到數(shù)據(jù)表中的順序,數(shù)據(jù)表中的每個記錄都被自動賦予一個順序號,稱為記錄號。
注意以下幾點:(1)通用型和備注型字段的輸入方法是雙擊字段名后的“gen”和“memo”,或是把光標(biāo)移動到“gen”和“memo”上時按Ctrl+PageUp(PageDown)鍵,打開相應(yīng)的輸入窗口,之后即可輸入通用型和備注型字段的內(nèi)容,輸入完畢后單擊窗口關(guān)閉按鈕或按Ctrl+W鍵即可保存輸入的內(nèi)容(若按Ctrl+Q鍵則不保存輸入的內(nèi)容),返回到數(shù)據(jù)記錄輸入窗口。輸入內(nèi)容后,“memo”和“gen”分別變?yōu)椤癕emo”和“Gen”。3.3.2記錄的輸入(2)備注型字段的內(nèi)容可直接輸入,但通用型數(shù)據(jù)的輸入一般使用插入對象的方法來插入數(shù)據(jù)。打開通用型字段的輸入窗口后,選擇“編輯”菜單下的“插入對象”,即出現(xiàn)插入對象對話框,
(3)如果需要向一個字段輸入空值(NULL),則必須使用組合鍵:CTRL+0,或者輸入“.NULL.”。(4)在數(shù)據(jù)輸入過程中,可隨時移動插入點對輸入的錯誤進行修改。
(5)按Esc鍵或Ctrl+Q鍵也可關(guān)閉記錄輸入窗口
3.3.2記錄的輸入2.記錄追加【格式】APPEND[BLANK][IN<工作區(qū)號>|<表的別名>]3.3.2記錄的輸入3.從其它數(shù)據(jù)表文件中追加記錄(1)菜單方式(2)命令方式【格式】APPENDFROM<文件名>|?[FIELDS<字段名表>][FOR<條件表達式>]由于通用字段用于存儲OLE對象,和其它字段不同,因此需要用特殊的命令:【格式】APPENDGENERAL<通用字段名>FROM<對象的文件名.擴展名>3.3.3記錄的瀏覽和顯示1.在“瀏覽”窗口中顯示瀏覽記錄(1)在項目管理器,選數(shù)據(jù)表,單擊“瀏覽”按鈕。(2)在數(shù)據(jù)庫設(shè)計器中,右單擊要瀏覽的數(shù)據(jù)表名,在快捷菜單中選擇“瀏覽”命令。(3)打開數(shù)據(jù)表后,選擇“顯示”菜單中的“瀏覽”命令。(4)打開數(shù)據(jù)表,在命令窗口中用BROWSE命令。【格式】BROWSE[FIELDS<字段名表>][FOR<條件表達式>][FREEZE<字段名>][LOCK<字段序號>][NOAPPEND]
[NODELETE][NOEDIT|NOMODIFY]3.3.3記錄的瀏覽和顯示2.列表方式顯示數(shù)據(jù)表記錄【格式】LIST|DISP[[FIELDS]<字段名表>][<范圍>][FOR<條件表達式1>][WHILE<條件表達式>][OFF][TOPRINTER][TOPROMPT][TOFILES<文件名>]3.3.4記錄指針及其操作1.當(dāng)前記錄雖然一個數(shù)據(jù)表中可能含有多條記錄,但記錄指針某一時刻只能指向某一記錄或數(shù)據(jù)表的首尾。當(dāng)記錄指針指向某一記錄時,該記錄就被稱為當(dāng)前記錄。“當(dāng)前記錄”是一個非常重要的概念,它既關(guān)系到字段變量的取值,也關(guān)系到許多命令的執(zhí)行,因為在默認情況下(不指定操作范圍時),VFP中一些命令只對當(dāng)前記錄進行操作,例如DISPLAY命令、REPLACE命令等。3.3.4記錄指針及其操作記錄指針是虛擬的,不能直接看到,VFP中常用函數(shù)RECNO()來判斷記錄指針位置,如輸入命令“?RECNO()”時,可以在桌面上顯示出當(dāng)前記錄的記錄號。另外,在瀏覽窗口中,窗口左側(cè)的按鈕上帶有一個黑三角的記錄就是當(dāng)前記錄。3.3.4記錄指針及其操作2.記錄指針的定位(1)菜單方式定位記錄指針選擇“表”菜單中的“轉(zhuǎn)到記錄”項
3.3.4記錄指針及其操作(2)命令方式定位記錄指針a.指針的絕對移動【格式一】GO|GOTOTOP|BOTTOM[IN<工作區(qū)號>|<表的別名>]【格式二】[GO|GOTO]<數(shù)值表達式>[IN<工作區(qū)號>|<表的別名>]b.指針的相對移動【格式】SKIP[[+|-]<數(shù)值表達式>][IN<工作區(qū)號>|<表的別名>]3.3.4記錄指針及其操作
USErsda&&打開數(shù)據(jù)表rsda.dbf,該表共11條記錄
?RECNO(),BOF()&&當(dāng)前記錄號為1,BOF()為.F.SKIP-1&&記錄指針從當(dāng)前位置向表頭部相對移動1條記錄
?RECNO(),BOF()&&當(dāng)前記錄號為1,BOF()為.T.GO4&&記錄指針絕對移動到第4條記錄
?RECNO()&&當(dāng)前記錄號為4SKIP&&記錄指針從當(dāng)前位置向表尾部相對移動1條記錄
SKIP-3&&記錄指針從當(dāng)前位置向表頭部相對移動3條記錄
?RECNO()&&當(dāng)前記錄號是2GOBOTTOM&&記錄指針絕對移動到數(shù)據(jù)表最后1條記錄
?RECNO(),EOF()&&當(dāng)前記錄號為11,EOF()為.F.SKIP&&記錄指針從當(dāng)前位置向表尾部相對移動1條記錄
?RECNO(),EOF()&&當(dāng)前記錄號為12,EOF()為.T.3.3.4記錄指針及其操作(3)按條件定位【格式】LOCATE[<范圍>][FOR<條件表達式1>][WHILE<條件表達式2>]LOCATE命令只能將記錄指針定位到第一條符合條件的記錄上,若要繼續(xù)查找滿足條件的其它記錄,可以執(zhí)行繼續(xù)查找命令?!靖袷健緾ONTINUE3.3.5記錄數(shù)據(jù)的修改1.在瀏覽窗口中修改記錄數(shù)據(jù)2.EDIT或CHANGE命令【格式】EDIT|CHANGE[FIELDS<字段名表>][<范圍>][FOR<條件表達式>]【功能】在編輯窗口顯示并編輯指定的字段。說明:①EDIT和CHANGE只能選擇其中之一,兩者等價。②缺省范圍和條件時,將從當(dāng)前記錄編輯到最后的記錄。③FIELDS短語用來指定顯示和編輯的字段。3.3.5記錄數(shù)據(jù)的修改3.批量修改記錄數(shù)據(jù)以上介紹的修改數(shù)據(jù)的方法是手工一條記錄一條記錄地修改,若數(shù)據(jù)表中的記錄很多,且許多記錄都需要有規(guī)律地修改數(shù)據(jù),……VFP提供了成批修改某字段有規(guī)律數(shù)據(jù)的方法。(1)利用菜單批量修改數(shù)據(jù)3.3.5記錄數(shù)據(jù)的修改(2)利用REPLACE命令批量修改數(shù)據(jù)【格式】REPL<范圍><字段名1>W(wǎng)ITH<表達式1>[ADDITIVE][,<字段名2>W(wǎng)ITH<表達式2>[ADDITIVE]][,…][<范圍>][FOR<條件表達式>]說明:①不選用范圍和條件,只對當(dāng)前記錄進行字段更改。②只選了范圍短語,對指定范圍內(nèi)的所有記錄進行字段更改。③只選了條件短語,則默認范圍ALL。④可以同時更改幾個不同字段的值。WITH后面的<表達式n>的值用來替換對應(yīng)字段的值。3.3.6記錄的刪除與恢復(fù)在VFP中刪除操作分為兩步,首先是進行邏輯刪除,然后再進行物理刪除。
1.邏輯刪除(邏輯刪除只對記錄作刪除標(biāo)記)(1)在瀏覽窗口中邏輯刪除記錄單擊窗口左邊框和要刪除的記錄的第一個字段之間的小方塊(稱為刪除標(biāo)記)一般情況下,邏輯刪除的記錄和其他記錄一樣參與操作,除非使用了SETDELETEON命令。此時,被邏輯刪除的記錄將被隱藏起來,不參加有關(guān)的計算。3.3.6記錄的刪除與恢復(fù)(2)利用命令邏輯刪除記錄【格式】DELETE[<范圍>][FOR<條件表達式>][WHILE<條件表達式>][IN<工作區(qū)號>|<表的別名>]2.恢復(fù)邏輯刪除記錄(1)在瀏覽窗口中恢復(fù)邏輯刪除的記錄(2)利用命令恢復(fù)已邏輯刪除的記錄【格式】RECALL[<范圍>][FOR<條件表達式>][WHILE<條件表達式>][IN<工作區(qū)號>|<表的別名>]3.3.6記錄的刪除與恢復(fù)3.物理刪除已作了邏輯刪除標(biāo)記的記錄(1)菜單方式選擇菜單“表”、“徹底刪除”命令,VFP將彈出一個確認對話框,單擊“確定”按鈕即可物理刪除(2)命令方式【格式】PACK
4.刪除表中所有記錄【格式】ZAP[IN<工作區(qū)號>|<表的別名>]說明:ZAP等效于DELEALL和PACK兩條命令連用。
3.4索引文件及其應(yīng)用3.4.1索引文件及分類1.索引文件索引文件:它僅由兩個字段組成,一個字段是排序的關(guān)鍵字值(也可以是一個表達式),另一個字段是每個關(guān)鍵字在原始數(shù)據(jù)表中對應(yīng)的記錄號。例,在Rsda.dbf數(shù)據(jù)表中,以編號為關(guān)鍵字段并按升序建立的索引文件的示意圖如下圖所示。1.索引文件原數(shù)據(jù)表中的順序是按輸入的順序存儲在表中的,在索引文件中,記錄是按索引關(guān)鍵字值的順序排列的,當(dāng)要查找某一編號的記錄時,VFP先在索引文件中查找該編號,找到后再根據(jù)對應(yīng)的記錄號,在數(shù)據(jù)表中將記錄指針快速移動到該記錄上。一個索引文件中可以只有一個索引,也可以有多個索引。可以包含多個索引的索引文件稱該文件為復(fù)合索引文件。在復(fù)合索引文件中,需要為每個索引指定一個索引標(biāo)識名,以便于通過索引標(biāo)識相互區(qū)分各個索引。3.4.1索引文件及分類2.索引文件的分類VFP支持傳統(tǒng)的單入口索引文件(擴展名為.IDX)和復(fù)合索引文件(擴展名.CDX),其中.IDX索引文件中只包含一個索引,而.CDX索引文件中可以包含有一個或多個索引,所以稱為復(fù)合索引文件。復(fù)合索引文件,又可分為結(jié)構(gòu)化復(fù)合索引文件和非結(jié)構(gòu)化復(fù)合索引文件兩種,其區(qū)別在于:結(jié)構(gòu)化復(fù)合索引的主文件名與數(shù)據(jù)表的主文件名相同,并隨著數(shù)據(jù)表的打開而打開,在添加、更改或刪除記錄時會自動進行維護;而非結(jié)構(gòu)化復(fù)合索引文件的主文件名與數(shù)據(jù)表文件不同,必須用命令打開。3.4.1索引文件及分類3.索引的類型(1)主索引主索引通常是數(shù)據(jù)表的關(guān)鍵字索引,作為主索引的字段稱為主關(guān)鍵字。主索引不能用在自由表中,而只能用在數(shù)據(jù)庫表中,可用于在永久關(guān)系中建立參照完整性。創(chuàng)建主索引的字段不允許有重復(fù)值,且一個表只能有一個主索引。例如,在數(shù)據(jù)表中,常用學(xué)生證號、身份證號、工作證號等作為主索引,而姓名可能有同名的情況,一般不能作為主索引。3.4.1索引文件及分類3.索引的類型(2)候選索引候選索引類似于主索引,其索引值就不能有重復(fù)值。與主索引不同的是,一個數(shù)據(jù)表中可以有多個候選索引,而且侯選索引不能用來在永久關(guān)系中建立參照完整性。(3)惟一索引惟一索引表示索引值只能取一個,如果有兩個或兩個以上的索引值,則只能取其中一個,因此,惟一索引使用時可能會隱藏一些記錄。例如,若有兩個同名的人員,將姓名字段作為惟一索引,則只能找到一個記錄,另一個記錄將不會找到。3.4.1索引文件及分類3.索引的類型(4)普通索引普通索引沒有上面各索引的限制,是允許重復(fù)索引值的索引。作為普通索引的字段,其字段值可以重復(fù),也可以作為排序的依據(jù),但因為可能有多個相同的索引值,因此查詢時會找到多個符合條件的記錄。一個數(shù)據(jù)表中可以有多個普通索引。3.4.2創(chuàng)建索引文件1.建立結(jié)構(gòu)化復(fù)合索引文件
(1)在表設(shè)計器中創(chuàng)建索引文件(2)命令方式創(chuàng)建索引【格式】INDEXON<表達式>
TAG<索引標(biāo)識名>
[FOR<條件表達式>][ASCENDING|DESCENDING][UNIQUE|CANDIDATE][ADDITIVE]【功能】建立結(jié)構(gòu)化復(fù)合索引文件。USERSDAINDEXON編號TAGNBHCANDINDEXON性別+CTOD(出生日期)TAGXBCSRQ2.建立獨立復(fù)合索引文件獨立復(fù)合索引文件的擴展名也是.CDX,但其主文件名與數(shù)據(jù)表文件名不相同,且使用時還需單獨打開。獨立復(fù)合索引文件主要用來創(chuàng)建那些使用不太頻繁的索引。獨立復(fù)合索引文件不能在表設(shè)計器中創(chuàng)建,只能用命令建立?!靖袷健縄NDEXON<表達式>TAG<索引標(biāo)識名>OF<獨立復(fù)合索引文件名>
[FOR<條件表達式>][ASCENDING|DESCENDING][UNIQUE|CANDIDATE][ADDITIVE]
如:USERSDAINDEXON編號TAGbhOFRs.cdxINDEXON姓名+STR(職務(wù)補貼)TAGxbbtOFRs.cdx3.重新建立索引文件在數(shù)據(jù)表的使用過程中,當(dāng)增刪記錄或數(shù)據(jù)表中被索引文件使用的關(guān)鍵字段改動時,結(jié)構(gòu)化復(fù)合索引會隨著數(shù)據(jù)表的打開自動打開并能及時得到更新,但如果在使用數(shù)據(jù)表時未打開相應(yīng)的獨立復(fù)合索引文件或傳統(tǒng)的單入口.IDX索引文件,則索引文件會因為無法及時更新而產(chǎn)生錯誤索引。這時須打開索引文件,并對其重新索引。重執(zhí)行一遍INDEX命令即可重新索引,更簡捷的方法是在瀏覽窗口中打開數(shù)據(jù)表,然后選擇菜單“表”、“重建建立索引”命令,或打開數(shù)據(jù)表后用REINDEX命令重新建立索引?!靖袷健縍EINDEX3.4.3索引文件的使用1.指定主控索引一個數(shù)據(jù)表可以建立多個索引文件,每個索引文件中又可能包含多個索引,而一種索引就是一種排序方式,所以,在使用索引時,必須指明哪一個索引是對數(shù)據(jù)表記錄排序起作用的,即指定主控索引。在沒有指定哪一個索引為主控索引之前,數(shù)據(jù)表的訪問順序仍然是原來的物理順序,即按記錄號的順序訪問。主控索引和主索引是完全不同的概念。主索引是用來控制數(shù)據(jù)的完整性的,而主控索引是用來指定目前記錄排列順序的。1.指定主控索引(1)指定結(jié)構(gòu)化復(fù)合索引文件中的索引為主控索引在瀏覽窗口中打開數(shù)據(jù)表(以表Rsgz.dbf為例),選擇菜單“表”、“屬性”命令,即彈出“工作區(qū)屬性”對話框,單擊“索引順序”下拉列表,選擇一個索引標(biāo)識名,瀏覽窗口中記錄的排列順序會立即根據(jù)選擇的主控索引發(fā)生變化設(shè)定主控索引后,利用LIST、DISPLAY命令輸出的記錄順序也是排序后的順序。需要特別強調(diào)的是,主控索引只是改變了記錄的輸出順序,記錄在數(shù)據(jù)庫中的順序并沒有發(fā)生變化。通過VFP的USE命令和SETORDERTO命令也可以指定主控索引。
【格式一】USE<數(shù)據(jù)表名>ORDER[TAG]<索引標(biāo)識名>[ASCENDING|DESCENDING]【格式二】SETORDERTO[[TAG]<索引標(biāo)識名>]ASCENDING|DESCENDING]【功能】指定結(jié)構(gòu)化復(fù)合索引文件的索引為主控索引。(2)指定獨立復(fù)合索引文件中的索引為主控索引對于獨立的復(fù)合索引文件或單入口的索引文件,需要用命令將其打開和關(guān)閉,只有打開要使用的獨立復(fù)合索引文件后,才能指定其中的索引為主控索引。
【格式一】USE<數(shù)據(jù)表名>ORDER[TAG]<索引標(biāo)識名>[OF<獨立復(fù)合索引文件名>][ASCENDING|DESCENDING]【格式二】
SETINDEXTO[TAG]<索引標(biāo)識名>[OF<獨立復(fù)合索引文件名>](4)關(guān)閉索引文件【格式一】SETINDEXTO【格式二】CLOSEINDEX2.使用索引快速查找記錄FIND命令和SEEK命令都可在指定主控索引的情況下進行記錄的查找操作。
SEEK<表達式>USERsdaORDERTAGbh&&打開Rsda同時指定BH為主控索引
SEEK"03001"SETORDERTOrq&&重新指定rq為主控索引
SEEKCTOD("1988.09.06")&&日期格式要與設(shè)置相同,否則會出錯
DISPLAY3.5數(shù)據(jù)表的統(tǒng)計計算3.5.1累加求和及求平均值對每個記錄的橫向求和和統(tǒng)計可以用前面介紹的操作或命令方便地給出,如REPLACE命令。對于每個記錄的縱向求和統(tǒng)計可以用累加求和命令實現(xiàn)。【格式】SUM|AVERAGE[<表達式表>][<范圍>][FOR<條件表達式>][WHILE<條件表達式>][TO<內(nèi)存變量名表>]|[TO<數(shù)組變量名>]【例】求出Rsgz.dbf中計算機系所有職工的月基本工資平均值及全年實發(fā)工資之和并顯示。
CLEARSETTALKOFFUSERsgz
AVERAGE基本工資TOpj_jbgzFORSUBSTR(編號,1,2)="03"
SUM實發(fā)工資*12TOqn_sfgzFORSUBSTR(編號,1,2)="03"?"計算機系職工的月平均工資為:",pj_jbgz?"計算機職工的全年實發(fā)工資之和為:",qn_sfgzUSESETTALKONRETURN3.5.2統(tǒng)計記錄個數(shù)
【格式】COUNT[<范圍>][FOR<條件表達式>][WHILE<條件表達式>][TO<內(nèi)存變量名表>]|[TO<數(shù)組變量名>]3.5.3分類匯總分類匯總對已經(jīng)建立了索引并且指定了主控索引的數(shù)據(jù)表,可以按關(guān)鍵字進行分類求和
【格式】TOTALON<關(guān)鍵字表達式>TO<新表名>
[FIELDS<字段名表>][<范圍>][FOR<條件表達式1>][WHILE<條件表達式2>]①當(dāng)前數(shù)據(jù)表必須是按<關(guān)鍵字表達式>索引過,并指定該索引為主控索引,以保證具有相同關(guān)鍵字值的記錄能連續(xù)訪問。②FIELDS短語給出了需分類求和的字段名,這些字段只能是數(shù)值型或貨幣型的,如果缺省,則對當(dāng)前表中的所有數(shù)值型或貨幣型字段分類求和。不管選不選FIELDS短語,新表與當(dāng)前表的結(jié)構(gòu)是一樣的。③對當(dāng)前數(shù)據(jù)表中的若干個關(guān)鍵字表達式相同的記錄,生成新表中的一條記錄。這條記錄的非數(shù)值型或非貨幣型字段取自關(guān)鍵字相同的一組記錄中首記錄的相應(yīng)字段,參加求和的字段值取自求和結(jié)果。3.6數(shù)據(jù)交換3.6.1數(shù)組與數(shù)據(jù)表的數(shù)據(jù)交換1.將數(shù)據(jù)表中的記錄數(shù)據(jù)保存到數(shù)組中【格式一】SCATTER[FIELDS<字段名表>][MEMO]TO<數(shù)組名>【格式二】COPYTOARRAY<數(shù)組名>[FIELDS<字段名表>][<范圍>][FOR<邏輯表達式>]【功能】將當(dāng)前打開的數(shù)據(jù)表中的某些記錄數(shù)據(jù)存儲在數(shù)組中。2.將數(shù)組中的數(shù)據(jù)傳遞到當(dāng)前數(shù)據(jù)表中【格式一】GATHERFROM<數(shù)組名>[FIELDS<字段名表>][MEMO]【格式二】APPENDFROMARRAY<數(shù)組名>[FOR<邏輯表達式>][FIELDS<字段名表>]【功能】將數(shù)組中各元素的數(shù)據(jù)傳遞給當(dāng)前打開的數(shù)據(jù)表中。3.6.2文件復(fù)制1.復(fù)制部分記錄或整個數(shù)據(jù)表【格式】COPYTO<表文件名>
[<范圍>]
[FOR|WHILE<邏輯表達式>][FIELDS<字段名表>][DATABASE<數(shù)據(jù)庫名>[NAME<長表名>]] [[WITH]CDX]|[[WITH]PRODUCTION] |SDF|SYLK|WK1|WKS|WR1|WRK|
XLS|XL5|DELIMITED[WITH<定界符>|WITHBLANK|……2.復(fù)制數(shù)據(jù)表的結(jié)構(gòu)【格式】COPYSTRUCTURETO<表文件名>
[FIELDS<字段名表>
[[WITH]CDX|[WITH]PRODUCTION]3.7多數(shù)據(jù)表操作VFP提供了強有力的多數(shù)據(jù)表操作能力,引入了工作區(qū)和表的別名這兩個概念。用戶可以在不同的工作區(qū)中同時打開多個表,也可以在不同的工作區(qū)打開同一個表,通過表的別名,用戶可以引用在不同工作區(qū)打開的表中的數(shù)據(jù)。3.7.1工作區(qū)的基本概念所謂“打開”數(shù)據(jù)表,實際上就是VFP在內(nèi)存中開辟了一個區(qū)域(亦稱緩沖區(qū))與磁盤上數(shù)據(jù)表之間建立起一種映射關(guān)系,使VFP通過緩沖區(qū)使用磁盤上數(shù)據(jù)表里的數(shù)據(jù),這個內(nèi)存中的緩沖區(qū)就稱為工作區(qū)。1.工作區(qū)的性質(zhì)(1)在每一個工作區(qū)中只能打開一個表,VFP最多可以開辟32767個工作區(qū),打開32767個表。允許一個表在幾個工作區(qū)中同時打開。(2)在某一時刻只能選擇一個工作區(qū)為“當(dāng)前工作區(qū)”,對其中的表進行操作。系統(tǒng)初始狀態(tài)默認1號工作區(qū)為當(dāng)前工作區(qū)。(3)每一工作區(qū)打開的數(shù)據(jù)表都有各自的記錄指針。在一般情況下,對數(shù)據(jù)表的操作只能移動當(dāng)前工作區(qū)的記錄指針。當(dāng)使得數(shù)據(jù)表之間建立臨時關(guān)系以后,另一工作區(qū)的記錄指針才能根據(jù)要求伴隨當(dāng)前工作區(qū)的記錄指針作相應(yīng)的移動。(4)內(nèi)存變量對各工作區(qū)是公用的,每一工作區(qū)的字段變量對其它各工作區(qū)也是公用的。在任意工作區(qū)都可以對其它工作區(qū)的當(dāng)前記錄進行讀、寫操作。2.工作區(qū)的編號和別名
為了標(biāo)識每一個工作區(qū),系統(tǒng)給每一工作區(qū)編號,號碼為1、2、…、32767。同時還為工作區(qū)規(guī)定了別名,其中1至10號工作區(qū)別名為A、B、…、J;11至32767號工作區(qū)別名為W11、W12、…、W32767。給數(shù)據(jù)表命名時,不要與工作區(qū)的別名沖突,否則容易引起混亂。3.?dāng)?shù)據(jù)表別名
在打開數(shù)據(jù)表的同時,可以為數(shù)據(jù)表起一個別名,這個別名也作為打開該數(shù)據(jù)表的工作區(qū)別名。[格式]
USE<數(shù)據(jù)表名>[ALIAS<別名>][IN<數(shù)值表達式>|<工作區(qū)別名>][AGAIN]說明:①若不指定工作區(qū),則默認為在當(dāng)前工作區(qū)上打開指定的數(shù)據(jù)表,并同時關(guān)閉以前在當(dāng)前工作區(qū)上打開的數(shù)據(jù)表。②ALIAS<別名>為可選項,不指定別名時,原數(shù)據(jù)表名就是它的別名。例如,當(dāng)執(zhí)行了命令“USERsdaALIASda”后,表Rsda的別名就是da;而執(zhí)行了命令“USERsda”后,則默認Rsda表的別名。③若選擇了IN0短語,表示在當(dāng)前沒有使用的編號最小工作區(qū)上打開數(shù)據(jù)表。④該命令只是在指定的工作區(qū)上打開數(shù)據(jù)表,并不能改變當(dāng)前工作區(qū)。改變當(dāng)前工作需要單獨的命令。⑤一旦一個工作區(qū)上打開了一個數(shù)據(jù)表,數(shù)據(jù)表就和該工作區(qū)建立起對應(yīng)關(guān)系,所以打開數(shù)據(jù)表后可以用數(shù)據(jù)表的別名來代替工作區(qū)別名。3.7.2工作區(qū)的選擇和使用1.選擇工作區(qū)(1)利用“數(shù)據(jù)工作區(qū)”窗口選擇工作區(qū)選擇[窗口]菜單中的[數(shù)據(jù)工作期]命令,或單擊常用工具欄中的[數(shù)據(jù)工作期窗口]按鈕,打開[數(shù)據(jù)工作期]窗口。這時默認當(dāng)前工作區(qū)為1。單擊[打開]按鈕選擇一個數(shù)據(jù)表打開。若再次單擊[打開]按鈕,可以依次在其它工作區(qū)打開其它數(shù)據(jù)表,并且可以用顯示的別名選擇工作區(qū)。在數(shù)據(jù)工作期窗口還可以瀏覽各工作區(qū)打開的數(shù)據(jù)表,還可以關(guān)閉他們。
(2)利用SELECT命令選擇工作區(qū)[格式]
SELECT<工作區(qū)號>|<工作區(qū)別名>|<表別名>說明:選擇當(dāng)前工作區(qū),選擇的工作區(qū)中可以是在前面已經(jīng)打開了數(shù)據(jù)表,也可以是未曾打開表。例:USERsda&&默認在1號工作區(qū)打開Rsda.dbf
SELECTd&&選擇4號工作區(qū)為當(dāng)前工作區(qū)
USERsgl&&在當(dāng)前(4號)工作區(qū)打開Rsgl.dbf
USERsgzALIASgz&&在當(dāng)前4號工作區(qū)打開Rsgz,同時關(guān)閉Rsgl
SELECT1&&選擇1區(qū)為當(dāng)前工作區(qū)
LIST&&顯示當(dāng)前(1號)工作區(qū)數(shù)據(jù)表(Rsda)的記錄
SELECTgz&&或SELE4,SELEd,但不能SELERsgz
LIST&&顯示Rsgz的記錄
SELERsda&&是否可以?為什幺?
LIST
?SELECT()&&給出當(dāng)前工作區(qū)號函數(shù),返回當(dāng)前工作區(qū)號
USERsglIN10
?SELECT()
USE&&關(guān)閉當(dāng)前工作區(qū)上的數(shù)據(jù)表
USERsglIN0
?SELECT()2.在不同工作區(qū)打開同一個數(shù)據(jù)表例:SELE1USERsdaUSERsdaALIASdaIN3AGAINSELE2USERsdaAGAIN3.使用非當(dāng)前工作區(qū)中表的數(shù)據(jù)方法是在非當(dāng)前工作區(qū)的表的字段名前加注工作區(qū)別名或表的別名。格式為:<別名>-><字段名>
或<別名>.<字段名>注意,這里的符號“->”是“-”和“>”兩個(均為半角)符號復(fù)合而成。例:SELE2USERsgl&&未指定主索引順序,指向1號記錄
USERsdaIN3SELE3LOCATEFOR姓名=b->姓名&&指向同個人
DISPLY部門名,姓名,出生日期,c.工作日期
顯示結(jié)果如下:記錄號部門名姓名出生日期C->工作日期
1機關(guān)韓偉東1960.10.101985.09.04在VFP中,表之間關(guān)聯(lián)有臨時關(guān)系和永久關(guān)系兩種關(guān)聯(lián)
1.設(shè)置表的臨時關(guān)系
(1)利用數(shù)據(jù)工作期窗口建立表的臨時關(guān)系3.7.3數(shù)據(jù)表的關(guān)聯(lián)(2)利用命令建立表之間的臨時關(guān)系
【格式】SETRELATIONTO[<關(guān)鍵字表達式1>|<數(shù)值表達式1>
INTO<工作區(qū)別名1>|<子表別名1>
[,<關(guān)鍵字表達式2>|<數(shù)值表達式2>
INTO<工作區(qū)別名2>|<表別名2>…][ADDITIVE]]說明:①必須選擇父表所在工作區(qū)為當(dāng)前工作區(qū),然后再使用本命令與非當(dāng)前工作區(qū)中的數(shù)據(jù)表(子表)建立關(guān)聯(lián)。②選ADDITIVE項可使父數(shù)據(jù)表與子表建立關(guān)聯(lián)時,原先已存在的關(guān)聯(lián)仍然保留。如果不選用該項,則建立新關(guān)聯(lián)時將取消原有關(guān)聯(lián)。③子表必須按關(guān)鍵字表達式中的關(guān)鍵字段建立索引,且被指定為主控索引。若選擇數(shù)值表達式,則兩個表是按照記錄號相聯(lián)系,此時子表不要求索引。通常情況下,用兩個表都具有的相同字段作為建立臨時關(guān)系的關(guān)鍵字表達式。④不選任何可選項則取消已與當(dāng)前表建立的關(guān)聯(lián)。父表可以與多個子表建立關(guān)聯(lián)。⑤建立臨時關(guān)系以后,父表和子表記錄指針的移動的規(guī)則是:父表指針每移動到一個記錄,子表則按關(guān)鍵字表達式的值進行索引查找,并將記錄指針定位在相應(yīng)記錄上。若子表中沒有記錄和父表的當(dāng)前記錄相關(guān)聯(lián),子表的記錄指針將指向EOF;若子表中有多個記錄和父表的當(dāng)前記錄相關(guān)聯(lián),則子表的記錄指針將指向第一個相匹配的記錄?!纠磕硶暧幸粋€圖書庫存數(shù)據(jù)表Tskc.dbf,存放有該書店所有的圖書信息,另有一個圖書調(diào)價數(shù)據(jù)表tstj.dbf,其中存放著圖書調(diào)價后的新價格.
現(xiàn)要求編制程序,用Tstj.dbf中的單價數(shù)據(jù)更新Tskc.dbf中的單價數(shù)據(jù)。假設(shè)Tstj.dbf數(shù)據(jù)表中的記錄和Tskc.dbf中的記錄是一一對應(yīng)的,即凡是出現(xiàn)在Tskc.dbf中圖書都調(diào)價了,則可用如下的程序:
SETTALKOFFSETSAFETYOFFUSETSKCSELECT2USETSTJINDEXON圖書編號TAGTSBHSETORDERTOTSGHSELECT1SETRELATIONTO圖書編號INTOBREPLACEALL單價withTSTJ.單價
CLOSEALLSETSAFETYONSETTALKONRETURN2.設(shè)置表間的永久關(guān)系永久關(guān)系是存儲在數(shù)據(jù)庫文件(.DBC)中的數(shù)據(jù)表之間的關(guān)系,它作為數(shù)據(jù)庫的組成部分一直保留。它不像臨時關(guān)系每次打開數(shù)據(jù)表時都要重新建立。數(shù)據(jù)庫中的數(shù)據(jù)表建立永久關(guān)系后,借助這種關(guān)系不僅僅從當(dāng)前選定的表中訪問數(shù)據(jù),而且還可以訪問相關(guān)數(shù)據(jù)表中的數(shù)據(jù)。當(dāng)在
溫馨提示
- 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)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 人力資源部招聘考試題集含答案
- 2025內(nèi)蒙古鄂爾多斯市交通投資有限公司多種經(jīng)營分公司招聘11人筆試參考題庫附帶答案詳解(3卷)
- 2025中國石油化工股份有限公司安慶分公司招聘20人筆試參考題庫附帶答案詳解(3卷)
- 青島市2024自然資源部第一海洋研究所勞務(wù)派遣崗位招聘1人(山東青島市)筆試歷年參考題庫典型考點附帶答案詳解(3卷合一)
- 鄂爾多斯市2024內(nèi)蒙古鄂爾多斯市融媒體中心引進15名緊缺專業(yè)人才筆試歷年參考題庫典型考點附帶答案詳解(3卷合一)
- 貴州省2024貴州產(chǎn)業(yè)技術(shù)發(fā)展研究院第十二屆貴州人才博覽會引進人才筆試歷年參考題庫典型考點附帶答案詳解(3卷合一)
- 石家莊市2024中共西柏坡管理局工作委員會黨校選聘事業(yè)單位人員8人河北石家筆試歷年參考題庫典型考點附帶答案詳解(3卷合一)
- 湖南省2024湖南長沙市望城區(qū)事業(yè)碩博人才引進16人筆試歷年參考題庫典型考點附帶答案詳解(3卷合一)
- 德州市2024山東德州日報社招聘備案制管理人員筆試歷年參考題庫典型考點附帶答案詳解(3卷合一)
- 宣州區(qū)2024年安徽宣城宣州區(qū)事業(yè)單位招聘52人筆試歷年參考題庫典型考點附帶答案詳解(3卷合一)
- vte的預(yù)防及護理課件
- 油煙清洗報告【范本模板】
- T-CPIA 0054-2023 光伏發(fā)電系統(tǒng)用柔性鋁合金電纜
- JC-T 424-2005 耐酸耐溫磚行業(yè)標(biāo)準
- 懷念戰(zhàn)友混聲四部合唱簡譜
- 實驗針灸學(xué)-實驗針灸學(xué)研究程序與方法
- 倉庫工作人員職責(zé)培訓(xùn)課件
- 新教科版四上科學(xué)2.2《呼吸與健康生活》優(yōu)質(zhì)課件
- 綠盾加密軟件技術(shù)白皮書
- GB/T 7600-2014運行中變壓器油和汽輪機油水分含量測定法(庫侖法)
- 比較文學(xué)概論馬工程課件 第5章
評論
0/150
提交評論