第一部分 Visual FoxPro數(shù)據(jù)對象的建立_第1頁
第一部分 Visual FoxPro數(shù)據(jù)對象的建立_第2頁
第一部分 Visual FoxPro數(shù)據(jù)對象的建立_第3頁
第一部分 Visual FoxPro數(shù)據(jù)對象的建立_第4頁
第一部分 Visual FoxPro數(shù)據(jù)對象的建立_第5頁
已閱讀5頁,還剩1頁未讀 繼續(xù)免費閱讀

付費下載

下載本文檔

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

文檔簡介

1、第一部分 Visual FoxPro數(shù)據(jù)對象的建立1.“項目”文件構(gòu)成:每個項目都由一個項目索引文件(.pjx)和一個項目備注文件(.pjt)構(gòu)成.“項目管理器”的構(gòu)成:文件選項卡:全部、數(shù)據(jù)、文檔、類、代碼、其他 選擇項卡:新建、添加、修改、瀏覽、移去、連編2.“數(shù)據(jù)庫”文件的構(gòu)成:每個數(shù)據(jù)庫由三個文件構(gòu)成,其擴展名分別是:.dbc、.dct、.dcx。數(shù)據(jù)庫的打開:OPEN DATABASE DatabaseFileName | ? EXCLUSIVE | SHARED(其中:exclusive 為獨占方式、shared為共享方式)例如:OPEN DATABASE abc EXCLUSIV

2、E &&獨占方式打開數(shù)據(jù)庫abc數(shù)據(jù)庫關(guān)閉: CLOSE DATABASE關(guān)閉打開的當前數(shù)據(jù)庫以及該數(shù)據(jù)庫中被打開的數(shù)據(jù)表 CLOSE ALL 關(guān)閉所有打開的數(shù)據(jù)庫、數(shù)據(jù)表、索引等數(shù)據(jù)庫的修改:modify database (注意:被修改的數(shù)據(jù)庫事先如果沒有打開,系統(tǒng)將出現(xiàn)“打開”窗口并提示打開。)數(shù)據(jù)庫的刪除:DELETE DATABASE DatabaseFileName | ? DELETETABLES(其中:DELETETABLES為刪除所有對應(yīng)的數(shù)據(jù)庫表)數(shù)據(jù)表的構(gòu)成:數(shù)據(jù)表由數(shù)據(jù)表“表結(jié)構(gòu)”與數(shù)據(jù)表“記錄”所組成,要建立數(shù)據(jù)表必須首先建立數(shù)據(jù)表結(jié)構(gòu),然后輸入記錄(

3、內(nèi)容)。數(shù)據(jù)表分為:數(shù)據(jù)庫表及自由表,3. “字段”屬性:字段名:一個數(shù)據(jù)表由若干個列(字段)構(gòu)成,每列都必須有一個惟一的名字; 字段名可以由字母、數(shù)字、漢字、下劃線所構(gòu)成;但必須以字母或漢字開頭,數(shù)字不能作為字段名的開始,如:1A、2AB為錯誤字段名;在自由表中字段名最多10個字符(5個漢字),而數(shù)據(jù)庫表中的字段名可長達128個字符;字段名中不能包含空格。.字段類型與寬度:字段數(shù)據(jù)類型決定存儲在字段中的值的數(shù)據(jù)類型。.空值(NULL):空值是一個不確定的量,表示某事件尚未發(fā)生,長度為一個字節(jié),如:對于期末考試成績,可以用0表示考0分,用NULL表示沒參加考試。在數(shù)據(jù)表中,如果某字段需要允許輸

