《表的創(chuàng)建和使用》PPT課件.ppt_第1頁(yè)
《表的創(chuàng)建和使用》PPT課件.ppt_第2頁(yè)
《表的創(chuàng)建和使用》PPT課件.ppt_第3頁(yè)
《表的創(chuàng)建和使用》PPT課件.ppt_第4頁(yè)
《表的創(chuàng)建和使用》PPT課件.ppt_第5頁(yè)
已閱讀5頁(yè),還剩116頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、表 的 創(chuàng) 建 和 使 用,3.1 表結(jié)構(gòu) 表 結(jié) 構(gòu) 的 創(chuàng) 建 和 修 改 3.2 表 的 打開(kāi)與關(guān)閉 3.3 記 錄 的 處 理 3.4 表 的 索 引 3.5 有關(guān)表操作的常用函數(shù),第三章,學(xué)生表中有8個(gè)記錄,原物理順序:,以xh(學(xué)號(hào))字段作為索引:,以XM(姓名)字段作為索引:(漢字以拼音字母為準(zhǔn)),結(jié)束放映?,YES(是),NO(否),表 的 概 念 字 段 的 基 本 屬 性,表結(jié)構(gòu)的創(chuàng)建和修改,引 言 表 結(jié) 構(gòu) 的 創(chuàng) 建 使用表向?qū)?chuàng)建表結(jié)構(gòu) 使用表設(shè)計(jì)器創(chuàng)建表結(jié)構(gòu) 使用CREATE TABLE命令創(chuàng)建表結(jié)構(gòu) 表 結(jié) 構(gòu) 的 修 改 在表設(shè)計(jì)器中修改表結(jié)構(gòu) 用ALTER

2、TABLE命令修改表結(jié)構(gòu),記錄的處理,記錄的輸入 記錄的瀏覽 記錄的定位 記錄的修改,記錄的刪除與恢復(fù) 篩選記錄與字段 記錄的復(fù)制 數(shù)據(jù)的統(tǒng)計(jì),表的使用,工作區(qū)與表的別名 在工作區(qū)中打開(kāi)和關(guān)閉表 打開(kāi)和關(guān)閉表的操作方法(系統(tǒng)自動(dòng)分配工作區(qū)) 選擇工作區(qū)打開(kāi)和關(guān)閉表(用戶選擇工作區(qū)) 表的獨(dú)占與共享使用 使用表的其他問(wèn)題,表的索引,索引的相關(guān)概念 記錄的順序與索引 索引的分類 根據(jù)內(nèi)容:索引的類型 根據(jù)文件:索引文件的類型 創(chuàng)建索引文件 創(chuàng)建結(jié)構(gòu)復(fù)合索引 索引的修改與刪除,索引的使用與維護(hù) 設(shè)置主控索引 建立“多字段”索引 利用索引快速定位記錄,學(xué)校學(xué)生情況表,表 的 概 念,學(xué)校教師情況表,表

3、 的 概 念,表 的 概 念 VFP中的表(Table)是指存放在磁盤(pán)文件中的一張二維表。一張表保存為一個(gè)表文件(.DBF), 表有時(shí)也叫數(shù)據(jù)表。 表中的一列稱為字段(Field)。字段規(guī)定了數(shù)據(jù)的特征。例如,學(xué)生表中學(xué)號(hào)、姓名、性別和系名就是字段。 表的一行叫做一個(gè)記錄(Record)。記錄是多個(gè)字段的集合。同一個(gè)表的每一個(gè)記錄都有相同的字段。 表的記錄必須用一個(gè)公共的結(jié)構(gòu)來(lái)存儲(chǔ),這個(gè)公共的結(jié)構(gòu)就是表結(jié)構(gòu)。 建立表的步驟是:先設(shè)計(jì)表的結(jié)構(gòu),再在VFP中使用命令或表設(shè)計(jì)器建立表的結(jié)構(gòu)并保存為表文件,然后再輸入記錄。,字段的基本屬性(1) 字段名(Field Name) 每一個(gè)字段必須取一個(gè)名字

4、,稱為“字段名”。用以標(biāo)識(shí)該字段。字段名一般要與其對(duì)應(yīng)的實(shí)體的屬性名相同或相近。例如,學(xué)生表的“姓名”列的字段名可以取為“姓名”或“xingming”或“XM”或“name”等。字段名的命名規(guī)則與內(nèi)存變量的命名規(guī)則一樣。在中文版的VFP 中,允許使用漢字作為字段名。 字段的數(shù)據(jù)類型(Type) 表中的每個(gè)字段都有特定的數(shù)據(jù)類型。不同的數(shù)據(jù)類型的表示和運(yùn)算的方法不一樣。指定數(shù)據(jù)類型是為了方便VFP處理這些數(shù)據(jù)。VFP提供了13種字段的數(shù)據(jù)類型。,字段的基本屬性(2) 字段寬度(Width) 字段寬度是指該字段所能容納數(shù)據(jù)的最大字節(jié)數(shù),字段寬度必須能足夠容納可能的最長(zhǎng)的數(shù)據(jù)信息。其中備注型和通用型

