第一部分 Visual FoxPro數(shù)據(jù)對(duì)象的建立_第1頁(yè)
第一部分 Visual FoxPro數(shù)據(jù)對(duì)象的建立_第2頁(yè)
第一部分 Visual FoxPro數(shù)據(jù)對(duì)象的建立_第3頁(yè)
第一部分 Visual FoxPro數(shù)據(jù)對(duì)象的建立_第4頁(yè)
第一部分 Visual FoxPro數(shù)據(jù)對(duì)象的建立_第5頁(yè)
已閱讀5頁(yè),還剩1頁(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、第一部分 Visual FoxPro數(shù)據(jù)對(duì)象的建立1.“項(xiàng)目”文件構(gòu)成:每個(gè)項(xiàng)目都由一個(gè)項(xiàng)目索引文件(.pjx)和一個(gè)項(xiàng)目備注文件(.pjt)構(gòu)成.“項(xiàng)目管理器”的構(gòu)成:文件選項(xiàng)卡:全部、數(shù)據(jù)、文檔、類、代碼、其他 選擇項(xiàng)卡:新建、添加、修改、瀏覽、移去、連編2.“數(shù)據(jù)庫(kù)”文件的構(gòu)成:每個(gè)數(shù)據(jù)庫(kù)由三個(gè)文件構(gòu)成,其擴(kuò)展名分別是:.dbc、.dct、.dcx。數(shù)據(jù)庫(kù)的打開(kāi):OPEN DATABASE DatabaseFileName | ? EXCLUSIVE | SHARED(其中:exclusive 為獨(dú)占方式、shared為共享方式)例如:OPEN DATABASE abc EXCLUSIV

2、E &&獨(dú)占方式打開(kāi)數(shù)據(jù)庫(kù)abc數(shù)據(jù)庫(kù)關(guān)閉: CLOSE DATABASE關(guān)閉打開(kāi)的當(dāng)前數(shù)據(jù)庫(kù)以及該數(shù)據(jù)庫(kù)中被打開(kāi)的數(shù)據(jù)表 CLOSE ALL 關(guān)閉所有打開(kāi)的數(shù)據(jù)庫(kù)、數(shù)據(jù)表、索引等數(shù)據(jù)庫(kù)的修改:modify database (注意:被修改的數(shù)據(jù)庫(kù)事先如果沒(méi)有打開(kāi),系統(tǒng)將出現(xiàn)“打開(kāi)”窗口并提示打開(kāi)。)數(shù)據(jù)庫(kù)的刪除:DELETE DATABASE DatabaseFileName | ? DELETETABLES(其中:DELETETABLES為刪除所有對(duì)應(yīng)的數(shù)據(jù)庫(kù)表)數(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ù)庫(kù)表及自由表,3. “字段”屬性:字段名:一個(gè)數(shù)據(jù)表由若干個(gè)列(字段)構(gòu)成,每列都必須有一個(gè)惟一的名字; 字段名可以由字母、數(shù)字、漢字、下劃線所構(gòu)成;但必須以字母或漢字開(kāi)頭,數(shù)字不能作為字段名的開(kāi)始,如:1A、2AB為錯(cuò)誤字段名;在自由表中字段名最多10個(gè)字符(5個(gè)漢字),而數(shù)據(jù)庫(kù)表中的字段名可長(zhǎng)達(dá)128個(gè)字符;字段名中不能包含空格。.字段類型與寬度:字段數(shù)據(jù)類型決定存儲(chǔ)在字段中的值的數(shù)據(jù)類型。.空值(NULL):空值是一個(gè)不確定的量,表示某事件尚未發(fā)生,長(zhǎng)度為一個(gè)字節(jié),如:對(duì)于期末考試成績(jī),可以用0表示考0分,用NULL表示沒(méi)參加考試。在數(shù)據(jù)表中,如果某字段需要允許輸

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

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

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

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

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

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

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

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

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

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)容字段的字段名(只能寫(xiě)單一的字段名,不能是字段的表達(dá)式)eExpression :表達(dá)式,用于替換該字段的內(nèi)容SCOPE :確定在數(shù)據(jù)表中操作的范圍ALL 所有記錄N

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

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

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

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

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

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

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

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

溫馨提示

  • 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)論