4、入NULL,則在建立表結(jié)構(gòu)時必須將該字段右邊的“NULL”處打勾。字段有效性:只有數(shù)據(jù)庫表才有此屬性。規(guī)則:確定該字段輸入數(shù)據(jù)時,數(shù)據(jù)輸入的合法性。例如在“性別”字段的“規(guī)則“框中,如果輸入:性別=”男” or 性別=”女”,則用戶在該字段中輸入數(shù)據(jù)時,就無法輸入“男”、“女”以外的任何信息。信息:確定用戶在該字段中輸入錯誤時的提示,如:“輸入錯誤,請重輸!”(注意:“有效性規(guī)則”是邏輯表達式,“信息”是字符型表達式。)默認值:確定新添加記錄的默認輸入內(nèi)容,可節(jié)省用戶輸入時間。4.數(shù)據(jù)表數(shù)據(jù)輸入:日期型數(shù)據(jù)只能按“月、日、年”順序輸入;.邏輯型數(shù)據(jù)只輸入字母,用“T”或“Y”代表邏輯真,用“F

5、”或“N”代表邏輯假;數(shù)據(jù)表的打開:USE DataTableFileName | ?數(shù)據(jù)表的關(guān)閉: USE 關(guān)閉當前工作區(qū)打開的數(shù)據(jù)表,一次只能關(guān)閉一個數(shù)據(jù)表。Close all數(shù)據(jù)表結(jié)構(gòu)的修改():modify strucure數(shù)據(jù)庫表與自由表的幾點說明:如果沒有數(shù)據(jù)庫打開,則建立的數(shù)據(jù)表為自由表,否則為數(shù)據(jù)庫表;.自由表可添加到數(shù)據(jù)庫中,使之成為數(shù)據(jù)庫表,數(shù)據(jù)庫表可以從數(shù)據(jù)庫中移出成為自由表;.數(shù)據(jù)庫表可以使用長表名(128個字符),表中字段可以使用長字段名(128字符);數(shù)據(jù)庫表可以設(shè)置字段的:有效性規(guī)則、默認值、標題、輸入掩碼、注釋;數(shù)據(jù)庫表支持主關(guān)鍵字、參照完整性和表之間的聯(lián)系。(

6、一個表一旦從數(shù)據(jù)庫中移出,與之相聯(lián)系的所有主索引、默認值及有關(guān)的規(guī)則都將消失;如果數(shù)據(jù)庫表使用了長文件名(長字段名),一旦移出,其長文件名(長字段名)不可再使用;每一個表最多能被添加到一個數(shù)據(jù)庫)5索引的類型():.主索引:只有數(shù)據(jù)庫表才能建立主索引,自由表不能建立主索引;索引字段的值不允許重復(fù),也不允許為空值(.Null.),否則無法創(chuàng)建主索引;一個數(shù)據(jù)庫表只能建立一個主索引,但可以沒有主索引。. 候選索引:數(shù)據(jù)庫表、自由表均可建立多個候選索引;索引字段的值不允許重復(fù),也不允許為空值(.Null.),否則無法創(chuàng)建候選索引。. 唯一索引:“唯一性”是指索引項的唯一,不是字段值的唯一;一個數(shù)據(jù)庫

7、表與自由表均可建立多個唯一索引。. 普通索引:數(shù)據(jù)庫表、自由表均可建立多個普通索引。索引的建立:index on eExpression tag TagName FOR lExpression ASCENDING | DESCENDING UNIQUE | CANDIDATEON eExpression:索引關(guān)鍵字,用于實現(xiàn)對字段進行排序TAG TagName:索引名,用于區(qū)分同一索引文件中的不同索引FOR lExpression:索引條件,用于排除不參與索引的記錄ASCENDING | DESCENDING:ASCENDING升序,DESCENDING降序UNIQUE | CANDIDATE

8、:unique建立“唯一索引”,candidate建立“侯選索引”,不帶該參數(shù)建立“普通索引”(重要提醒:用指令方式不能建立“主索引”;默認升序排列)索引名(TagName)最長為10個字符;索引文件擴展名為:.cdx 對話框方式建立():.永久關(guān)系的類型一對一關(guān)系:主表中任意一條記錄,在子表中均最多有一條記錄與之對應(yīng);一對多關(guān)系:主表中至少存在一條記錄,在子表中有多條記錄與之對應(yīng);多對多關(guān)系:主表中一條記錄可能對應(yīng)子表多條記錄,子表中一條記錄也可能對應(yīng)主表中多條記錄。(注意,在數(shù)據(jù)庫表中,不能建立多對多關(guān)系。). 永久關(guān)系的建立第一步:在主表中建立主索引或侯選索引;第二步:在子表中建立主索引