5、字段寬度為4字節(jié),包含的是引用信息,指向真正的備注內(nèi)容。備注字段的數(shù)據(jù)保存在單獨(dú)文件中,文件名與表文件名相同,并且擴(kuò)展名為.FPT。另外一些數(shù)據(jù)類型的寬度是固定的。如貨幣型、日期型、日期時(shí)間型和雙精度型為8字節(jié);整型、備注型、備注型(二進(jìn)制)和通用型為4字節(jié);邏輯型為1字節(jié)。 小數(shù)位數(shù)(Decimal) 對(duì)于數(shù)值型、浮點(diǎn)型和雙精度型的字段還可以指定其小數(shù)的位數(shù)。這些數(shù)據(jù)類型字段的寬度,實(shí)際上是整數(shù)部分的寬度+小數(shù)點(diǎn)1位+小數(shù)位數(shù)寬度。如果小數(shù)位數(shù)不為0,則小數(shù)位數(shù)必須比整個(gè)字段寬度至少小2。,字段的基本屬性(3) 空值支持(Null) 空值是用來(lái)指示記錄中的一個(gè)字段“有或沒(méi)有”數(shù)據(jù)的標(biāo)識(shí)。在V

6、FP出現(xiàn)之前,字段中“有沒(méi)有”包含數(shù)據(jù)是難以區(qū)分的。例如,如果要添加一個(gè)空白的記錄但又不想在這些字段中插入數(shù)據(jù),那么,對(duì)于數(shù)值型字段而言,將把它當(dāng)作包含一個(gè)零值對(duì)待。然而,由于0是一個(gè)值(正如1或3.14一樣),如果這個(gè)字段正好有一個(gè)為0的值而被當(dāng)作沒(méi)有值對(duì)待是不正確的。對(duì)于字符和邏輯數(shù)據(jù)類型而言,類似的情形也會(huì)發(fā)生:不包含數(shù)據(jù)的邏輯型字段被指定為一個(gè)邏輯“假”值,即在不知道是“真”是“假”的情況下,被說(shuō)成是“假”。 VFP通過(guò)提供能夠指定一個(gè)字段是包含NULL(空)還是包含一個(gè)值的功能,使這個(gè)問(wèn)題得以解決。這種指定是作為字段定義的一個(gè)部分,如象定義名稱和類型一樣。 NULL不是一種數(shù)據(jù)類型或

7、一個(gè)值,確切地講,它是用來(lái)指示數(shù)據(jù)存在或不存在的一種屬性。通過(guò)使用NULL ,就有了一個(gè)判定某個(gè)字段是否具有一個(gè)值的辦法。,通用型,G,OLE,圖片或聲音,VFP 中 字 段 的 數(shù) 據(jù) 類 型,引 言(1) 在VFP中,如何來(lái)收集和存儲(chǔ)數(shù)據(jù)呢?VFP 把數(shù)據(jù)存儲(chǔ)在表文件里。表文件可以屬于某個(gè)數(shù)據(jù)庫(kù)(與數(shù)據(jù)庫(kù)相關(guān)聯(lián)的表),叫數(shù)據(jù)庫(kù)表(簡(jiǎn)稱“庫(kù)表”),表文件也可以與數(shù)據(jù)庫(kù)無(wú)關(guān)聯(lián),叫自由表。自由表具有的特性數(shù)據(jù)庫(kù)表都有,但數(shù)據(jù)庫(kù)表還可以具有其他功能。 本節(jié)首先介紹自由表的創(chuàng)建過(guò)程與功能。 在創(chuàng)建表結(jié)構(gòu)時(shí)應(yīng)當(dāng)注意以下幾點(diǎn): 1. 字段的數(shù)據(jù)類型必須與字段的存儲(chǔ)內(nèi)容相匹配。 每一個(gè)字段都有特定的數(shù)據(jù)類

8、型。 2. 為字段設(shè)置足夠的寬度來(lái)容納信息。字符型字段的長(zhǎng)度最大為254,數(shù)值型、浮點(diǎn)型字段的長(zhǎng)度最大為20,其他類型字段的長(zhǎng)度由系統(tǒng)給定。,引 言(2),3. 為數(shù)值型、浮點(diǎn)型字段選擇適當(dāng)?shù)男?shù)位數(shù)。 4. 若想讓字段接受.NULL.值,則在表設(shè)計(jì)器對(duì)話框中選中NULL,或在CREATE TABLE-SQL命令中使用NULL關(guān)鍵字。 5. 自由表的字段名本身最多只能取10個(gè)字符,且必須以字母、下劃線或漢字開(kāi)頭。 6. 表中允許的字段個(gè)數(shù)最大為255;若表中有字段使用了NULL值則允許的字段個(gè)數(shù)最大為254。 7.若表結(jié)構(gòu)中定義了備注型字段,則會(huì)產(chǎn)生一個(gè)主名與表名相同、擴(kuò)展名為.FPT的備注文

