下載本文檔
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
VisualFoxpro程序設(shè)計(jì)
第5章數(shù)據(jù)排序檢索統(tǒng)計(jì)
和多表操作
表中的記錄一開(kāi)始是按輸入的先后順序(記錄號(hào))排列的。如果要按另外一種特定的順序顯示或輸出,就必須對(duì)表進(jìn)行排序或索引。排序和索引都可以改變記錄的輸出順序。5.1分類(lèi)〔物理〕排序是根據(jù)表的某些字段的值,將表中的記錄由大到小〔降序〕或由小到大〔升序〕,物理地重新排列記錄順序,生成一個(gè)新表,稱(chēng)為排序文件。排序文件中記錄按新的順序排列并重新生成記錄號(hào),而原表保持不變。排序命令格式: SORTTO<新表名>ON<字段名1>[/A|/D>][/C][,<字段名2>[/A|/D>][/C]…][<范圍>][FOR|WHILE<條件>][FIELDS<字段名表>][ASCENDING]|[DESCENDING]功能: 對(duì)當(dāng)前表中指定范圍內(nèi)滿足條件的記錄,按指定字段的升序或降序重新排列,并將排序后的記錄按FIELDS子句指定的字段寫(xiě)入新的表文件中。命令說(shuō)明:<新表名>:存放排序后記錄的新表名,該表生成后是關(guān)閉的,要使用它必須先翻開(kāi);ON<字段名1>…:指定當(dāng)前選定的、要排序的表中的字段名〔不能是備注和通用字段〕。參與排序的字段可有多個(gè);[/A][/D][/C]:對(duì)于排序中包含的每個(gè)字段,可以指定排序順序(升序或降序)。/A為升序(系統(tǒng)默認(rèn)排序方式);/D為降序;/C,默認(rèn)情況下,字符型字段的排序順序區(qū)分大小寫(xiě),該參數(shù)忽略大小寫(xiě);范圍:默認(rèn)為ALL,即所有記錄;FOR<條件>,對(duì)滿足條件的記錄排序;FIELDS<字段名表>,指定新表中記錄所包含的字段。[ASCENDING]|[DESCENDING]:指定沒(méi)有用[/A][/D]指明排序序列的其余字段的排序順序。例:USE學(xué)生SORTTO學(xué)生1ON性別,入??偡?DFOR入??偡?gt;540FIEL學(xué)號(hào),姓名,性別,出生日期,入校總分ASCENDING二、索引(邏輯)排序索引為提高查詢(xún)效率而建立,是一種邏輯排序。(一)索引的概念及類(lèi)型1.概念:索引是按照索引表達(dá)式的值使表中的記錄有序排列的一種方法,是進(jìn)行快速顯示及查詢(xún)數(shù)據(jù)的重要手段,是建立表間關(guān)系的根底。它不改變表中數(shù)據(jù)的物理順序。在VFP系統(tǒng)中,索引是借助于索引文件實(shí)現(xiàn)。索引文件包括兩個(gè)局部:索引表達(dá)式的值和物理記錄號(hào)。索引表達(dá)式的值按一定順序排列并對(duì)應(yīng)于物理記錄號(hào),顯示時(shí)按索引表達(dá)式值的順序讀取相應(yīng)的記錄號(hào)所指的記錄。索引文件與表文件關(guān)系示意索引表達(dá)式的值記錄號(hào)記錄號(hào)記錄內(nèi)容131………452………543………724………1015………………………索引文件表文件索引與物理排序的區(qū)別:1.物理排序要生成新表,記錄的物理順序發(fā)生變化,新表可以單獨(dú)使用;2.索引不生成新表,而是產(chǎn)生一個(gè)索引文件,只是表中記錄的邏輯順序發(fā)生了變化。索引文件不能單獨(dú)使用,它必須同表一起配合使用。2.索引文件的類(lèi)型 根據(jù)索引文件包含索引的個(gè)數(shù)和翻開(kāi)方式,可分為: (1)單索引文件 擴(kuò)展名為.IDX,只有一項(xiàng)索引,只能用命令方式建立,使用時(shí)需單獨(dú)翻開(kāi); (2)復(fù)合索引文件 可以有多項(xiàng)索引,各項(xiàng)索引用唯一的索引標(biāo)識(shí)區(qū)別。包括結(jié)構(gòu)復(fù)合索引和非結(jié)構(gòu)復(fù)合索引。結(jié)構(gòu)復(fù)合索引文件名與表同名,擴(kuò)展名為.CDX,隨表的翻開(kāi)而自動(dòng)翻開(kāi)。非結(jié)構(gòu)復(fù)合索引文件名與表名不同,擴(kuò)展名為.CDX,不隨表翻開(kāi),使用時(shí)用命令翻開(kāi)。3.索引的類(lèi)型VFP的索引文件中根據(jù)表中字段值是否有重復(fù),提供了四種類(lèi)型:主索引、候選索引、普通索引和惟一索引。數(shù)據(jù)庫(kù)表允許所有索引,自由表沒(méi)有主索引。(1)主索引
一個(gè)表只能有一個(gè),在指定字段或索引表達(dá)式中不允許有重復(fù)值,其索引表達(dá)式的值能夠惟一地標(biāo)識(shí)每條記錄的處理順序,主要用于建立永久關(guān)系的主表中;(2)候選索引 一個(gè)表可以有多個(gè)。在指定字段或索引表達(dá)式中不允許有重復(fù)值,其索引表達(dá)式的值能夠惟一地標(biāo)識(shí)每條記錄的處理順序。(3)惟一索引 一個(gè)表可有多個(gè)。索引表達(dá)式的值相同時(shí),那么只存儲(chǔ)第一條記錄,不重復(fù)存儲(chǔ)。(4)普通索引 一個(gè)表可有多個(gè)。索引表達(dá)式的值可以相同,一個(gè)值對(duì)應(yīng)的多條記錄,允許重復(fù)存儲(chǔ)在索引表中。(二)建立索引1.通過(guò)表設(shè)計(jì)器建立索引
利用表設(shè)計(jì)器可以實(shí)現(xiàn)對(duì)結(jié)構(gòu)復(fù)合索引建立和修改。
2.命令方式建立索引 (1)建立單索引文件格式:INDEXON<索引表達(dá)式>TO<索引文件名>[FOR<條件表達(dá)式>][UNIQUE][ADDITIVE]功能:創(chuàng)立單索引文件,其擴(kuò)展名為.IDX。說(shuō)明: UNIQUE指定建立惟一索引,ADDITIVE建立索引時(shí)不關(guān)閉原有索引; 單索引文件只能按升序排列,但可以用SETINDEX或SETORDER命令將.IDX索引文件指定為降序。例:USE學(xué)生INDEXON學(xué)號(hào)TOXHLIST思考:索引表達(dá)式為數(shù)值型時(shí),如何實(shí)現(xiàn)直接降序?(2)建立復(fù)合索引文件 格式:INDEXON<索引表達(dá)式>TAG<索引標(biāo)識(shí)名>[OF<索引文件名>][FOR<條件表達(dá)式>][COMPACT][ASCE|DESC][UNIQ|CAND] 功能:沒(méi)有[OF<索引文件名>]選項(xiàng),創(chuàng)立結(jié)構(gòu)復(fù)合索引文件,其擴(kuò)展名為.CDX;否那么創(chuàng)立文件名為<索引文件名>的非結(jié)構(gòu)復(fù)合索引。例:對(duì)“學(xué)生〞表建立兩個(gè)復(fù)合索引a.以姓名降序排列,索引類(lèi)型為普通索引;b.以性別升序排列,性別相同以入??偡纸敌蚺帕校饕?lèi)型為普通索引。USE學(xué)生INDEON姓名TAGXMDESCINDEON性別+STR(1000-入??偡?TAGXBZF(三)使用索引索引可以重新排列數(shù)據(jù)順序,加快數(shù)據(jù)的檢索、顯示、查詢(xún)和打印速度,還可以建立數(shù)據(jù)表間的關(guān)聯(lián)。使用索引,必須同時(shí)翻開(kāi)表與索引文件。一個(gè)表可以翻開(kāi)多個(gè)索引文件,同一個(gè)復(fù)合索引文件中可以包含多個(gè)索引標(biāo)識(shí),但任何時(shí)候都只有一個(gè)索引文件起作用,在復(fù)合索引文件中也只有一個(gè)索引標(biāo)識(shí)能起作用。當(dāng)前起作用的索引文件稱(chēng)為主控索引文件,當(dāng)前起作用的索引標(biāo)識(shí)稱(chēng)為主控索引。翻開(kāi)索引文件的方法:建立索引文件時(shí),自動(dòng)翻開(kāi);翻開(kāi)表的同時(shí)翻開(kāi)索引文件;翻開(kāi)表后再翻開(kāi)索引文件。1.通過(guò)〞表〞菜單命令使用索引2.命令方式翻開(kāi)索引(1)翻開(kāi)表的同時(shí)翻開(kāi)索引文件并確定主控索引格式:USE[表文件名][INDEX<索引文件名表>][ORDER<數(shù)值表達(dá)式>/<單索引文件名>/[TAG]<標(biāo)識(shí)名>[OF<復(fù)合索引文件名>][ASCENING/DESCENDING]參數(shù)說(shuō)明:INDEX<索引文件名表>,指定要翻開(kāi)的一個(gè)或多個(gè)索引文件。假設(shè)是多個(gè)索引文件,中間用逗號(hào)分隔,其中,排在第一個(gè)的索引文件是主控索引文件;ORDER<數(shù)值表達(dá)式/單索引文件名>/[TAG]<標(biāo)識(shí)名>,指定主控索引;[ASCENING/DESCENDING],指定排序順序。例1:USE學(xué)生INDEXH,XM,ZFORDE3例2:USE學(xué)生ORDETAGXMDESC(2)翻開(kāi)表文件后再翻開(kāi)索引文件格式:SETINDEXTO[<索引文件表>|?]
[ASCENDING|DESCENDING]][ADDITIVE]功能:指定要翻開(kāi)的一個(gè)或多個(gè)索引文件,并確定主控索引文件(常用于翻開(kāi)單索引文件)。說(shuō)明:1〕索引文件列表中,第一個(gè)索引文件將成為主控索引文件,它控制記錄的訪問(wèn)和顯示。如果第一個(gè)索引文件是.CDX文件,并且沒(méi)有發(fā)出SETINDEXTOTAG命令,那么按記錄的物理順序顯示和訪問(wèn)記錄;2〕SETINDEXTO關(guān)閉當(dāng)前工作區(qū)中除結(jié)構(gòu)復(fù)合索引文件外的所有索引文件,同時(shí)取消主控索引;3〕假設(shè)缺省ADDITIVE那么在使用本命令時(shí),除結(jié)構(gòu)復(fù)合索引文件之外的索引文件均被關(guān)閉。3.確定主控索引索引剛建立時(shí),索引文件呈翻開(kāi)狀態(tài),且為主控索引文件;只有一個(gè)索引文件被翻開(kāi),那么它成為主控索引文件;假設(shè)當(dāng)前翻開(kāi)了多個(gè)索引文件,通過(guò)SETINDEX命令或SETORDERTO命令來(lái)確定主控索引文件。格式:SETORDERTO[<數(shù)值表達(dá)式>]|<單索引文件名>|[TAG]<索引標(biāo)識(shí)>[ASCENDING]|DESCENDING]如果發(fā)出SETORDERTO0命令,那么所有索引文件仍保持翻開(kāi),并且在增加、刪除或修改記錄時(shí)更新。但是,表中所有記錄的顯示和訪問(wèn)順序是物理順序而不是索引順序。不帶其他參數(shù)的SETORDERTO命令與SETORDERTO0命令完全一樣。4.索引的更新〔1〕自動(dòng)更新:當(dāng)表中的數(shù)據(jù)發(fā)生變化時(shí),所有當(dāng)時(shí)已翻開(kāi)的索引文件都會(huì)隨著數(shù)據(jù)的改變自動(dòng)改變記錄的邏輯順序,從而實(shí)現(xiàn)索引文件的更新?!?〕重新索引格式:REINDEX功能:重新建立翻開(kāi)的索引文件。5.索引的刪除〔1〕刪除索引文件(先關(guān)閉后刪除) DELETEFILE<索引文件名>〔2〕刪除索引標(biāo)識(shí)DELETETAGALL|<索引標(biāo)識(shí)名表>刪除復(fù)合索引文件的中指定索引標(biāo)識(shí)。ALL子句用于刪除復(fù)合索引文件的所有索引標(biāo)識(shí)。假設(shè)某索引文件的所有索引表示都被刪除,那么該索引文件自動(dòng)刪除。6.關(guān)閉索引格式1:USE格式2:SETINDEXTO格式3:CLOSEINDEX5.3數(shù)據(jù)檢索一、順序查詢(xún)(定位查詢(xún)、直接查詢(xún))格式:LOCATEFOR<條件>[范圍]功能:按順序搜索表,找到指定范圍滿足條件的第一個(gè)記錄。格式:CONTINUE功能:按照LOCATE命令的條件,繼續(xù)查找下一個(gè)滿足條件的記錄。命令說(shuō)明: (1)被查詢(xún)的表不必建立索引; (2)缺省范圍是ALL; (3)找到滿足條件的記錄,記錄指針指向該條記錄,可使用RECNO()返回該記錄號(hào),并且FOUND()返回“真〞(.T.),EOF()返回“假〞(.F.);如果找不到滿足條件的記錄,那么FOUND()返回“假〞(.F.),記錄指針定位到指定范圍末尾(EOF()返回值不一定為“真〞(.T.)) (4)CONTINUE命令不能單獨(dú)使用,必須與LOCATE命令配合使用??芍貜?fù)執(zhí)行CONTINUE,直到到達(dá)范圍邊界或表尾。二、索引查詢(xún)按照索引文件的邏輯順序查找符合條件的記錄,要求根據(jù)要查詢(xún)的內(nèi)容建立索引或確定主控索引。格式1:FIND<數(shù)值常量>/<字符常量>/<&字符變量>功能:在翻開(kāi)的索引文件中快速查找與指定內(nèi)容相匹配的第一條記錄。說(shuō)明:(1)該命令用于查找字符型(可用可不用定界符)或數(shù)值型數(shù)據(jù);(2)該命令一般不使用表達(dá)式,如果查找字符變量必須宏替換函數(shù);(3)該命令是為與舊版本兼容而保存,可用SEEK命令代替。格式2:SEEK<表達(dá)式>功能:在翻開(kāi)的索引文件中快速查找與<表達(dá)式>相匹配的第1條記錄,用SKIP查找匹配的下一條記錄。說(shuō)明:(1)只能在索引過(guò)的表中使用SEEK命令,并且只能搜索索引關(guān)鍵字;(2)該命令可查找多種類(lèi)型的數(shù)據(jù),查找時(shí)需加定界符,查找變量時(shí)不使用宏替換函數(shù);(3)除非SETEXACT的設(shè)置為OFF,否那么匹配指的是完全匹配;(4)如果SEEK找到了與索引關(guān)鍵字相匹配的記錄,那么RECNO〔〕返回匹配記錄的記錄號(hào);FOUND〔〕返回“真〞(.T.);EOF〔〕返回“假〞(.F.)。如果找不到相匹配的關(guān)鍵字,那么RECNO〔〕將表中記錄的個(gè)數(shù)加1,然后返回。FOUND〔〕返回“假〞(.F.);EOF〔〕返回“真〞(.T.)。例:USE學(xué)生ORDETAGXBSEEK‘男'DISPSKIPDISP5.4數(shù)據(jù)統(tǒng)計(jì)1.計(jì)數(shù)命令格式:COUNT[<范圍>][FOR<條件>][TO<內(nèi)存變量>]功能:統(tǒng)計(jì)指定<范圍>內(nèi)滿足<條件>的記錄個(gè)數(shù),并存于<內(nèi)存變量>中。例:USE學(xué)生COUNTFOR姓名=“李〞TORS?RS
2.求和命令格式:SUM[<數(shù)值字段表達(dá)式表>][<范圍>][FOR<條件>][TO<內(nèi)存變量表>]/[TOARRAY<數(shù)組名>]功能:在指定<范圍>內(nèi)滿足<條件>的記錄中,對(duì)<數(shù)值字段表達(dá)式表>中的各項(xiàng)分別求和,并保存到內(nèi)存變量名表或數(shù)組中(該命令自動(dòng)建立數(shù)組)。說(shuō)明:a.假設(shè)SUM命令的選項(xiàng)都缺省,那么對(duì)表中所有數(shù)值型字段分別求和。b.<內(nèi)存變量表>中變量的個(gè)數(shù),要與<數(shù)值字段表達(dá)式表>中的表達(dá)式的個(gè)數(shù)相匹配,且都用逗號(hào)隔開(kāi)例:USEXSCJBROWSESUM數(shù)學(xué),英語(yǔ),計(jì)算機(jī)TOSX,YY,JSJ3.求平均值命令格式:AVERAGE[<數(shù)值表達(dá)式表>][<范圍>][FOR<條件>][WHILE<條件>][TO<內(nèi)存變量名表>/TOARRAY<數(shù)組名>]功能:在指定范圍內(nèi),計(jì)算數(shù)值表達(dá)式或字段的算術(shù)平均值。說(shuō)明:AVERAGE命令各參數(shù)的含義同SUM命令。4.計(jì)算命令格式:CALCULATE<函數(shù)名表>[<范圍>][FOR<條件>][WHILE<條件>][TO<內(nèi)存變量名表>]/[TOARRAY<數(shù)組名>]功能:在指定范圍內(nèi),對(duì)表文件的字段或字段表達(dá)式做統(tǒng)計(jì)計(jì)算。說(shuō)明:<函數(shù)名表>由以下8個(gè)規(guī)定函數(shù)組合而成:AVG(<數(shù)值表達(dá)式>):求<數(shù)值表達(dá)式>的算術(shù)平均值;SUM(<數(shù)值表達(dá)式>):求<數(shù)值表達(dá)式>的和;CNT():統(tǒng)計(jì)記錄個(gè)數(shù);MIN(<表達(dá)式>):求<表達(dá)式>的最小值;MAX(<表達(dá)式>):求<表達(dá)式>的最大值;NPV(<數(shù)值表達(dá)式1>,<數(shù)值表達(dá)式2>[,<數(shù)值表達(dá)式3>])求期貨交易流動(dòng)資金的凈當(dāng)前值;STD(<數(shù)值表達(dá)式>):求<數(shù)值表達(dá)式>的標(biāo)準(zhǔn)偏差;VAR(<數(shù)值表達(dá)式>):求<數(shù)值表達(dá)式>的方差。5.分類(lèi)求和〔匯總〕命令格式:TOTALON<關(guān)鍵字>[FIELDS<數(shù)值型字段表>][<范圍>][FOR<條件>][WHILE<條件>]TO<匯總文件名>功能:按關(guān)鍵字段對(duì)記錄進(jìn)行分類(lèi)匯總,并將匯總結(jié)果存入?yún)R總文件。說(shuō)明:(1)使用TOTAL命令前,必須先按關(guān)鍵字段進(jìn)行排序或索引,否那么,該命令無(wú)效;(2)ON<關(guān)鍵字>:分組依據(jù),即一組關(guān)鍵字段值相同的記錄在匯總表中產(chǎn)生一個(gè)記錄;(3)FIELDS<數(shù)值型字段表>:指出匯總字段,缺省,對(duì)表中所有數(shù)值型字段進(jìn)行匯總;(4)缺省范圍為ALL,指表中所有記錄;(5)備注型字段不能復(fù)制到匯總文件里。5.5多個(gè)表的同時(shí)使用一、工作區(qū)的使用1.工作區(qū)的概念工作區(qū)是VisualFoxPro在內(nèi)存中開(kāi)辟的一塊臨時(shí)區(qū)域,用于存放操作的表及其相關(guān)文件。用戶(hù)可以在不同的工作區(qū)中翻開(kāi)多個(gè)不同的表,并有多種方法訪問(wèn)不同工作區(qū)中的表。每個(gè)工作區(qū)有一個(gè)編號(hào);一個(gè)工作區(qū)在某一時(shí)刻只能翻開(kāi)一個(gè)表;每個(gè)工作區(qū)中的表文件都有自己獨(dú)立的記錄指針;表的翻開(kāi)就是將表從外存調(diào)入內(nèi)存的某個(gè)工作區(qū)。 (1)工作區(qū)號(hào)VisualFoxPro最多提供32767個(gè)工作區(qū);工作區(qū)的區(qū)域編號(hào),分別用1、2、3、4、…32767來(lái)表示。(2)工作區(qū)別名是給工作區(qū)取的一個(gè)除工作區(qū)編號(hào)外的名字,它可以用來(lái)標(biāo)識(shí)一個(gè)工作區(qū)及翻開(kāi)的表;前十個(gè)工作區(qū)的別名系統(tǒng)指定為A、B、…、J,分別對(duì)應(yīng)工作區(qū)1、2、3、4、…10;對(duì)于工作區(qū)11到32767,別名發(fā)生沖突時(shí),系統(tǒng)自動(dòng)指定的別名是W11到W32767。(3)表別名是對(duì)在工作區(qū)中翻開(kāi)的表的一個(gè)簡(jiǎn)短的文件名,以便于識(shí)別表及簡(jiǎn)化操作;在翻開(kāi)表時(shí),如果沒(méi)有定義別名,那么系統(tǒng)默認(rèn)以表文件名作為別名;每個(gè)翻開(kāi)的表都有兩個(gè)等效的別名,一個(gè)是工作區(qū)別名,一個(gè)是表別名。通過(guò)別名可以引用在工作區(qū)中翻開(kāi)的表;不要用數(shù)字和系統(tǒng)保存的別名作數(shù)據(jù)表名;可以在翻開(kāi)表時(shí)定義表別名。 格式:USE<表文件名>ALIAS<別名>例:USE學(xué)生ALIASXS(4)當(dāng)前工作區(qū)與當(dāng)前表正在操作的工作區(qū)為當(dāng)前工作區(qū)。當(dāng)前工作區(qū)只有一個(gè),系統(tǒng)默認(rèn)1號(hào)工作區(qū)為當(dāng)前工作區(qū);在當(dāng)前工作區(qū)中翻開(kāi)的表文件稱(chēng)為當(dāng)前表;當(dāng)前工作區(qū)是可變的,可以根據(jù)需要選擇任意一個(gè)工作區(qū)為當(dāng)前工作區(qū)。2.選擇工作區(qū)格式1:SELECT<工作區(qū)號(hào)>|<別名>功能:選擇需要使用的工作區(qū),并使其成為當(dāng)前工作區(qū)。格式2:USE<表文件名>IN<工作區(qū)號(hào)>|<別名>功能:翻開(kāi)表的同時(shí)指定工作區(qū),當(dāng)前工作區(qū)號(hào)不變。說(shuō)明:系統(tǒng)默認(rèn)1號(hào)工作區(qū)為當(dāng)前工作區(qū);函數(shù)SELECT()可以返回當(dāng)前工作區(qū)號(hào)〔指定表別名時(shí)可返回翻開(kāi)指定表的工作區(qū)號(hào)〕格式1中別名可以是工作區(qū)別名,如果表已翻開(kāi)也可以是表別名;格式2中別名是工作區(qū)別名;SELECT0或IN0表示選擇未使用的最小工作區(qū);選定工作區(qū),即選定該工作區(qū)中翻開(kāi)的表。3.工作區(qū)中表字段的引用當(dāng)前工作區(qū)中表的字段直接引用;非當(dāng)前工作區(qū)中的表的字段的引用,字段名前面必須加表別名。表別名有兩種格式:格式1:<別名>-><字段名>
格式2:別名.字段名例:
SELECT1 USE學(xué)生 SELECT2 USE選課ALIASXK SELECT1 &&選擇1號(hào)工作區(qū)為當(dāng)前工作區(qū) BROWSEFIEL學(xué)號(hào),A.姓名,學(xué)生.性別,出生日期,XK->課程號(hào),B.成績(jī)二、建立表間的臨時(shí)關(guān)系 1.數(shù)據(jù)表關(guān)聯(lián)的概念是指在有聯(lián)系的不同工作區(qū)中的表間記錄指針建立的一種同步移動(dòng)關(guān)系,使一個(gè)表的記錄指針移動(dòng)時(shí)另一個(gè)表的記錄指針能作相應(yīng)移動(dòng)。這僅是表間的邏輯關(guān)系,是一種臨時(shí)關(guān)系。 2.關(guān)聯(lián)的條件建立關(guān)聯(lián),需要有關(guān)聯(lián)條件,通常是比較兩個(gè)表相應(yīng)字段(一般為共同屬性字段)表達(dá)式的值是否相等;建立關(guān)聯(lián)的兩個(gè)表一個(gè)叫父表(主表或主控表),一個(gè)叫子表(相關(guān)表或受控表);對(duì)關(guān)聯(lián)表進(jìn)行操作時(shí),子表的記錄指針自動(dòng)隨父表的記錄指針而移到滿足條件的記錄上。子表記錄指針移動(dòng)時(shí),需按關(guān)聯(lián)條件進(jìn)行查詢(xún),為提高速度而采用索引查詢(xún),因此,要為子表按關(guān)聯(lián)的字段表達(dá)式建立索引。
3.父表與子表的關(guān)系 (1)一對(duì)一關(guān)系(1:1)父表的一條記錄只能和子表的一條記錄對(duì)應(yīng),子表的一條記錄也只能和父表的一條記錄對(duì)應(yīng)。
(2)多對(duì)一關(guān)系(N:1)父表中可以有多條記錄和子表的一條記錄對(duì)應(yīng)。 (3)一對(duì)多關(guān)系(1:N)父表的一條記錄可以和子表中的多條記錄記錄對(duì)應(yīng)。 VFP中不處理“多對(duì)多關(guān)系〞,假設(shè)出現(xiàn)多多關(guān)系,那么將其中一個(gè)表分解,然后以多一關(guān)系或一多關(guān)系處理。4.臨時(shí)關(guān)聯(lián)的建立(1)建立關(guān)聯(lián)的步驟分別在不同工作區(qū)翻開(kāi)需要建立關(guān)聯(lián)的表;為子表按關(guān)聯(lián)的關(guān)鍵字建立索引或確定主控索引;選定父表所在的工作區(qū)為當(dāng)前工作區(qū),與一個(gè)或多個(gè)子表建立關(guān)聯(lián);建立的關(guān)聯(lián)缺省為多對(duì)一關(guān)系,假設(shè)為一對(duì)多關(guān)系,那么需說(shuō)明。5.SETRELATIONTO命令方式建立關(guān)聯(lián) 命令格式: SETRELATIONTO[<關(guān)鍵字表達(dá)式1>|<數(shù)值表達(dá)式1>INTO<工作區(qū)1>|<別名1>[,…<關(guān)鍵字表達(dá)式N>|<數(shù)值表達(dá)式N>INTO<工作區(qū)N>|<別名N>]][ADDITIVE] 功能:以當(dāng)前表為父表與其它一個(gè)或多個(gè)表建立關(guān)聯(lián)。 說(shuō)明:<關(guān)鍵字表達(dá)式>:指定在父表和子表之間建立關(guān)系的關(guān)鍵字表達(dá)式。該選項(xiàng)要求子表必須按關(guān)鍵字表達(dá)式建立索引且設(shè)置為主控索引;<數(shù)值表達(dá)式>:可以是測(cè)試記錄號(hào)函數(shù)RECNO(),兩表按照記錄號(hào)相聯(lián)系,子表不必排序或索引。當(dāng)父表記錄指針移動(dòng)時(shí),子表的記錄指針指向與數(shù)值表達(dá)式值相匹配的記錄上;INTO〈工作區(qū)號(hào)1〉|〈別名1〉:指定非當(dāng)前工作區(qū)中的子表;<關(guān)鍵字表達(dá)式N>|<數(shù)值表達(dá)式N>INTO<工作區(qū)N>|<別名N>:指定其它表達(dá)式和其它子表,建立另一個(gè)父表和子表之間的關(guān)系。 在一條SETRELEATION命令中可以創(chuàng)立單個(gè)父表和多個(gè)子表之間的關(guān)系,各關(guān)系之間用逗號(hào)隔開(kāi);ADDITIVE表示建立新關(guān)系時(shí),保存當(dāng)前工作區(qū)中先前建立的關(guān)系,建立多個(gè)關(guān)聯(lián)時(shí)使用該項(xiàng)。6.一對(duì)多關(guān)系說(shuō)明格式:SETSKIPTO[<表別名1>[,<表別名2>]…]功能:用在SETRELATIONTO命令之后,說(shuō)明建立的關(guān)系為一多關(guān)系。不帶參數(shù)的命令將取消一對(duì)多關(guān)系說(shuō)明。
例:利用“成績(jī)〞、“學(xué)生〞兩個(gè)表文件,顯示學(xué)生相關(guān)信息及各門(mén)課成績(jī)。
CLOSEALL CLEA USE成績(jī) INDEON學(xué)號(hào)TAGXH USE學(xué)生IN2 SELE2 SETRELATO學(xué)號(hào)INTOA LIST成績(jī).學(xué)號(hào),學(xué)生.學(xué)號(hào),學(xué)生.姓名,性別,出生年月,A.課程號(hào),A.成績(jī) WAIT SETSKIPTOA LIST學(xué)號(hào),姓名,性別,出生年月,A.課程號(hào),A.成績(jī) WAIT BROWFIEL學(xué)號(hào),姓名,性別,出生年月,A.課程號(hào),A.成績(jī) 例:利用“學(xué)生.DBF〞、“選課.DBF〞、“課程.DBF〞三個(gè)表文件,顯示學(xué)生學(xué)號(hào)、姓名、課程名稱(chēng)與該課程的成績(jī)等情況?!泊?lián)、并聯(lián)〕Cleacloseall*Setsafeoffsele1use學(xué)生indeon學(xué)號(hào)tagxhsele2use選課setrelato學(xué)號(hào)into1indeon課程號(hào)tagkchsele3use課程setrelato課程號(hào)into2setskiptobbrowfiel學(xué)生.學(xué)號(hào):h="學(xué)生學(xué)號(hào)",學(xué)生.姓名,;課程.課程名,選課.成績(jī):h="各科成績(jī)"font'隸書(shū)',14style'bi'for學(xué)生.學(xué)號(hào)='2021110003'7.刪除表之間的臨時(shí)性關(guān)聯(lián)(1)刪除當(dāng)前表與所有其它表之間的關(guān)聯(lián)。格式:SETRELATIONTO(2)刪除當(dāng)前表與指定別名表之間的關(guān)聯(lián)。格式:SETRELATIONOFFINTO<工作區(qū)號(hào)>|<別名>9、靜夜四無(wú)鄰,荒居舊業(yè)貧。。4月-224月-22Thursday,April21,202210、雨中黃葉樹(shù),燈下白頭人。。16:04:4516:04:4516:044/21/20224:04:45PM11、以我獨(dú)沈久,愧君相見(jiàn)頻。。4月-2216:04:4516:04Apr-2221-Apr-2212、故人江海別,幾度隔山川。。16:04:4516:04:4516:04Thursday,April21,202213、乍見(jiàn)翻疑夢(mèng),相悲各問(wèn)年。。4月-224月-2216:04:4516:04:45April21,202214、他鄉(xiāng)生白發(fā),舊國(guó)見(jiàn)青山。。21四月20224:04:45下午16:04:454月-2215、比不了得就不比,得不到的就不要。。。四月224:04下午4月-2216:04April21,202216、行動(dòng)出成果,工作出財(cái)富。。2022/4/2116:04:4516:04:4521April202217、做前,能夠環(huán)視四周;做時(shí),你只能或者最好沿著以腳為起點(diǎn)的射線向前。。4:04:45下午4:04下午16:04:454月-229、沒(méi)有失敗,只有暫時(shí)停止成功!。4月-224月-22Thursday,April21,202210、很多事情努力了未必有結(jié)果,但是不努力卻什么改變也沒(méi)有。。16:04:4516:04:4516:044/21/20224:04:45PM11、成功就是日復(fù)一日
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年大學(xué)建筑線設(shè)計(jì)期末試卷
- 2025年度關(guān)愛(ài)快遞小哥總結(jié)
- 四年級(jí)數(shù)學(xué)(四則混合運(yùn)算帶括號(hào))計(jì)算題專(zhuān)項(xiàng)練習(xí)與答案
- 2026年計(jì)算機(jī)輔助工藝規(guī)劃(CAPP)項(xiàng)目公司成立分析報(bào)告
- 2026年上海東立國(guó)際旅行社有限公司招聘財(cái)務(wù)備考題庫(kù)有答案詳解
- 2025年舟山醫(yī)院公開(kāi)招聘編外人員招聘?jìng)淇碱}庫(kù)及完整答案詳解1套
- 2026年智能儲(chǔ)物柜項(xiàng)目可行性研究報(bào)告
- 2025-2030建筑裝飾行業(yè)技術(shù)革新現(xiàn)狀與投資布局戰(zhàn)略指導(dǎo)
- 2026年數(shù)字音樂(lè)文旅項(xiàng)目評(píng)估報(bào)告
- 2026年宿州市博物館公開(kāi)招聘工作人員備考題庫(kù)及答案詳解一套
- 叔叔在侄子訂婚宴致辭
- 自信自卑主題班會(huì)
- 2023上海物理水平等級(jí)考+答案
- YY/T 1718-2020人類(lèi)體外輔助生殖技術(shù)用醫(yī)療器械胚胎移植導(dǎo)管
- GB/T 3853-2017容積式壓縮機(jī)驗(yàn)收試驗(yàn)
- GB/T 28837-2012木質(zhì)包裝檢疫處理服務(wù)質(zhì)量要求
- GA/T 1380-2018法庭科學(xué)DNA數(shù)據(jù)庫(kù)人員樣本采集規(guī)范
- 銅鹽加速醋酸鹽霧試驗(yàn)標(biāo)準(zhǔn)
- 刑法總論全套課件
- 信息技術(shù)七年級(jí)下冊(cè)活動(dòng)2 IP地址與域名市公開(kāi)課一等獎(jiǎng)省名師優(yōu)質(zhì)課賽課一等獎(jiǎng)?wù)n件
- 醫(yī)院精細(xì)化管理
評(píng)論
0/150
提交評(píng)論