9、、侯選索引或普通索引第三步:在主表中用鼠標左鍵拖動所建立的主(侯選)關(guān)鍵字到子表對應(yīng)索引上,然后松開鼠標即可。. 永久關(guān)系與索引類型的關(guān)系(注意:主表只能建主索引或侯選索引;子表可以建主索引、侯選索引或普通索引。)索引的使用:.索引打開:set index to IndexFileList.設(shè)置當前索引():set order to nIndexNumber | tag TagName 例如:set order to tag 姓名 &&設(shè)置索引名為“姓名”的索引為當前索引set order to 2 &&設(shè)置2號索引為當前索引(注意:保留字TAG可以省略不寫).

10、使用索引快速定位(查找):seek eExpression 例如:seek "何麗" &&查找第一個叫“何麗”的人注意:seek只能檢索符合條件的第一條記錄,對于符合條件的其它記錄,可用SKIP指令指向(為什么?).刪除索引:delete tag TagName | ALL 例如:delete tag all &&刪除所有索引delete tag 姓名 &&刪除索引名為“姓名”的索引6數(shù)據(jù)完整性:指保證數(shù)據(jù)的正確性,數(shù)據(jù)完整性一般包括實體完整性、域完整性和參照完整性。實體完整性與主關(guān)鍵字: 作用:保證表中記錄惟一的特性,即在一

11、個表中不允許有重復(fù)的記錄。實現(xiàn):通過建立主關(guān)鍵字或侯選關(guān)鍵字來實現(xiàn)。域完整性與約束規(guī)則: 作用:保證表中字段的正確性實現(xiàn):通過限定字段(表)的有效性規(guī)則來實現(xiàn)。參照完整性與表間關(guān)系(): 作用:保證不同數(shù)據(jù)表中相同關(guān)鍵字段數(shù)據(jù)之間的完整性。實現(xiàn):在數(shù)據(jù)庫中的某兩個表之間的永久關(guān)系的基礎(chǔ)上,通過建立參照完整性約束來實現(xiàn)。參照完整性及其設(shè)置:設(shè)置參照完整性約束之前,必須首先清理數(shù)據(jù)庫。其目的是將數(shù)據(jù)庫中各表邏輯刪除的記錄進行清理。清理完數(shù)據(jù)庫后,用鼠標右鍵單擊表之間任意聯(lián)系(不管單擊的是哪個聯(lián)系,所有聯(lián)系將都出現(xiàn)在參照完整性生成器中),打開參照完整性生成器。參照完整性規(guī)則包括:更新規(guī)則、刪除規(guī)則、

12、插入規(guī)則。更新規(guī)則:主要用于當更新父表中的連接字段(主關(guān)鍵字)值時,如何處理相關(guān)的子表中的記錄。可選擇“級聯(lián)”、“限制”、“忽略”等三個選項之一。級聯(lián):用新的關(guān)鍵字值更新子表中的所有相關(guān)記錄。限制:若子表中有相關(guān)記錄則禁止更新。忽略:允許更新,不管子表中的相關(guān)記錄。刪除規(guī)則:主要用于當父表中的記錄刪除時,如何處理相關(guān)的子表中的記錄。可選擇“級聯(lián)”、“限制”、“忽略”等三個選項之一。級聯(lián):刪除子表中的所有相關(guān)記錄。限制:若子表中有相關(guān)記錄則禁止刪除。忽略:允許刪除,不關(guān)子表中的相關(guān)記錄。插入規(guī)則:主要用于在子表中插入記錄時,是否進行參照完整性檢查。可選擇“限制”、“忽略”等兩個選項之一。(注意:

13、父表中插入記錄不受任何限制。)限制:若父表中不存在匹配的關(guān)鍵字值,則禁止插入。忽略:允許插入。7.數(shù)據(jù)表的基本操作1)數(shù)據(jù)表的瀏覽、編輯與修改操作:瀏覽命令:browse編輯命令:edit |change替換命令:replace FieldName1 with eExpression1 ,FieldName2 WITH eExpression2 SCOPE FOR lExpression.參數(shù)含義:FieldName : 待替換內(nèi)容字段的字段名(只能寫單一的字段名,不能是字段的表達式)eExpression :表達式,用于替換該字段的內(nèi)容SCOPE :確定在數(shù)據(jù)表中操作的范圍ALL 所有記錄N