9、件。此文件不能被刪除。否則,表文件將無(wú)法打開(kāi)。 8. 創(chuàng)建自由表和數(shù)據(jù)庫(kù)表結(jié)構(gòu)的方法和步驟相似。,使用表設(shè)計(jì)器創(chuàng)建表結(jié)構(gòu)(1),具體步驟: 1. (1) 在VFP的主 窗口中,選擇“文件”菜 單中的“新建”或點(diǎn)擊“常 用”工具欄上的“新建”按 鈕,均可打開(kāi)如右圖所 示的“新建”對(duì)話框。 在“新建”對(duì)話框的文 件類型選擇框中點(diǎn)擊“表” 選項(xiàng),然后點(diǎn)擊“新建文 件”按鈕。,使用表設(shè)計(jì)器創(chuàng)建表結(jié)構(gòu)(2),(2) 若要直接在某個(gè)項(xiàng)目文件中創(chuàng)建自由表,可先打開(kāi)此文件,在“項(xiàng)目管理器”中選擇“數(shù)據(jù)”選項(xiàng)卡,然后再選擇“自由表”,點(diǎn)擊“項(xiàng)目管理 器”中的“新建”按鈕,打開(kāi)如右圖所示的“新建表” 對(duì)話框。 在

10、“新建表”對(duì)話框 中點(diǎn)擊“新表”按鈕。,使用表設(shè)計(jì)器創(chuàng)建表結(jié)構(gòu)(3),2. 經(jīng)過(guò)步驟1,屏幕上會(huì)出現(xiàn)“創(chuàng)建”對(duì)話框,如下圖所示。在其中指定表的保存位置、表的名稱并選定保存類型之后,單擊“保存”按鈕。,使用表設(shè)計(jì)器創(chuàng)建表結(jié)構(gòu)(4),3. 經(jīng)過(guò)步驟2,VFP將激活表設(shè)計(jì)器,在屏幕上彈出表設(shè)計(jì)器的對(duì)話框(如圖所示),其中共有3個(gè)選項(xiàng)卡,即、和選項(xiàng)卡,分別用于不同設(shè)置。,使用表設(shè)計(jì)器創(chuàng)建表結(jié)構(gòu)(5),4. 經(jīng)過(guò)步驟3,再單擊標(biāo)簽,激活選項(xiàng)卡,輸入相應(yīng)的字段名、字段類型、字段寬度和小數(shù)位數(shù);若允許字段使用.NULL.值,點(diǎn)擊NULL。,使用表設(shè)計(jì)器創(chuàng)建表結(jié)構(gòu)(6),5. 經(jīng)過(guò)步驟4,單擊“確定”按鈕,此

11、時(shí)會(huì)出現(xiàn)下面對(duì)話框,單擊“是(Y)”,則在完成表結(jié)構(gòu)創(chuàng)建的 同時(shí),打開(kāi)表的“瀏覽”窗口,進(jìn)入記錄的輸入狀態(tài);若單擊“否(N)”,則僅完成表結(jié)構(gòu)的創(chuàng)建,產(chǎn)生一個(gè)只有結(jié)構(gòu)而無(wú)記錄的空表。,使用CREATE TABLE-SQL命令 創(chuàng)建自由表(1),一、命令格式如下: CREATE TABLE 語(yǔ)法:CERATE TABLE|DBFFREE (字段名1 字段類型(字段長(zhǎng)度,小數(shù)位數(shù)) NULL|NOT NULL ,字段名2 字段類型(字段長(zhǎng)度,小數(shù)位數(shù) NULL|NOT NULL,) 功能:創(chuàng)建表(自由表)的結(jié)構(gòu) 說(shuō)明:(1)FREE 子句表示創(chuàng)建的表是自由表,不被添加 到數(shù)據(jù)庫(kù)中。創(chuàng)建自由表時(shí),若

12、沒(méi)打開(kāi)任何數(shù) 據(jù)庫(kù),則該關(guān)鍵字可省略。 (2)用本命令創(chuàng)建的表,將自動(dòng)處于打開(kāi)狀態(tài)。,使用CREATE TABLE-SQL命令 創(chuàng)建自由表(2),二、例題分析: 用CREATE TABLE-SQL命令創(chuàng)建職工情況表(ZGQK.DBF)。 解: CREATE TABLE ZGQK FREE (GH C(6),XM C(8) NOT NULL,; XB C(2), HF L,CSRQ D NULL,JBGZ N(7,2),JL M) 命令中各字段的含義如下: GH-工號(hào)、字符型、長(zhǎng)度為6;XM-姓名、字符型、長(zhǎng)度為8; XB-性別、字符型、長(zhǎng)度為2;HF-婚否、邏輯型; CSRQ-出生日期、日期型

13、;JBGZ-基本工資、數(shù)值型、長(zhǎng)度為7、小數(shù)位數(shù)為2;JL-簡(jiǎn)歷、備注型。 其中,XM字段不允許NULL值,CSRQ字段允許NULL值。,在表設(shè)計(jì)器中修改表結(jié)構(gòu)(1),1.如果表已存在于一個(gè)項(xiàng)目中,則可在項(xiàng)目管理器中先選定要修改的表,然后再單擊其中的“修改”按鈕便會(huì)打開(kāi)表設(shè)計(jì)器進(jìn)行表結(jié)構(gòu)的修改。 2.使用MODIFY STRUCTURE命令打開(kāi)表設(shè)計(jì)器并修改一個(gè)表的結(jié)構(gòu)。在使用該命令前,首先應(yīng)以獨(dú)占方式(EXCLUSIVE)打開(kāi)要修改的表。例如,可以在命令窗口中使用以下命令修改XS表的結(jié)構(gòu): USE XS EXCLUSIVE ASCENDING|DESCENDINGIN 工作區(qū)|別名 參數(shù):表

14、達(dá)式指定SEEK搜索的索引關(guān)鍵字,利用索引快速查找記錄(1),利用索引快速查找記錄(2),說(shuō)明:SEEK命令只能在索引過(guò)的表中使用,并且只能搜索索引關(guān)鍵字。 如果SEEK找到了與索引關(guān)鍵字相匹配的記錄,則RECNO()函數(shù)返回匹配記錄的記錄號(hào);FOUND()函數(shù)返回“真”(.T.);EOF()函數(shù)返回“假”(.F.)。 如果找不到相匹配的關(guān)鍵字,則RECNO()將返回表中記錄的個(gè)數(shù)加1;FOUND()返回“假”(.F.);EOF()返回“真”(.T.)。 例如,在XS表中要定位到學(xué)號(hào)為960102的記錄上,則當(dāng)前主控索引的索引關(guān)鍵字必須是XH或是以XH開(kāi)頭。 USE xs ORDER TAG

15、xh SEEK 960102,利用索引快速查找記錄(3),2.SEEK()函數(shù) SEEK()函數(shù)同先執(zhí)行SEEK命令然后執(zhí)行FOUND()函數(shù)的結(jié)果一樣。 語(yǔ)法:SEEK (表達(dá)式 ,工作區(qū)|別名 , Tag名) 3.索引的其他用法 索引除了可以指定表記錄的訪問(wèn)順序和進(jìn)行快速定位以外,還可以利用索引建立表之間的永久關(guān)系和臨時(shí)關(guān)系。有關(guān)內(nèi)容將在下一章中介紹。,有關(guān)表操作的幾個(gè)函數(shù)(1),(1)SELECT() 語(yǔ)法:SELECT(0|1|別名) SELECT()函數(shù)用來(lái)測(cè)試工作區(qū)號(hào)。 其中:0用于返回當(dāng)前工作區(qū)號(hào);1表示返回當(dāng)前未被使用的最大工作區(qū)號(hào);別名用于返回該表所在的工作區(qū)號(hào)。使用別名必須

16、加引號(hào)。 (2)USED() 語(yǔ)法:USED(工作區(qū) | 別名) USED()函數(shù)用于測(cè)試一張表的別名是否已被使用,或在指定的工作區(qū)中是否有表打開(kāi)。 (3)ALIAS() ALIAS( 工作區(qū)) ALIAS函數(shù)用于返回當(dāng)前或指定工作區(qū)中表的別名。,有關(guān)表操作的幾個(gè)函數(shù)(2),(4)FIELD() 語(yǔ)法:FIELD(字段序號(hào),工作區(qū) |別名) 本函數(shù)用于返回已打開(kāi)表的指定序號(hào)的字段名。 (5)FCOUNT() 語(yǔ)法:FCOUNT( 工作區(qū) |別名) 本函數(shù)用于返回已打開(kāi)表的字段個(gè)數(shù)。 (6)DELETED() 語(yǔ)法:DELETED() 本函數(shù)用于測(cè)試表的當(dāng)前記錄是否帶有刪除標(biāo)記。 如果帶有則返回

17、.T.,否則返回.f.。,建 立 “多 字 段” 索 引(1),索引表達(dá)式可以由單字段構(gòu)成,也可以是兩個(gè)以上字段的組合。現(xiàn)舉例說(shuō)明建立“多字段索引”的方法。 例題分析: 已知XSCJ表的結(jié)構(gòu)如下: 字段名 字段類型 字段長(zhǎng)度 小數(shù)位數(shù) XH C 8 XM C 8 XB L 1 CSRQ D 8 XIMING C 18 YWCJ N 5 1 SXCJ N 5 1 WYCJ N 5 1 JL M 4,建 立 “多 字 段” 索 引(2),各字段名的含義如下: XH-學(xué)號(hào);XM-姓名;XB-性別;CSRQ-出生日期; XIMING-系名;YWCJ-語(yǔ)文成績(jī);SXCJ-數(shù)學(xué)成績(jī); WYCJ-外語(yǔ)成績(jī);

18、JL-簡(jiǎn)歷。 試按以下要求用命令方式建立結(jié)構(gòu)復(fù)合索引: (1)將XS表中的記錄先以XIMING排序,XIMING相同的 再以XM排序,XM相同的再以XH排序,索引標(biāo)識(shí)名為XXX1。 (2)將XS表中的記錄先以XM排序,XM相同的再以SXCJ 排序;SXCJ相同的再以CSRQ排序,索引標(biāo)識(shí)名為XXX2。 (3)將XS表中的記錄以學(xué)生的總成績(jī)的降序排序,索 引標(biāo)識(shí)名為XXX3。 解: (1) INDEX ON XIMING+XM+XH TAG XXX1 (2) INDEX ON XM+STR(SXCJ,5,1)+DTOC(CSRQ); TAG XXX2 (3) INDEX ON YWCJ+SXCJ

19、+WYCJ TAG XXX3 DESC,記 錄 的 瀏 覽(1),查看表中記錄內(nèi)容的方法有以下幾種: 一、使用“瀏覽”窗口 先將要查看的表打開(kāi)并選定為當(dāng)前表,然后從“顯示”菜單中選擇或在“數(shù)據(jù)工作期”窗口中點(diǎn)擊“瀏覽”按鈕,均可打開(kāi)“瀏覽”窗口。,記 錄 的 瀏 覽(2),“瀏覽”窗口顯示活動(dòng)表中的記錄。在“瀏覽”窗口中瀏覽一個(gè)表時(shí),可以用兩種方式查看記錄:瀏覽和編輯??梢栽凇帮@示”菜單中選擇或切換查看方式(必須先打開(kāi)表的“瀏覽”窗口)。,記 錄 的 瀏 覽(3),二、使用BROWSE命令 BROWSE命令用來(lái)打開(kāi)表的瀏覽窗口。BROWSE命令可以簡(jiǎn)單到只有BROWSE一個(gè)詞,也可以復(fù)雜到具有

20、幾十個(gè)選項(xiàng),用以定制瀏覽窗口的外觀、控制記錄的編輯和篩選瀏覽的記錄、字段等。對(duì)此,不必一一究其用法,掌握幾個(gè)常用的選項(xiàng)即可。 語(yǔ)法:BROWSE FIELDS FOR 三、在VFP主窗口中顯示記錄 除了以上兩種方法外,還可以用LIST和DISPLAY命令將表中記錄顯示在系統(tǒng)主窗口中。 語(yǔ)法:LIST FIELDS 范圍 FOR OFF DISPLAY FIELDS 范圍 FOR OFF 說(shuō)明:二者的區(qū)別是:前者的范圍選項(xiàng)的默認(rèn)值為所有記錄(ALL),后者為下一條記錄(NEXT 1);前者在窗口顯示滿后,將不停頓的連續(xù)顯示,后者會(huì)做一停頓,等待用戶按任意鍵繼續(xù)顯示。,記 錄 的 瀏 覽(4),四

21、、例題分析 (1)用BROWSE命令顯示JS表中所有男教師的GH、XM、XB、ZC等字段的內(nèi)容(如圖所示)。,記 錄 的 瀏 覽(5),(2)在VFP主窗口中顯示JS表中所有男教師的GH、XM、 XB、ZC等字段的內(nèi)容(如圖所示)。,記 錄 的 定 位(1),1.記錄指針標(biāo)志 當(dāng)一個(gè)表文件被打開(kāi)后,系統(tǒng)中自動(dòng)生成三個(gè)控制標(biāo)志: 記錄的開(kāi)始標(biāo)志、記錄指針標(biāo)志、記錄的結(jié)束標(biāo)志。當(dāng)向表中輸入數(shù)據(jù)時(shí),VFP為每個(gè)記錄按輸入順序指定了“記錄號(hào)”。第一個(gè)輸入的記錄的記錄號(hào)是1,依次類推。(如圖),記 錄 的 定 位(2),記錄指針是一個(gè)非常重要的概念。它是VFP系統(tǒng)內(nèi)部的一個(gè)指示器,指向表中的記錄,每當(dāng)打

22、開(kāi)一個(gè)表文件時(shí),記錄指針總是指向第一個(gè)記錄。記錄指針指向的那個(gè)記錄稱為當(dāng)前記錄??梢詫⒂涗浿羔樌斫鉃楸4娈?dāng)前記錄號(hào)的變量。在進(jìn)行數(shù)據(jù)處理時(shí),經(jīng)常要移動(dòng)記錄指針,使記錄指針指向用戶所需要操作的那個(gè)記錄,這個(gè)過(guò)程即是記錄的定位。測(cè)試當(dāng)前記錄指針的值可用函數(shù)RECNO()進(jìn)行測(cè)試。 記錄的開(kāi)始標(biāo)志介于表結(jié)構(gòu)和記錄之間,前面是表結(jié)構(gòu),后面是記錄。 記錄的結(jié)束標(biāo)志是整個(gè)表記錄結(jié)束的標(biāo)志。記錄的開(kāi)始標(biāo)志可用函數(shù)BOF()進(jìn)行測(cè)試。當(dāng)記錄指針指向記錄的開(kāi)始標(biāo)志時(shí),其值為.T.,否則為.F.。記錄結(jié)束標(biāo)志可用函數(shù)EOF()進(jìn)行測(cè)試。當(dāng)記錄指針指向記錄結(jié)束標(biāo)志時(shí),其值為.T.,否則為.F.。,記 錄 的 定 位