14、EXT <n> 從當前記錄開始的N個記錄record <n> 第N個記錄(只有一條記錄)rest 從當前記錄到最后一條記錄FOR lExpression : 限定操作記錄必須符合的條件(選擇操作) (.注意事項:在VFP中,命令中的各參數(shù)之間可以任意交換位置;如果沒有“范圍”,也沒有“條件”,則只替換當前記錄;如果有“范圍”,沒有“條件”,則替換范圍內(nèi)的所有記錄;如果沒有“范圍”,只有“條件”,將對整個數(shù)據(jù)表中符合條件的記錄進行替換;如果既有“范圍”,又有“條件”,則在范圍內(nèi)替換符合條件的記錄.)例題:現(xiàn)有工資數(shù)據(jù)表GZB.DBF(如表1.1),請完成下列操作:表 1.

15、1 工資數(shù)據(jù)表GZB.DBF職工號基本工資津貼獎金公積金實發(fā)工資020365882.00213.5115900205281562.00283.01441400102341306.00223.01151200204581748.00302.0156160020636864.00143.09870計算所有職工的實發(fā)工資,并填入該表的“實發(fā)工資”字段。命令:Replace 實發(fā)工資 with 基本工資津貼獎金公積金all將基本工資低于1000的職工工資加200元,并重新計算這些職工的實發(fā)工資。命令:Replace 基本工資 with 基本工資+200,實發(fā)工資 with 基本工資+津貼+獎金-公積金

16、 For 基本工資<10002)數(shù)據(jù)表數(shù)據(jù)的復(fù)制操作:導(dǎo)出數(shù)據(jù)表記錄:COPY TO <filename> FIELDS fieldslist FOR lExpression導(dǎo)出數(shù)據(jù)表結(jié)構(gòu):COPY STRUCTURE TO <filename> FIELDS fieldslist. 參數(shù)含義:TO <filename> :導(dǎo)出數(shù)據(jù)所放文件Fields fieldslist:選擇其中部分字段(投影操作),缺省本參數(shù),將導(dǎo)出所有字段FOR lExpression:確定選擇數(shù)據(jù)所符合的條件(選擇操作)structure:表示拷貝表結(jié)構(gòu)(不含記錄). 注意事

17、項:Copy structure 只復(fù)制表結(jié)構(gòu),不包含內(nèi)容(雖然存在內(nèi)容)(注意理解:為什么COPY STRUCTURE命令沒有“FOR lExpression”參數(shù))例題:在表1.1所示的工資數(shù)據(jù)表中:將職工號、基本工資與實發(fā)工資拷貝到新數(shù)據(jù)表GZ.DBF中;命令:Use gzbCopy to gz fields 職工號,基本工資,實發(fā)工資從該表中取出職工號、基本工資與實發(fā)工資三個字段,并形成GZ1.DBF表,要求該表沒有記錄。命令:Use gzbCopy structure to gz1在1 fields職工號,基本工資,實發(fā)工資3)數(shù)據(jù)表中添加記錄操作:追加新記錄:append BLAN