23、(3),2. 記錄的定位方式 記錄指針的定位方式可分為:記錄指針的絕對(duì)定位、記錄指針的相對(duì)定位和條件定位。 指針的絕對(duì)定位是指把指針移動(dòng)到指定的位置。如指定記錄號(hào)的記錄、第一個(gè)記錄或最后一個(gè)記錄。,記 錄 的 定 位(4),指針的相對(duì)定位是指把指針從當(dāng)前位置開(kāi)始,相對(duì)于當(dāng)前記錄向前或向后移動(dòng)若干個(gè)記錄位置。指針的相對(duì)定位與定位前指針的位置相關(guān)。 條件定位是指按照一定的條件自動(dòng)地在整個(gè)表或表的某個(gè)指定范圍中查找符合該條件的記錄,如果找到符合條件的記錄,則把指針定位到該記錄上,否則,指針將定位到整個(gè)表或表的指定范圍的末尾。,3. 記錄定位的實(shí)現(xiàn) (1)通過(guò)界面操作方式定位 在“表”菜單中的“轉(zhuǎn)到記

24、錄”子菜單項(xiàng)中可以實(shí)現(xiàn)不同方式的 定位: “記錄號(hào)(R)”:實(shí)現(xiàn)絕對(duì)定位。 “定位(L)”:實(shí)現(xiàn)條件定位。需要在“定位記錄”對(duì)話框 中輸入查找范圍、定位條件。按“定位”按鈕實(shí)現(xiàn)定位。,記 錄 的 定 位(5),在“作用范圍” 下拉列表中選擇范圍。其中有四個(gè)選項(xiàng): “All”:表中的全部記錄; “Next”:從當(dāng)前記錄開(kāi)始的n個(gè)記錄,個(gè)數(shù)在其右邊的文本框中輸入; “Record”:指定的記錄,記錄號(hào)在其右邊的文本框中輸入; “Rest”:當(dāng)前記錄后的所有記錄。 在“For”文本框中輸入條件表達(dá)式。 例如,在“作用范圍” 下拉列表中選擇“All”,在“For”文本框中輸入條件表達(dá)式:XM=高山,單

25、擊“定位”按鈕,將在所有記錄中查找姓名為“高山”的記錄。如果找到,則把指針定位在第一個(gè)符合條件的記錄上,否則,指針定位在記錄結(jié)束標(biāo)志上。 (2)使用命令定位 記錄指針的絕對(duì)定位命令GO或GOTO,見(jiàn)下表:,記 錄 的 定 位(6),記錄指針的相對(duì)定位命令SKIP 語(yǔ)法:SKIP nRecords 參數(shù):nRecords:指定記錄指針需要移動(dòng)的記錄數(shù)。如果nRecords0,記錄指針將向文件尾移動(dòng)nRecords個(gè)記錄;如果nRecords0,記錄指針將向文件頭移動(dòng)nRecords個(gè)記錄;如果NRecords省略,則命令等價(jià)于SKIP 1。,記 錄 的 定 位(7),說(shuō)明: 如果從第一個(gè)記錄向上

26、移動(dòng)一個(gè)記錄,指針將指向記錄起始標(biāo)志,BOF()函數(shù)將返回.T.,RECNO()函數(shù)返回值為1。如果再執(zhí)行SKIP 1命令,系統(tǒng)將顯示出錯(cuò)信息:已到文件頭。此時(shí),記錄指針仍然指向記錄起始標(biāo)志。 如果從最后一個(gè)記錄向下移動(dòng)一個(gè)記錄,指針將指向記錄結(jié)束標(biāo)志,EOF()函數(shù)將返回.T.,RECNO()函數(shù)返回值為記錄總數(shù)+1,如果再執(zhí)行SKIP命令,系統(tǒng)將顯示出錯(cuò)信息:已到文件尾。此時(shí),記錄指針仍然指向記錄結(jié)束標(biāo)志。 如果表有一個(gè)主控索引或索引文件,SKIP命令將使記錄指針移動(dòng)到索引順序決定的記錄上。,記 錄 的 定 位(8),4.例題分析 (1) 在當(dāng)前已打開(kāi)的XS表中有10條記錄,執(zhí)行以下命令:

27、 GO TOP SKIP 3 ?RECNO() 則輸出結(jié)果是 C 。 A.1 B.3 C.4 D.2 (2) 在JS表中有15條記錄,現(xiàn)執(zhí)行以下命令: USE JS LIST ?RECNO() 則輸出結(jié)果是 B 。 A.1 B.16 C.15 D.出錯(cuò),“轉(zhuǎn)到記錄” 子菜單,“定位記錄” 對(duì)話框,記 錄 的 刪 除 與 恢 復(fù)(1),從表中刪除記錄應(yīng)非常謹(jǐn)慎,以免造成不可挽回的數(shù)據(jù)丟失。為此VFP系統(tǒng)將刪除記錄分為兩步并由不同的命令來(lái)執(zhí)行:第一步只作刪除標(biāo)記,也稱為邏輯刪除;第二步才將作了刪除標(biāo)記的記錄徹底從表中刪除,也稱為物理刪除。邏輯刪除可以用恢復(fù)刪除命令恢復(fù),而物理刪除不能恢復(fù)。 1.

28、邏輯刪除 (1)界面方式 如果要?jiǎng)h除個(gè)別記錄,只要在表的瀏覽窗口中單擊每個(gè)要?jiǎng)h除記錄左邊的小方框,小方框變?yōu)楹谏?,表明該記錄已做上刪除標(biāo)記。如XS表中,“高山”和“柳寶”兩名學(xué)生的記錄已打上了刪除標(biāo)記。 如果要在某一范圍內(nèi)刪除一組符合指定條件的記錄,可從“表”菜單中選擇“刪除記錄”,在出現(xiàn)的“刪除”對(duì)話框中,選擇范圍,建立刪除條件的表達(dá)式,點(diǎn)擊“刪除”按鈕即可刪除XS表中所有“信息管理系”的學(xué)生。,記 錄 的 刪 除 與 恢 復(fù)(2),(2)命令方式 用DELETE-SQL命令標(biāo)記要?jiǎng)h除的記錄。 語(yǔ)法:DELETE FROM 表名 WHERE 過(guò)濾條件表達(dá)式 參數(shù):FROM 表名指定要?jiǎng)h除記錄