18、K插入新記錄:insert BLANK before從其它文件追加記錄:append from Filename FIELDS <fieldslist> FOR lExpression.參數(shù)含義:BLANK : 僅添加空白記錄,不進入編輯狀態(tài);如果不帶此參數(shù),在添加空白記錄的同時將進入編輯狀態(tài);FROM Filename :數(shù)據(jù)將從Filename所指定的表中追加;before :在當前記錄之前插入新記錄;如果不帶此參數(shù),將在當前記錄之后插入。(注意事項:append命令只能在數(shù)據(jù)表的末尾添加記錄;insert命令可在數(shù)據(jù)表中任意位置添加記錄;append from 命令可實現(xiàn)從其

19、它存在的表中添加記錄。)例題:將表1.1所示的工資數(shù)據(jù)表中的記錄,追加到數(shù)據(jù)表GZ1.DBF中。命令:Use gz1Append from gzb.dbf 4)數(shù)據(jù)表中刪除記錄:邏輯刪除:delete scope FOR lExpression物理刪除:pack去掉邏輯刪除標記:recall scope FOR lExpression 其作用與DELETE命令相反刪除全部記錄:zap (注意:該命令只刪除數(shù)據(jù)表的所有記錄,留下表結(jié)構(gòu)).注意事項:數(shù)據(jù)表中記錄的刪除分為“邏輯刪除”與“物理刪除”,其中邏輯刪除是僅僅在數(shù)據(jù)表中相應(yīng)記錄上做刪除標記;而物理刪除則是對已做刪除標記的記錄實施徹底刪除;恢

20、復(fù)邏輯刪除命令的作用與邏輯刪除的作用相反,它是將做了刪除標記的記錄去除其刪除標記;數(shù)據(jù)表中記錄一旦實施物理刪除,被刪除的記錄將無法恢復(fù);zap命令是將數(shù)據(jù)表中的所有記錄一次性地完全刪除,不管是否有刪除標記。)例題:將表1.1中基本工資低于1000的所有記錄徹底刪除。命令:Delete for 基本工資<1000 等價于 Delete all for 基本工資<10005)數(shù)據(jù)表查詢定位:絕對定位:GOTO(或GO) nRecordNumber | top| bottom 相對定位:skip nRecords條件定位:locate scope FOR lExpression繼續(xù)查找下

21、一符合條件的記錄:continue.參數(shù)含義:nRecordNumber :要定位的記錄號top:最前面一條記錄(不一定是第一條記錄,主要看數(shù)據(jù)表是否索引)bottom :最后一條記錄(不一定是第一條記錄,主要看數(shù)據(jù)表是否索引)nRecords :當為正數(shù)時,向文件尾方向移動指針;當為負數(shù)時,向文件頭方向移動指針。(注意事項:skip 可將指針移動到最后一條記錄的后面,但不能將指針移動到第一條記錄的前面。)注意比較下列兩段程序執(zhí)行后,記錄指針的位置:USE GZ USE GZGO TOP GO BOTTOMSkip -1 SkipSkip -1 Skip locate 與continue指令一

22、般要搭配使用。只有執(zhí)行LOCATE之后,才可使用CONTINUE指令,否則將出現(xiàn)錯誤。LOCATE可單獨使用,即執(zhí)行LOCATE之后不執(zhí)行CONTINUE指令。8.工作區(qū)的使用工作區(qū)的概念:對數(shù)據(jù)表處理加工時所用的工作區(qū)間。工作區(qū)的特點:一個工作區(qū)只能打開一個數(shù)據(jù)表;如果不指定工作區(qū),則系統(tǒng)默認在當前工作區(qū)操作;VFP啟動時,系統(tǒng)默認當前工作區(qū)為第1工作區(qū);系統(tǒng)工作區(qū)共有32767個工作區(qū);除了工作區(qū)編號以外,每個工作區(qū)都有一個“別名”。前10個工作區(qū)的別名是AJ,工作區(qū)1132767工作區(qū)的別名為W11W32767。工作區(qū)的切換命令:格式:SELECT nWorkArea | cTableAlia

溫馨提示

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

評論

0/150

提交評論