29、的表。 WHERE 過(guò)濾條件表達(dá)式指定只給滿足條件的記錄做刪除標(biāo)記。 用DELETE命令 語(yǔ)法:DELETE 范圍 FOR條件表達(dá)式IN 工作區(qū)|別名 2.物理刪除 (1)界面方式 已被設(shè)置了刪除標(biāo)記(即已被邏輯刪除)的記錄,可以被徹底刪除物理刪除。 如果表的瀏覽窗口處于打開(kāi)狀態(tài),可從“表”菜單中選擇“徹底刪除”,這個(gè)過(guò)程將刪除所有標(biāo)記過(guò)的記錄,并重新構(gòu)造表中余下的記錄。經(jīng)過(guò)這一步后,被刪除的記錄不能再被恢復(fù)。,記 錄 的 刪 除 與 恢 復(fù)(3),(2)命令方式 PACK命令具有與菜單同樣的功能。 如果要?jiǎng)h除一個(gè)表的所有記錄,只留下表結(jié)構(gòu),可使用ZAP命令。ZAP 不管記錄是否帶刪除標(biāo)記,一

30、概徹底刪除。所以在實(shí)際使用中應(yīng)慎用此命令。PACK 命令與ZAP命令都需要以獨(dú)占方式使用表。 3. 恢復(fù)刪除 如果表的瀏覽窗口處于打開(kāi)狀態(tài),可以在瀏覽窗口中單擊一下帶刪除標(biāo)記記錄的小方框,小方框?qū)⒂珊谧儼?,這樣就恢復(fù)了這個(gè)記錄。同樣也可以有選擇地恢復(fù)一組記錄。從“表”菜單中選擇“恢復(fù)記錄”,然后輸入恢復(fù)條件。 也可以使用RECALL命令恢復(fù)帶刪除標(biāo)記的記錄。 語(yǔ)法:RECALL 范圍 FOR 條件表達(dá)式1 ; WHILE 條件表達(dá)式2,記 錄 的 刪 除 與 恢 復(fù)(4),4. 對(duì)帶刪除標(biāo)記記錄的訪問(wèn) (1) 測(cè)試記錄的刪除標(biāo)記 可以使用DELETE()函數(shù)測(cè)試當(dāng)前表的當(dāng)前記錄是否帶有刪除標(biāo)記

31、,如果函數(shù)返回.T.,說(shuō)明記錄帶有刪除標(biāo)記。否則不帶刪除標(biāo)記。 (2) 控制對(duì)帶有刪除標(biāo)記記錄的訪問(wèn) 可以使用SET DELETED來(lái)指定VFP是否處理標(biāo)有刪除標(biāo)記的記錄,以及其他命令是否可以操作它們。 語(yǔ)法: SET DELETED ON | OFF 參數(shù): ON 忽略標(biāo)有刪除標(biāo)記的記錄。 OFF (默認(rèn)值)允許訪問(wèn)標(biāo)有刪除標(biāo)記的記錄。,記 錄 的 刪 除 與 恢 復(fù)(5),5.例題分析 (1) 執(zhí)行DELETE ALL和ZAP命令都可刪除表文件的記錄,它們的區(qū)別是 C 。 A. DELETE ALL只刪除當(dāng)前記錄,而ZAP刪除所有記錄 B. ZAP只刪除當(dāng)前記錄,而DELETE ALL刪除

32、所有記錄 C. 用DELETE ALL刪除的記錄可用命令RECALL恢復(fù),而用 ZAP刪除的記錄則不能恢復(fù) D. DELETE ALL只刪除記錄,而ZAP連同表文件一起刪除 (2) SET DELETED OFF命令的作用是,函數(shù)DELETED()的值為.T.說(shuō)明。 答案: 使刪除標(biāo)記對(duì)任何命令無(wú)影響; 當(dāng)前記錄已被打上刪除標(biāo)記(邏輯刪除)。,瀏覽窗口中記錄的刪除標(biāo)記,刪除標(biāo)記,“刪除”對(duì)話框,輸入刪除 條件表達(dá)式,篩 選 記 錄 與 字 段(1),一、篩選記錄 篩選記錄是指從表中選出部分滿足指定條件的記錄來(lái)進(jìn)行瀏覽或其他操作,不滿足條件的記錄則被“隱含”起來(lái)。 1.通過(guò)界面操作篩選記錄 先打

33、開(kāi)表的瀏覽窗口,然后在“表”菜單中選擇“屬性”項(xiàng),打開(kāi)“工作區(qū)屬性”對(duì)話框。 在“工作區(qū)屬性”對(duì)話框中,在“數(shù)據(jù)過(guò)濾器”文本框中輸入篩選條件表達(dá)式。或者單擊“數(shù)據(jù)過(guò)濾器”文本框右邊的“”按鈕,打開(kāi)“表達(dá)式生成器”對(duì)話框來(lái)構(gòu)造一個(gè)表達(dá)式。單擊“確定”按鈕。 則再瀏覽表時(shí),在表的瀏覽窗口中就只顯示經(jīng)篩選表達(dá)式篩選過(guò)的記錄了。,篩 選 記 錄 與 字 段(2),2.使用命令篩選記錄 可以使用如下命令實(shí)現(xiàn)與界面操作相同的功能: SET FILTER TO 條件表達(dá)式 例如,用以下命令篩選出所有男學(xué)生: SET FILTER TO XB = “男” 如果要把記錄篩選條件去掉,只要執(zhí)行以下命令即可: SE

34、T FILTER TO 另外在許多命令的用法中,可以包含F(xiàn)OR子句,使命令在執(zhí)行時(shí)進(jìn)行臨時(shí)性記錄篩選。 應(yīng)當(dāng)注意的是:對(duì)SELECT-SQL、DELETE-SQL和UPDATESQL命令所作用的表使用SET FILTER TO命令設(shè)置的過(guò)濾器不會(huì)限制這三個(gè)命令對(duì)表中記錄的訪問(wèn)。,篩 選 記 錄 與 字 段(3),例如: USE js SET FILTER TO js.gl=20 UPDATE js SET jbgz = jbgz+30 這組命令的本意是想把JS表中工齡在20年的教師的基本工資加30,而結(jié)果是把所有教師的基本工資都加了30。 正確的命令應(yīng)該是: UPDATE js SET jbg

35、z = jbgz+30 WHERE js.gl=20 二、篩選字段 篩選字段是選取表的部分列。 在“工作區(qū)屬性”對(duì)話框中,在“允許訪問(wèn)”框內(nèi)選中“字段篩選指定的字段”單選鈕,單擊“字段篩選”按鈕,在打開(kāi)的“字段選擇器”對(duì)話框中選定所需字段。,“工作區(qū)屬性”對(duì)話框,表達(dá)式生成器,“字段選擇器”對(duì)話框,記 錄 的 修 改(1),一個(gè)表只要不是以只讀方式打開(kāi),就可對(duì)其記錄進(jìn)行編輯和修改??梢酝ㄟ^(guò)界面操作進(jìn)行或使用命令進(jìn)行修改。 1. 在瀏覽窗口中編輯修改記錄 個(gè)別記錄的修改可在編輯窗口或?yàn)g覽窗口中進(jìn)行。用EDIT命令或CHANGE命令打開(kāi)編輯窗口;用BROWSE命令或項(xiàng)目管理器打開(kāi)瀏覽窗口,在瀏覽窗

36、口中可以進(jìn)行修改。 例如,要用EDIT命令來(lái)編輯修改XS表,可以在命令窗口中輸入如下命令: EDIT 2. 批量記錄的修改 例如,當(dāng)跨入新的一年時(shí),所有在職教工(假設(shè)“工齡60”為在職)的工齡必須加1,就要進(jìn)行批量記錄的修改(當(dāng)然可以手工地逐個(gè)去修改,但這種方法不可取!)。只要指定了字段以及替換后的值,批量修改將會(huì)自動(dòng)地進(jìn)行。下面以教師表為例來(lái)批量修改工齡。,記 錄 的 修 改(2),(1) 界面方式的批量修改 使用“表”菜單中的“替換字段”項(xiàng),打開(kāi)“替換字段”對(duì)話框(如下圖)。在“字段”下拉列表中指定當(dāng)前表的哪個(gè)字段的值要替換。在“With:”右邊的文本框中輸入一個(gè)表達(dá)式或常量,用來(lái)替換上述

37、所選字段,然后點(diǎn)擊“替換”按鈕。,記 錄 的 修 改(3),(2) 使用命令批量修改記錄 修改記錄字段值的的命令有兩個(gè):UPDATE-SQL命令和REPLACE命令。 這兩個(gè)命令都能對(duì)表中多個(gè)字段,多個(gè)記錄進(jìn)行批量地自動(dòng)修改,都是適用于編程方式。UPDATE-SQL命令更簡(jiǎn)練和快捷。 語(yǔ)法:UPDATE 表名; SET 字段1 =表達(dá)式1 ,字段2 = 表達(dá)式2 .; WHERE 條件表達(dá)式 參數(shù): 表名指定要更新記錄的表。 字段1=表達(dá)式1 ,字段2=表達(dá)式2 .指定要更新的列以及這些列的新值。 WHERE條件表達(dá)式指定要更新的記錄所符合的條件;如果省略WHERE子句,在列中的每一行都用相同的值更新。,記 錄 的 修 改(4),REPLACE FieldName1 WITH eExpression1ADDITIVE ,FieldName2 WITH eExpression2additive scopeFOR lExpression 用此命令時(shí),被更新的表必須事先打開(kāi),且在執(zhí)行命令后,記錄指針位于指定范圍的結(jié)尾。 Close tables all Use js Replace jbgz with jbgz+100 for year(date()-year(gzrq)29,記

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論