




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
數(shù)據(jù)庫
第一章緒論1.1數(shù)據(jù)庫的基本概念1.1.1從文件管理到數(shù)據(jù)庫管理1.1.2數(shù)據(jù)庫系統(tǒng)的特點(diǎn)1)數(shù)據(jù)的結(jié)構(gòu)化2)數(shù)據(jù)共享3)數(shù)據(jù)獨(dú)立4)可控冗余度1.1.3數(shù)據(jù)庫的分代1)非關(guān)系型數(shù)據(jù)庫(層次和網(wǎng)狀)2)關(guān)系型數(shù)據(jù)庫系統(tǒng)(普遍使用)3)對(duì)象-關(guān)系數(shù)據(jù)庫系統(tǒng)編號(hào)名稱啟用日期價(jià)格部門主要設(shè)備備注商標(biāo)016-1車床03/05/9062044.6121.T.Memogen016-2車床01/15/9227132.7321.T.memogen037-2磨床07/21/90241292.1222.T.memogen038-1鉆床10/12/895275.0023.F.Memogen表格中的每一項(xiàng)數(shù)據(jù)都是獨(dú)立的數(shù)據(jù)項(xiàng),表格中的每一橫行稱為一個(gè)記錄(record);表格中的每一豎列稱為一個(gè)字段(field)。關(guān)系模型的主要特點(diǎn)有:關(guān)系中每一數(shù)據(jù)項(xiàng)不可再分,是最基本的單位;每一豎列數(shù)據(jù)項(xiàng)是同屬性的,各列的順序是任意的;每一橫行記錄由一個(gè)個(gè)體事物的諸多屬性項(xiàng)構(gòu)成,記錄的順序可以是任意的。一個(gè)關(guān)系是一張二維表,不允許有相同的字段名,也不允許有相同的記錄行。數(shù)據(jù)庫系統(tǒng)與一般文件應(yīng)用系統(tǒng)對(duì)照序號(hào)文件應(yīng)用系統(tǒng)數(shù)據(jù)庫系統(tǒng)1文件中的數(shù)據(jù)由特定的用戶專用庫內(nèi)數(shù)據(jù)由多個(gè)用戶共享2每個(gè)用戶擁有自己的數(shù)據(jù),導(dǎo)致數(shù)據(jù)重復(fù)存儲(chǔ)原則上可消除重復(fù)。為方便查詢?cè)试S少量數(shù)據(jù)重復(fù)存儲(chǔ),但冗余度可以控制3數(shù)據(jù)從屬于程序,二者相互依賴數(shù)據(jù)獨(dú)立于程序,強(qiáng)調(diào)數(shù)據(jù)的獨(dú)立性4各數(shù)據(jù)文件彼此獨(dú)立,從整體看為“無結(jié)構(gòu)”的各文件的數(shù)據(jù)相互聯(lián)系,從總體看是“有結(jié)構(gòu)”的1.1.4數(shù)據(jù)庫系統(tǒng)的分類單用戶數(shù)據(jù)庫和多用戶數(shù)據(jù)庫集中式數(shù)據(jù)庫和分布式數(shù)據(jù)庫傳統(tǒng)數(shù)據(jù)庫和智能數(shù)據(jù)庫
1.2數(shù)據(jù)庫管理系統(tǒng)和數(shù)據(jù)庫應(yīng)用系統(tǒng)1.2.1數(shù)據(jù)庫管理系統(tǒng)1)數(shù)據(jù)定義功能:用于建立、修改、刪除表結(jié)構(gòu)2)數(shù)據(jù)操作功能:對(duì)數(shù)據(jù)進(jìn)行檢索和查詢3)控制和管理功能:并發(fā)控制、權(quán)限、備份恢復(fù)1.2.2數(shù)據(jù)應(yīng)用系統(tǒng)1)設(shè)計(jì)數(shù)據(jù)庫:概念結(jié)構(gòu)設(shè)計(jì)→邏輯結(jié)構(gòu)設(shè)計(jì)→物理結(jié)構(gòu)設(shè)計(jì)2)開發(fā)應(yīng)用程序:功能分析→總體設(shè)計(jì)→模塊設(shè)計(jì)→編碼調(diào)試
1.3微機(jī)Xbase關(guān)系數(shù)據(jù)庫系統(tǒng)1.3.1Xbase數(shù)據(jù)庫的演變1.3.2VFP的主要特點(diǎn)1)強(qiáng)大查詢(查詢最快)與管理(項(xiàng)目管理器)2)引入數(shù)據(jù)庫表的新概念3)擴(kuò)大對(duì)SQL語言(重點(diǎn))的支持4)大量使用可視化界面操作(微軟特點(diǎn))5)支持面向?qū)ο蟮某绦蛟O(shè)計(jì)6)通過OLE實(shí)現(xiàn)應(yīng)用集成7)支持網(wǎng)絡(luò)應(yīng)用(簡(jiǎn)單)微軟的其他數(shù)據(jù)庫1、SQLServer(企業(yè)用戶)2、Access(個(gè)人用戶)數(shù)據(jù)庫表1表2表n.
..1.5VFP工作方式1.5.1命令格式命令字+命令子句(操作對(duì)象,操作結(jié)果,操作條件)useTest &&打開Test表(對(duì)象)listfor價(jià)格<1000 &&顯示價(jià)格低于1000(條件)1.5.2兩類工作方式1)交互操作方式:命令或者菜單操作(熟悉數(shù)據(jù)庫知識(shí))2)程序執(zhí)行方式:編程實(shí)現(xiàn)(具備基本操作知識(shí))2.1表的建立與修改學(xué)號(hào)姓名VFPC語言PS1001張三8090851002李四8191841003王五706590….現(xiàn)實(shí)生活中是怎樣實(shí)現(xiàn)的?2.1.1表結(jié)構(gòu)的建立1)設(shè)計(jì)表的結(jié)構(gòu)行記錄列字段2)建立字段名的規(guī)則可以把什么作為首字符:字母或漢字可以包含什么:字母、漢字、數(shù)字、下劃線長(zhǎng)度不操過103)字段類型(表2.2)4)建立結(jié)構(gòu)字段名、數(shù)據(jù)類型、字段寬度例2-1:建立Student.DBF表0、設(shè)定默認(rèn)目錄1、文件->新建2、在設(shè)計(jì)器中建立表結(jié)構(gòu)2.1.2表數(shù)據(jù)的輸入1)邏輯型:只接受T、F、Y、N2)日期顯示有關(guān)的命令
SETDATEANSI SETCENTURYON SETDATEAMERICAN3)備注型與通用型輸入4)打開關(guān)閉表的命令
Use[<文件名>] usesb clearall
….5)編輯窗口關(guān)閉時(shí)數(shù)據(jù)不一定保存,但表關(guān)閉時(shí)數(shù)據(jù)會(huì)保存2.1.3表結(jié)構(gòu)的修改1)在表打開的狀態(tài)下使用“顯示”菜單中表設(shè)計(jì)器2)ModifyStructure2.1.4表數(shù)據(jù)的修改1)建議使用命令(browse)或項(xiàng)目管理器瀏覽編輯2)一窗兩區(qū)3)追加與刪除數(shù)據(jù)1)追加方式與追加新記錄2)刪除標(biāo)記與從磁盤刪除2.1.5通用型字段1)輸入:編輯菜單->插入對(duì)象2)對(duì)象的鏈接與嵌入有關(guān)命令創(chuàng)建設(shè)備表createsb
打開設(shè)備表Usesb
瀏覽、修改記錄browse
修改結(jié)構(gòu)Modifystructure
關(guān)閉當(dāng)前表closeall2.2表達(dá)式2.2.1常量數(shù)值型常量例如10,-100,2.81828,-123e+12表示:-123×1012
字符型常量例如"微機(jī)",'PC機(jī)',"3.14159"日期型和日期時(shí)間型常量例如{06/30/1999},{9/15/998:45},{^2001/08/30}設(shè)置通常的日期格式,命令SETSTRICTDATETO0,設(shè)置嚴(yán)格的日期格式,命令SETSTRICTDATETO1邏輯型常量真和假兩種值,.T..F.
2.2.2變量1)內(nèi)存變量(普通變量)A、命名規(guī)則:字母(漢字)或者下劃線開頭,字母數(shù)字下劃線組成,至多128個(gè)字符。B、賦值:變量名=表達(dá)式;store表達(dá)式to變量表C、表達(dá)式的顯示命令(?)2)數(shù)組A、定義:Dimension|Declare數(shù)組名(下標(biāo)1[,下標(biāo)2])B、說明:下標(biāo)下界為1C、賦值:1、數(shù)組中各元素可取不同類型數(shù)據(jù)。2、可單個(gè)元素賦值,也可為整個(gè)數(shù)組賦值數(shù)組使用舉例DECLEARx(2,3)DISPLAYMEMORYLIKExSTORE“AA”TOx(1,2)STORE5TOx(6)&&x(6)即為x(2,3)x(1)=.T.&&x(1)即為x(1,1)x(2,2)=“Hello”DISPLAYMEMORYLIKExX=5DISPLAYMEMORYLIKEx3)字段變量:表的每一個(gè)字段就是一個(gè)字段變量4)系統(tǒng)變量:以下劃線開頭。5)內(nèi)存變量的顯示:listmemory[like]
缺省條件下列出所有內(nèi)存變量(包括系統(tǒng)變量)6)內(nèi)存變量的清除:release2.2.3運(yùn)算符:1)優(yōu)先級(jí)運(yùn)算優(yōu)先級(jí)運(yùn)算符意義運(yùn)算舉例(注解表示顯示結(jié)果)算術(shù)8()圓括號(hào)7^或**乘方?3^2&&9 6×乘/除%取模:取兩數(shù)相除的余數(shù)?15%4&&35+加-減關(guān)系
4<小于?63<54&&.F.<=小于等于?{01/01/92}<={01/01/92}&.T.>大于?"ABC">"AAAA"&&.T.>=大于等于?"大專">="大學(xué)"&&.T.=相等:串比較時(shí)串首同就得真?"ABC"="AB"&&.T.==完全相等:兩串全同才得真?"ABC"=="AB“&&.F.<>、#或!=不相等?.T.<>.F.&&.T.$包含:左串是右串子串才得真?"BC"$"ABCD"&&.T.邏輯3NOT或!非:結(jié)果是右邊邏輯值的反?NOT"BC"$"ABCD"&&.F.2AND與:兩邊都真才得真?.T.AND"ABC">"AB"&&.F.1OR或:兩邊有一為真就得真?.T.OR4=5&&.T.1.?dāng)?shù)值型表達(dá)式數(shù)值型表達(dá)式是由算術(shù)運(yùn)算符、常量、變量和函數(shù)組成的,其運(yùn)算結(jié)果是數(shù)值型的。算術(shù)運(yùn)算符包括:(1)()分組優(yōu)先運(yùn)算符;(2)**、^乘方運(yùn)算符;(3)*、/乘除運(yùn)算符;(4)%求余運(yùn)算符;(5)+、-加減或單目運(yùn)算符;例如,用戶在命令窗口中鍵入如下兩條命令:
?-2**2+5?-2^3+5
顯示在屏幕上的結(jié)果值分別為:
9.0和-3.02.字符型表達(dá)式字符型表達(dá)式由字符運(yùn)算符、字符型常量、字符型變量和函數(shù)組成,其運(yùn)算結(jié)果是字符串。字符運(yùn)算符有:1)+:字符串連接符,其功能是將運(yùn)算符兩邊的字符串連接起來,形成一個(gè)新字符串。2)-:串尾空格移位連接符,將兩個(gè)字符串連接時(shí),把第一個(gè)字符串的尾部空格(若存在)移到后面字符串的尾部。例如:?‘好好’+‘學(xué)習(xí)’結(jié)果是‘好好學(xué)習(xí)’?‘好好’-‘學(xué)習(xí)’結(jié)果是‘好好學(xué)習(xí)
’3.日期型表達(dá)式日期型表達(dá)式由算術(shù)運(yùn)算符(+或-)、算術(shù)表達(dá)式、日期型常量、日期型變量和函數(shù)組成。日期型數(shù)據(jù)是一種特殊的數(shù)據(jù),它們的運(yùn)算只有三種情況。1)兩個(gè)日期型數(shù)據(jù)可以相減,結(jié)果是一個(gè)數(shù)值,表示兩個(gè)日期之間相差的天數(shù)。例如:?{08/12/03}-{07/12/03}結(jié)果:312)日期型數(shù)據(jù)加上一個(gè)整數(shù),其結(jié)果為一個(gè)新的日期。例如:?{09/10/03}+10結(jié)果:{09/20/03}3)日期型數(shù)據(jù)減去一個(gè)整數(shù),其結(jié)果為一個(gè)新的日期,例如:{08/12/03}-31結(jié)果:{07/12/03}注:2個(gè)日期相加無意義。"$"是字符串包含運(yùn)算符。其格式如下:格式:<字符串1>$<字符串2>功能:當(dāng)<字符串2>包含<字符串1>時(shí),其結(jié)果為.T.,否則結(jié)果為.F.。例"$"運(yùn)算符的使用:?"AB"$"ACBCD".F.?"AS"$"DDASBC".T.2.2.4函數(shù)1)函數(shù)2)函數(shù)類型3)常用函數(shù)函數(shù)功能例子(注解表示結(jié)果)SUBSTR(<字符表達(dá)式>,<數(shù)值表達(dá)式1>[,<數(shù)值表達(dá)式2>])返回<字符表達(dá)式>中第<數(shù)值表達(dá)式1>位起的長(zhǎng)度為<數(shù)值表達(dá)式2>的子串?SUBSTR("ABCD",2,2)&&"BC"LEFT(<字符表達(dá)式>,<數(shù)值表達(dá)式>)返回<字符表達(dá)式>左起<數(shù)值表達(dá)式>個(gè)字符的子串?LEFT("ABCD",2)&&"AB"RIGHT(<字符表達(dá)式>,<數(shù)值表達(dá)式>)返回<字符表達(dá)式>右起<數(shù)值表達(dá)式>個(gè)字符的子串?RIGHT("ABCD",2)&&"CD"LEN(<字符表達(dá)式>)返回字符串的長(zhǎng)度?LEN("ABCD")&&4AT(<字符表達(dá)式1>,<字符表達(dá)式2>[,<數(shù)值表達(dá)式>])返回字符串<字符表達(dá)式1>在<字符表達(dá)式2>中第<數(shù)值表達(dá)式>次出現(xiàn)的位置?AT("BC","ABCD",1)&&2ALLTRIM(<字符表達(dá)式>)刪除字符串前導(dǎo)和末尾的空格?ALLTRIM("ABCD")&&"ABCD"SPACE(<數(shù)值表達(dá)式>)返回<數(shù)值表達(dá)式>個(gè)空格?SPACE(4)&&""UPPER(<字符表達(dá)式>)將小寫字母轉(zhuǎn)換為大寫?UPPER("aBc")&&"ABC"LOWER(<字符表達(dá)式>)將大寫字母轉(zhuǎn)換為小寫?LOWER("aBc")&&"abc"VAL(<字符表達(dá)式>)將字符串轉(zhuǎn)換為數(shù)值?VAL("3.14")&&3.14STR(<數(shù)值表達(dá)式1>[,<數(shù)值表達(dá)式2>[,<數(shù)值表達(dá)式3>]])將數(shù)值<數(shù)值表達(dá)式1>轉(zhuǎn)換為長(zhǎng)度為<數(shù)值表達(dá)式2>位,具有<數(shù)值表達(dá)式3>位小數(shù)的字符串?STR(3.14,5,1)&&"3.1"CHR(<數(shù)值表達(dá)式>)從<數(shù)值表達(dá)式>表示的ASCII碼返回字符?CHR(65)&&"A"ASC(<字符表達(dá)式>)返回字符的ASCII碼值?ASC("A")&&652.2.5VFP命令常用子句1)四種常用命令子句命令動(dòng)詞:List,display范圍子句:All &&所有記錄Next(N) &&從當(dāng)前記錄起的N個(gè)記錄Record(N) &&第N個(gè)記錄Rest &&從當(dāng)前到最后一條記錄的所有記錄a)顯示所有學(xué)生信息b)顯示前五個(gè)學(xué)生信息c)顯示第三個(gè)學(xué)生信息d)顯示從第三個(gè)學(xué)生后的所有學(xué)生信息For子句:指定條件a)顯示所有男同學(xué)信息listforsex=.t.b)顯示前五個(gè)學(xué)生中女同學(xué)信息go1listnext5forsex=.f.while子句從滿足條件時(shí)開始到不滿足條件的記錄停止。listwhilesex=.t.Fields子句書寫規(guī)則a)子句可以打亂順序b)前四個(gè)字符為命令動(dòng)詞的簡(jiǎn)寫c)可以使用續(xù)行符“;”例:
USEsbGO2&&記錄指針指向第2個(gè)記錄
LISTNEXT5FOR價(jià)格>10000&&顯2,3,6等3個(gè)記錄
LISTRECORD5FIELDS編號(hào),名稱,價(jià)格
USEsbLISTNEXT3&&(1)LIST部門,編號(hào),名稱,備注FOR部門="21"&&(2)LIST編號(hào),名稱,價(jià)格*0.9,啟用日期FORYEAR(啟用日期)<1995OFF&&(3)2.3表的維護(hù)命令2.3.1表與表結(jié)構(gòu)的復(fù)制1)復(fù)制任何文件copyfile<filename1>to<filename2>a)復(fù)制表basic到b1copybasic.dbftob1.dbf此操作應(yīng)用于表處于關(guān)閉狀態(tài),可以使用通配符*和?2)從表復(fù)制出表或其他類型文件a)把跨校專升本學(xué)生信息復(fù)制到b2表中copytob2fieldsstuid,nameforleft(stuid,4)=‘2005’把結(jié)果保存到Excel表中typeXLS保存在文本文件typesdf或delimited3)復(fù)制表的結(jié)構(gòu)、文件改名、刪除等命令2.3.2記錄指針的移動(dòng)1)定位go[to]top|bottom|<表達(dá)式>RecNo()顯示當(dāng)前位置2)移位skip<表達(dá)式>例:
USE &&若SB.DBF是打開的,則須關(guān)閉它
COPYFILESB.DBFTOSB1.DBF&&復(fù)制得SB1.DBFCOPYFILESB.FPTTOSB1.FPT&&復(fù)制得SB1.FPTUSEsbCOPYTOa1&&對(duì)sb.dbf原樣復(fù)制,同時(shí)生成A1.DBF與A1.FPTCOPYTOa2FIELDS名稱,編號(hào)FORLEFT(部門,1)=“2”LIST&&顯示SB.DBF的記錄數(shù)據(jù)
USEa2LIST&&顯示A2.DBF的記錄數(shù)據(jù)
USEsbCOPYTOb1NEXT3SDF&&以系統(tǒng)數(shù)據(jù)格式復(fù)制,產(chǎn)生文本文件B1.TXTCOPYSTRUCTURETOsb2FIELDS名稱,價(jià)格,編號(hào),備注2.3.3插入與追加1)插入空記錄insertblank2)追加新記錄insertintotablename[field1,…]values(data1,…)將數(shù)組插入表中insertintotablenamefromarrayarrname3)append成批追加appendfrom(非常有用)a)從basic表中把stuid,name,sex導(dǎo)出,再把導(dǎo)出數(shù)據(jù)追加到test表中usebasicusebasiccopytotestfieldsstuid,name,sextypesdfusetestappendfromtesttypesdf2.3.4表記錄的刪除和恢復(fù)1)邏輯刪除delete2)物理刪除pack3)恢復(fù)recall4)記錄清除zap2.3.5表數(shù)據(jù)的替換1)成批修改數(shù)據(jù)replacefield1withdata[field2withdata][forcondition]2)單個(gè)記錄與數(shù)組間的數(shù)據(jù)傳送a)把當(dāng)前記錄復(fù)制到數(shù)組中并顯示相關(guān)數(shù)據(jù)scattertoarr|memvarb)把數(shù)據(jù)或內(nèi)存變量的數(shù)據(jù)傳送到記錄(替換當(dāng)頭記錄)gatherfromarr
USEsbAPPENDFROMa1FIELDS名稱,價(jià)格&&A1.DBF中7個(gè)記錄的2個(gè)字段值追加到SB.DBF末尾APPENDFROMb1SDF&&B1.TXT是系統(tǒng)數(shù)據(jù)格式的文本文件DELETEFORNOT主要設(shè)備&&為所有的非主要設(shè)備記錄加上刪除標(biāo)記PACK&&物理上刪除帶有刪除標(biāo)記的記錄REPLACE價(jià)格WITH價(jià)格-1000,部門WITH"11"FOR主要設(shè)備;&&主要設(shè)備的價(jià)格都減少1000,部門均改為11APPENDBLANK&&追加1個(gè)空白記錄GO4SCATTERTOAMEMO&&第4個(gè)記錄(包括備注字段)數(shù)據(jù)傳送給數(shù)組A?a(1),a(2),a(4),a(7)&&顯示:038-1鉆床5275.001997年12月封存a(4)=6000GATHERFROMaDISPLAY&&顯示第4個(gè)記錄,價(jià)格已由5275.00改變?yōu)?000.00SETFILTERTOYEAR(啟用日期)>=1990ANDYEAR(啟用日期)<=1995LIST &&只顯示1990年至1995年的記錄SETFILTERTO &&取消過濾器LIST &&顯示全部記錄2.3.7建立與修改表結(jié)構(gòu)的命令1)表結(jié)構(gòu)的建立createtable<表名>(<字段名><字段類型>[,<字段寬度>][,<小數(shù)位數(shù)>])建立教師表createtableTeacher(IDc(5),namec(8),birthdayd)注意:插入日期型時(shí)用{^1980/01/01}2)修改結(jié)構(gòu)altertable<表名>add|alter[column]<字段名><字段類型>[(<字段寬度>[,<小數(shù)位數(shù)>])]altertable<表名>drop[column]<字段名>|Renamecolumn<字段名1>to<字段名2>3.1排序與索引
USEsbSORTTObmxON部門/D,價(jià)格FOR主要設(shè)備
USEbmxLIST&&主窗口顯示如下記錄號(hào)編號(hào)名稱啟用日期價(jià)格部門主要設(shè)備備注商標(biāo)
1037-2磨床07/21/90241292.1222.T.memogen2016-2車床01/15/9227132.7321.T.memogen3016-1車床03/05/9062044.6121.T.Memogen4100-1微機(jī)08/12/978810.0012.T.memoGen1)排序后會(huì)產(chǎn)生一個(gè)新表
2)可以與For、Fields等子句一起使用索引結(jié)構(gòu)復(fù)合索引文件.CDX,主名與表的主名相同,自動(dòng)維護(hù),索引只包含關(guān)鍵字和記錄號(hào),同一時(shí)間只有一個(gè)索引標(biāo)識(shí)起作用。表3.1索引功能分類表索引類型關(guān)鍵字重復(fù)值說明創(chuàng)建修改命令索引個(gè)數(shù)普通索引允許可作為一對(duì)多永久關(guān)系中的“多方”INDEX允許多個(gè)唯一索引允許,但輸出無重復(fù)值為與以前版本兼容而設(shè)置候選索引不允許,輸入重復(fù)值將禁止存盤可用作主關(guān)鍵字,可用于在永久關(guān)系中建立參照完整性INDEXCREATETABLEALTERTABLE主索引僅適用數(shù)據(jù)庫表,可用于在永久關(guān)系中建立參照完整性CREATETABLEALTERTABLE僅可1個(gè)建立索引文件或增加索引標(biāo)識(shí)
INDEXON<索引關(guān)鍵字>TO<單索引文件名>|TAG<索引標(biāo)識(shí)名>[OF<復(fù)合索引文件名>][FOR<條件>][COMPACT][ASCENDING|DESCENDING][UNIQUE|CANDIDATE][ADDITIVE]確定主控索引
SETORDERTO[<數(shù)值表達(dá)式>|<單索引文件名>|[TAG]<索引標(biāo)識(shí)>[ASCENDING|DESCENDING]]
[例3-3]為SB.DBF建立一個(gè)結(jié)構(gòu)復(fù)合索引文件,其中包括3個(gè)索引:
(1)記錄以價(jià)格降序排列,索引標(biāo)識(shí)為普通索引型。
(2)記錄以部門升序排列,部門相同時(shí)則按價(jià)格升序排列,索引標(biāo)識(shí)為普通索引型。
(3)記錄以部門升序排列,部門相同時(shí)則按價(jià)格降序排列,索引標(biāo)識(shí)為候選索引型。
USEsbINDEXON價(jià)格TAGjgDESCENDING&&建立SB.CDX,關(guān)鍵字價(jià)格,JG為普通索引型索引標(biāo)識(shí)
LIST&&記錄已按價(jià)格降序排列
INDEXON部門+STR(價(jià)格,9,2)TAGbmjg;&&關(guān)鍵字為字符表達(dá)式“部門+STR(價(jià)格,9,2)”,索引標(biāo)識(shí)BMJG增入SB.CDXLIST&&索引表達(dá)式運(yùn)算后升序排列,使記錄按部門升序、部門相同按價(jià)格升序排列
INDEXONVAL(部門)-價(jià)格/1000000TAGbmjg1CANDIDATE;&&bmjg1為候選索引型索引標(biāo)識(shí),索引標(biāo)識(shí)增入SB.CDXLIST&&索引表達(dá)式運(yùn)算后升序排列,使記錄按部門升序、部門相同按價(jià)格降序排列
SETORDERTOTAGjg&&指定SB.CDX的索引標(biāo)識(shí)JG為主控索引,JG索引序號(hào)為3LIST&&記錄按價(jià)格降序排列
SETORDERTOTAGbmjgLIST&&記錄按(2)排列3.2查詢命令順序查詢:LOCATEFOR<條件>[<范圍>][WHILE<條件>]CONTINUEUSEsbLOCATEFOR價(jià)格<15000ANDNOT主要設(shè)備
DISPLAY &&顯示:記錄號(hào)編號(hào)名稱啟用日期價(jià)格部門主要設(shè)備備注商標(biāo)
4038-1鉆床10/12/895275.0023.F.MemogenCONTINUE?RECNO(),名稱,價(jià)格,主要設(shè)備&&顯示:6復(fù)印機(jī)10305.01.F.CONTINUE&&狀態(tài)條顯示:已到定位范圍末尾。索引查詢:
SEEK<表達(dá)式>USEsbINDEXON編號(hào)TAGbhSEEK"038-1"&&不可寫為:SEEK編號(hào)="038-1"?RECNO()&&顯示:4INDEXON啟用日期TAGqyrqSEEK{3/5/90}?FOUND()&&.顯示.T.,表示找到該日期
INDEXON價(jià)格TAGjgSEEK1000.003.3數(shù)據(jù)工作期工作區(qū)的查詢
部門代碼表和增值表
BMDM.DBF:ZZ.DBF:
結(jié)構(gòu):bmdm(代碼c(2),名稱c(6))結(jié)構(gòu):zz(編號(hào)c(5),增值n(8,2))
記錄:記錄:
記錄號(hào)代碼名稱記錄號(hào)編號(hào)增值
111辦公室1016-12510.00212設(shè)備科2016-11000.00321一車間3038-11200.00422二車間
523三車間3.3.1多工作區(qū)的查詢1)工作區(qū)號(hào)a)共有32767個(gè)工作區(qū),編號(hào)從1到32767b)一個(gè)工作區(qū)只能打開一個(gè)表,打開另一個(gè)表時(shí),以前的會(huì)自動(dòng)關(guān)閉c)一個(gè)表在并關(guān)閉時(shí)若在其他工作期中打開它時(shí),會(huì)發(fā)生“文件正在使用”錯(cuò)誤d)選擇工作區(qū):Select<工作區(qū)號(hào)選擇工作區(qū)命令:SELECT<工作區(qū)號(hào)>|<別名>CLOSEALL&&關(guān)閉所有打開的表,當(dāng)前工作區(qū)為1號(hào)工作區(qū)
SELECT0&&1號(hào)工作區(qū)未打開過表,選定的工作區(qū)即該區(qū)
USEsbGO3&&移至3號(hào)記錄,注意該記錄的部門字段值為22SELECT0&&選定2號(hào)工作區(qū)為當(dāng)前工作區(qū)
USEbmdmINDEXON代碼TAGdmSEEKsb.部門&&即SEEK22?sb.編號(hào),a.名稱,名稱
&&顯示“037-2磨床二車間”。這里“a.名稱”指sb.名稱,“名稱”指bmdm.名稱
SELECTsb&&選定SB.DBF所在工作區(qū)為當(dāng)前工作區(qū)
?編號(hào),名稱,bmdm.名稱&&顯示“037-2磨床二車間”
SELECT()&&顯示:1SELECT2&&選定2號(hào)工作區(qū)為當(dāng)前工作區(qū)數(shù)據(jù)工作期窗口打開:選定窗口菜單的數(shù)據(jù)工作期命令建立視圖文件(.VUE):
文件菜單的另存為命令
CREATEVIEW<視圖文件名>
打開視圖文件:SETVIEWTO<視圖文件名>表的關(guān)聯(lián)
關(guān)聯(lián)的多一關(guān)系與一多關(guān)系
多一關(guān)系在數(shù)據(jù)工作期窗口建立多一關(guān)系:SETSTRICTDATETO0BROWSEFIELDSBMDM.名稱:H='部門名‘;Sb.編號(hào),Sb.名稱:H=‘設(shè)備名’,Sb.啟用日期;FORSb.啟用日期>={01/01/92}瀏覽結(jié)果:多一關(guān)系顯示部門名用命令序列實(shí)現(xiàn):SELECT2USEbmdm&&打開子表INDEXON代碼TAG代碼ADDITIVE&&子表在代碼字段建立索引SELECT1USEsb&&打開父表SETRELATIONTOsb.部門INTObmdmADDITIVE&&指定在部門字段對(duì)子表設(shè)置多一關(guān)系
建立關(guān)聯(lián)命令:
SETRELATIONTO[<表達(dá)式1>INTO<別名1>,…,<表達(dá)式N>INTO<別名N>][ADDITIVE]
說明一多關(guān)系的命令:
SETSKIPTO[<表別名1>[,<表別名2>]…]
一多關(guān)系的命令序列示例:
CLOSEALLSELECT2USEbmdm&&子表1SETORDERTOTAG代碼
SELECT3USEzz&&子表2INDEXON編號(hào)TAGbhSELECT1USEsb&&父表
SETRELATIONTOsb.部門INTObmdmSETRELATIONTOsb.編號(hào)INTOzzADDITIVESETSKIPTOzz&&子表ZZ為多方
BROWSEFIELDS編號(hào),價(jià)格,zz.增值,bmdm.名稱:H='部門名'一父多子瀏覽窗口3.4統(tǒng)計(jì)命令計(jì)數(shù)命令
COUNT[<范圍>][FOR<條件1>][WHILE<條件2>][TO<內(nèi)存變量>]求和命令
SUM[<數(shù)值表達(dá)式表>][<范圍>][FOR<條件1>][WHILE<條件2>][TO<內(nèi)存變量表>|ARRAY<數(shù)組>]求平均值命令
AVERAGE[<數(shù)值表達(dá)式表>][<范圍>][FOR<條件1>][WHILE<條件2>][TO<內(nèi)存變量表>|ARRAY<數(shù)組>]
匯總命令
TOTALTO<文件名>ON<關(guān)鍵字>[FIELDS<數(shù)值型字段表>][<范圍>][FOR<條件1>][WHILE<條件2>][例3-15]在DX.DBF中按設(shè)備的編號(hào)來匯總大修費(fèi)用,試寫出命令序列。
USEdxINDEXON編號(hào)TAGbhTOTALON編號(hào)TOjghzFIELDS費(fèi)用&&按編號(hào)匯總費(fèi)用,寫入新表JGHZ.DBFUSEjghzBROWSEFIELDS編號(hào),費(fèi)用TITLE'大修費(fèi)用匯總表'3.5SELECT-SQL查詢SELECT-SQL命令:
SELECT[ALL|DISTINCT][<別名>.]<SELECT表達(dá)式>[AS<列名>][,[<別名>.]<SELECT表達(dá)式>[AS<列名>]...]FROM[FORCE][<數(shù)據(jù)庫名>!]<表名>[<本地名>][[INNER|LEFT[OUTER]|RIGHT[OUTER]|FULL[OUTER]JOIN<數(shù)據(jù)庫名>!]<表名>[<本地名>][ON<聯(lián)接條件>...][[INTO<目標(biāo)>]
[TOFILE<文件名>[ADDITIVE]
TOPRINTER[PROMPT]
TOSCREEN]][PREFERENCE<名字>][NOCONSOLE][PLAIN][NOWAIT][WHERE<聯(lián)接條件>[AND<聯(lián)接條件>...][ANDOR<篩選條件>[AND
OR<篩選條件>...]]][GROUPBY<組表達(dá)式>[,<組表達(dá)式>...]][HAVING<篩選條件>][UNION[ALL]<SELECT命令>][ORDERBY<關(guān)鍵字表達(dá)式>[ASCDESC][,<關(guān)鍵字表達(dá)式>[ASC
DESC]...]][TOP<數(shù)值表達(dá)式>[PERCENT]]例:查詢大修過的設(shè)備的編號(hào)、名稱和部門名:SELECTdx.編號(hào),sb.名稱,bmdm.名稱AS部門名FROMsb,dx,bmdm;WHEREdx.編號(hào)=sb.編號(hào)ANDbmdm.代碼=sb.部門將SB.DBF的記錄按部門升序排列,部門相同時(shí)按價(jià)格降序排列:SELECT編號(hào),名稱,部門,價(jià)格FROMsbORDERBY部門,價(jià)格DESC查找大修過的所有設(shè)備:
SELECTDISTINCT編號(hào)FROMdx求出每一設(shè)備的增值金額,并送至打印機(jī)打?。?/p>
SELECT編號(hào),SUM(增值)FROMzzGROUPBY編號(hào)TOPRINTER查詢?cè)O(shè)計(jì)器用查詢?cè)O(shè)計(jì)器查詢數(shù)據(jù)的基本步驟打開查詢?cè)O(shè)計(jì)器—進(jìn)行查詢?cè)O(shè)置,即設(shè)置被查詢的表、聯(lián)接條件、字段等輸出要求和查詢結(jié)果的去向—執(zhí)行查詢—保存查詢?cè)O(shè)置。打開查詢?cè)O(shè)計(jì)器窗口
MODIFYQUERY<文件名>
查看由查詢生成的SQL命令快捷菜單的“查看SQL命令”查詢結(jié)果的圖形處理查詢?cè)O(shè)計(jì)器窗口3.6數(shù)據(jù)庫與視圖
數(shù)據(jù)庫表與自由表創(chuàng)建數(shù)據(jù)庫SBSJ
選定文件菜單的新建命令—選定數(shù)據(jù)庫選項(xiàng)按鈕—選定新建文件按鈕—在創(chuàng)建對(duì)話框中鍵入數(shù)據(jù)庫名:SBSJ(擴(kuò)展名允許省略)—選定保存按鈕后即產(chǎn)生數(shù)據(jù)庫文件SBSJ.DBC,同時(shí)出現(xiàn)數(shù)據(jù)庫設(shè)計(jì)器數(shù)據(jù)庫設(shè)計(jì)器數(shù)據(jù)詞典
數(shù)據(jù)庫SBSJ的永久關(guān)系(圖3.34)4.1程序文件4.1.1程序文件的建立與執(zhí)行a)建立或修改:Modifycommand<filename>b)Ctrl+W關(guān)閉并保存文件c)執(zhí)行:Do<文件名>d)書寫規(guī)則(1)命令分行(2)注釋“*”和“&&”定位輸入命令:
@<行,列>[SAY<表達(dá)式1>][[GET<變量名>][DEFAULT<表達(dá)式2>]WAIT命令:WAIT[<信息文本>][TO<內(nèi)存變量>] [WINDOW[AT<行>,<列>]][NOWAIT][CLEAR|NOCLEAR][TIMEOUT<數(shù)值表達(dá)式>]
[例4-2]WAIT命令輸出信息示例。
WAIT"請(qǐng)檢查輸入內(nèi)容!"WINDOW4.2程序的控制結(jié)構(gòu)分支語句格式:
IF<邏輯表達(dá)式> <語句序列1>[ELSE <語句序列2>] ENDIF例:
USEsbLOCATEFORNOT主要設(shè)備
IFFOUND()&&查到,FOUND函數(shù)返回.T.DISPLAY名稱,價(jià)格
REPLACE價(jià)格WITH價(jià)格*(1-0.1)DISPLAY名稱,價(jià)格
ELSEWAIT"無此設(shè)備!"WINDOWENDIFUSERETURN多分支語句格式:DOCASECASE<邏輯表達(dá)式1><語句序列1>CSAE<邏輯表達(dá)式2><語句序列2>…CASE<邏輯表達(dá)式n><語句序列n>[OTHERWISE<語句序列n+1>]ENDCASE循環(huán)語句格式與示例條件循環(huán)步長(zhǎng)循環(huán)DOWHILE<邏輯表達(dá)式><語句序列>ENDDOFOR<內(nèi)存變量>=<數(shù)值表達(dá)式1>TO<數(shù)值表達(dá)式2>[STEP<數(shù)值表達(dá)式3>]<語句序列>ENDFOR
NEXT*e4-7.prgUSEsbDOWHILENOTEOF()IF價(jià)格>10000?名稱
ENDIFSKIPENDDOUSE*e4-9.prgs=0&&s為累加器,初值為0FORi=1TO100&&i為計(jì)數(shù)器,初值為1 s=s+i&&累加
NEXT?"s=",s掃描循環(huán)其他SCAN[<范圍>][FOR<邏輯表達(dá)式1>][WHILE<邏輯表達(dá)式2>]<語句序列>ENDSCAN
循環(huán)輔助語句
LOOP語句EXIT語句多重循環(huán)*e4-10.prgUSEsbSCANFOR價(jià)格>10000?名稱
ENDSCANUSE4.3多模塊程序
類型格式調(diào)用命令子程序(文件)[PARAMETERS<參數(shù)表>]<命令序列>[RETURN]DO<程序名1>[WITH<參數(shù)表>][IN<程序名2>]自定義函數(shù)主要在表達(dá)式中調(diào)用函數(shù)使用RETURN帶回計(jì)算結(jié)果過程和子程序使用輸入的參數(shù)帶回計(jì)算結(jié)果。過程(多個(gè)過程一個(gè)文件)PROCEDURE<過程名>[PARAMETERS<參數(shù)表>]<命令序列>[RETURN]自定義函數(shù)[FUNCTION<函數(shù)名>][PARAMETERS<參數(shù)表>]<語句序列>[RETURN<表達(dá)式>]4.3.4變量的作用域
建立公共變量命令格式:PUBLIC<內(nèi)存變量表>建立私有變量命令格式:PRIVATE[<內(nèi)存變量表>][ALL[LIKE|EXCEPT<通配符>]]建立本地變量命令格式:LOCAL<內(nèi)存變量表>[例4-17]
變量隱藏與恢復(fù)的示例。(1)假定已建立了如下的程序:*e4-17.prgPARAMETERSsj&&sj為私有變量,程序調(diào)用前的bj被隱藏起來
PRIVATEmj&&mj為私有變量,程序調(diào)用前的同名變量mj被隱藏起來
mj=3.14*sj*sj?”程序執(zhí)行時(shí)的變量清單:”LISTMEMOLIKE?jRETURN(2)在命令窗口鍵入下列命令:
RELEASEALL&&清除用戶定義的所有內(nèi)存變量
mj=0&&在命令窗口設(shè)置的變量是公共變量
bj=3?”程序執(zhí)行前的變量清單:”LISTMEMOLIKE?j&&顯示變量清單
DOe4-17WITHbj&&bj傳入e4-17?"程序執(zhí)行后的變量清單:"&&顯示變量清單
LISTMEMOLIKE?j&&程序執(zhí)行結(jié)束時(shí),被屏蔽的變量mj,bj被恢復(fù)4.4窗口設(shè)計(jì)樣例
BROWSE命令定義功能鍵命令格式:
ONKEY[LABEL<鍵標(biāo)號(hào)>][<命令>]
窗口關(guān)閉命令
RELEASEWINDOWS[<窗口名表>]CLEARWINDOWSCLEARALL信息對(duì)話框函數(shù)函數(shù)格式:
MESSAGEBOX(<字符表達(dá)式1>[,<數(shù)值表達(dá)式>[,<字符表達(dá)式2>]])5.1下拉式菜單設(shè)計(jì)創(chuàng)建菜單的基本步驟建立或打開菜單設(shè)計(jì)器:MODIFYMENU<文件名>
進(jìn)行菜單設(shè)計(jì)快速菜單菜單設(shè)計(jì)器—設(shè)計(jì)并生成下拉式菜單與快捷菜單的工具保存菜單定義:文件菜單的保存命令生成菜單程序:“菜單”菜單的生成命令運(yùn)行菜單程序:例如DOCD.MPR快速菜單“菜單”菜單的快速菜單命令5.1.3菜單設(shè)計(jì)器窗口說明:1)菜單名稱:用于輸入顯示的菜單名稱,可以設(shè)置訪問鍵’\<F’,代表用Alt+F來訪問。2)結(jié)果:
a)命令:定義一條命令
b)過程:定義一個(gè)過程
c)子菜單:添加子菜單
d)填充名稱或菜單項(xiàng):定義一下好記的名稱3)選項(xiàng):
a)定義快捷鍵(Ctrl+V)
b)設(shè)定淺色菜單:跳過-滿足條件時(shí)灰色顯示
c)設(shè)定狀態(tài)欄信息4)插入、刪除、預(yù)覽5)插入欄:插入一個(gè)與系統(tǒng)菜單一樣的菜單,建立或編輯子菜單時(shí)為可選“顯示”菜單常規(guī)選項(xiàng)菜單選項(xiàng)[例5-2]利用菜單設(shè)計(jì)器建立如圖5.9所示的下拉式菜單,并要求:(1)打印菜單包括“設(shè)備表”和“設(shè)備價(jià)格表”兩個(gè)菜單項(xiàng)。(2)數(shù)據(jù)維護(hù)菜單的“瀏覽記錄”菜單項(xiàng)能用來打開一個(gè)設(shè)備瀏覽窗口。圖5.9設(shè)備管理系統(tǒng)的下拉式菜單
初始化代碼:CLEARALLCLEARKEYBOARD'{Ctrl+F4}'&&關(guān)閉Command窗口
MODIFYWINDOWSCREENTITLE'設(shè)備管理系統(tǒng)'&&設(shè)置菜單窗口標(biāo)題
USEsb“退出”代碼:USEMODIFYWINDOWSCREEN&&恢復(fù)VFP主窗口的標(biāo)題
SETSYSMENUTODEFAULT&&恢復(fù)VFP系統(tǒng)菜單
ACTIVATEWINDOWCOMMAND&&恢復(fù)Command窗口5.2彈出式菜單設(shè)計(jì)調(diào)用程序:*e5-3.prgCLEARALLPUSHKEYCLEAR&&清除以前設(shè)置過的功能鍵ONKEYLABELRIGHTMOUSEDOe5-3.mpr&&設(shè)置鼠標(biāo)右鍵為功能鍵,預(yù)置彈出式菜單USEsbBROWSE&&打開瀏覽窗口USEPUSHKEYCLEAR圖5.15快捷菜單6.1表單向?qū)?/p>
打開向?qū)нx取對(duì)話框:在工具菜單的向?qū)ё硬藛沃羞x定表單命令。圖6.1向?qū)нx取對(duì)話框單表表單向?qū)c一對(duì)多表單向?qū)D6.2表單向?qū)У淖侄芜x取圖6.6設(shè)備維護(hù)表單
圖6.8一對(duì)多表單向?qū)?duì)話框的父表字段圖6.11部門設(shè)備維護(hù)窗口6.2表單設(shè)計(jì)器創(chuàng)建和運(yùn)行表單的基本步驟打開表單設(shè)計(jì)器MODIFYFORM〈文件名〉對(duì)象操作與編碼:表單設(shè)計(jì)器,數(shù)據(jù)環(huán)境設(shè)計(jì)器,表單控件工具欄保存表單運(yùn)行表單:例如DOFORMSBQ快速創(chuàng)建表單:表單菜單的快速表單命令圖6.12
顯示快速表單的表單設(shè)計(jì)器,數(shù)據(jù)環(huán)境設(shè)計(jì)器,表單控件工具欄等圖6.14表單控件工具欄中的按鈕
6.3面向?qū)ο蟮某绦蛟O(shè)計(jì)方法
對(duì)象控件容器屬性事件方法程序圖6.16屬性窗口的組成屬性說明應(yīng)用于Caption指定對(duì)象的標(biāo)題(顯示時(shí)標(biāo)識(shí)對(duì)象的文本)表單,標(biāo)簽,命令按鈕等Name指定對(duì)象的名字(用于在代碼中引用對(duì)象)任何對(duì)象Value指定控件當(dāng)前狀態(tài)(取值)文本框,列表框等ForeColor指定對(duì)象中的前景色(文本和圖形的顏色)表單,標(biāo)簽,文本框,命令按鈕等BackColor指定對(duì)象內(nèi)部的背景色表單,標(biāo)簽,文本框,列表框等BackStyle指定對(duì)象背景透明否(透明則背景著色無效)標(biāo)簽,文本框,圖象等BorderStyle指定邊框樣式為無邊框,單線框等表單,標(biāo)簽,文本框等AlwaysOnTop是否處于其它窗口之上(可防止遮擋)表單AutoCenter是否在VFP主窗口內(nèi)自動(dòng)居中表單ScaleMode指定坐標(biāo)單位表單Closable標(biāo)題欄中關(guān)閉按鈕是否有效表單Controlbox是否取消標(biāo)題欄所有的按鈕表單,工具欄MaxButton是否有最大化按鈕表單MinButton是否有最小化按鈕表單Movable運(yùn)行時(shí)表單能否移動(dòng)表單WindowState指定運(yùn)行時(shí)是最大化還或最小化表單AutoCloseTables表單釋放時(shí)是否關(guān)閉表或視圖,默認(rèn)為.T.數(shù)據(jù)環(huán)境AutoOpenTables表單加載時(shí)是否打開表或視圖,默認(rèn)為.T.數(shù)據(jù)環(huán)境表6.3屬性選列事件觸發(fā)時(shí)機(jī)Load創(chuàng)建對(duì)象前Init創(chuàng)建對(duì)象時(shí)Activate對(duì)象激活時(shí)GotFocus對(duì)象得到焦點(diǎn)時(shí)Click單擊鼠標(biāo)左鍵時(shí)DblClick雙擊鼠標(biāo)左鍵時(shí)MouseUp釋放鼠標(biāo)鍵時(shí)MouseDown按下鼠標(biāo)鍵時(shí)KeyPress按下并釋放某鍵盤鍵時(shí)Valid對(duì)象失去焦點(diǎn)前LostFocus對(duì)象失去焦點(diǎn)時(shí)Unload釋放對(duì)象時(shí)表6.4VFP部分常見事件表方法程序一例:Refresh方法程序
[Form.]Object.Refresh
功能:重畫表單或控件,
并刷新所有的值。對(duì)象引用對(duì)象引用規(guī)則(1)通常用以下引用關(guān)鍵字開頭:THISFORMSET表示當(dāng)前表單集(表單集的概念參閱8.1.2節(jié))THISFORM表示當(dāng)前表單
THIS表示當(dāng)前對(duì)象(2)引用格式:引用關(guān)鍵字后跟一個(gè)點(diǎn)號(hào),再寫出被引用對(duì)象或者對(duì)象的屬性,事件或方法程序。例如:THIS.Caption&&本對(duì)象(表單或控件)的Caption屬性THISFORM.Cls&&本表單的Cls方法程序,清除表單中的圖形和文本THISFORM.Command1.Caption&&本表單的Command1命令按鈕的Caption屬性THIS.Command1.Click&&本對(duì)象的Command1命令按鈕的Click事件(3)控件也可引用包含它的容器,格式為:Control.Parent其中Control表示控件,Parent表示容器。例如THIS.Parent.Command1.Caption,表示引用本對(duì)象的容器(例如表單)的Command1命令按鈕的Caption屬性。編程方式設(shè)置屬性值屬性值設(shè)置格式:ObjectName.Property[=Setting]其中Setting為要設(shè)置的屬性值。例如,THIS.FontBold=.T.&&本對(duì)象文本以粗體顯示
THIS.Parent.Caption=time()&&本對(duì)象的容器的caption屬性設(shè)置為當(dāng)前時(shí)間
[例6-4]設(shè)計(jì)只含一個(gè)文本框控件的表單(見圖6.17),要求逐次單擊文本框的內(nèi)部能輪流顯示當(dāng)前日期與時(shí)間,試寫出設(shè)計(jì)步驟。
(1)創(chuàng)建表單:往命令窗口鍵入命令MODIFYFORMrqsj,使顯示rqsj表單設(shè)計(jì)器窗口。
(2)創(chuàng)建文本框:單擊表單控件工具欄中的文本框按鈕,然后單擊Form1表單窗口內(nèi)某處,該處就會(huì)產(chǎn)生一個(gè)Text1文本框控件。
(3)將表單的Caption屬性改為“日期與時(shí)間”:?jiǎn)螕舯韱未翱?屬性窗口的組合框中便顯示Form1
在屬性列表中選定Caption屬性
在文本框中輸入日期與時(shí)間字樣,按回車鍵后表單窗口的標(biāo)題欄就會(huì)顯示這些文字。7.1輸出類控件
標(biāo)簽(Label)
屬性選介(1)使標(biāo)簽區(qū)域自動(dòng)調(diào)整為與標(biāo)題文本大小一致:可將AutoSize屬性設(shè)置為.T.。(2)使標(biāo)簽的標(biāo)題豎排:先將WordWrap屬性設(shè)置為.T.,然后在水平方向壓縮標(biāo)簽區(qū)域迫使文字換行。(3)使標(biāo)簽與表單背景顏色一致:將BackStyle屬性設(shè)置為0(透明)(4)使標(biāo)簽帶有邊框:將BorderStyle屬性設(shè)置為1(單選框)
圖象(Image)、線條(Line)與形狀(Shape)
創(chuàng)建圖象的步驟如下:在表單上創(chuàng)建一個(gè)圖象控件
在屬性窗口選定Picture屬性,并通過文本框右側(cè)的對(duì)話按鈕選定一個(gè)圖象,該圖象即顯示在圖象控件處。線條控件用于在表單上畫各種類型的線條,包括斜線、水平線和垂直線。形狀控件用于在表單上畫出各種類型的形狀,包括矩形、圓角矩形、正方形、圓角正方形,橢圓或圓。表7.3形狀控件的形狀設(shè)置CurvatureWidth與Height相等Width與Height不等0正方形矩形1-99小圓角正方形→大圓角正方形→圓小圓角矩形→大圓角矩形→橢圓[例7-1]設(shè)計(jì)如圖7.1所示的應(yīng)用程序封面。
(1)創(chuàng)建表單FM.SCX。
(2)在表單上創(chuàng)建標(biāo)簽和形狀控件各1個(gè)。
(3)設(shè)置屬性:詳見表7.4(4)將封面的文字置前于橢圓:選定Label1,然后在布局工具欄中選定“置前”按鈕。若已置前,則該步驟可省。
(5)Form1的RightClick事件代碼編寫如下:THISFORM.Release&&右擊表單執(zhí)行Release方法程序,從內(nèi)存釋放該表單對(duì)象屬性屬性值說明Form1Desktop.T.表單設(shè)置在桌面上WindowState2表單最大化BorderStyle0取消表單邊框TitleBar0取消表單標(biāo)題欄Picturec:\vfp\gallery\graphics\tools.ico表單貼若干tools.ico拼成的壁紙Label1Caption汽車修理管理系統(tǒng)封面文字AutoSize.T.Label1區(qū)域自動(dòng)適應(yīng)標(biāo)題大小FontName隸書字體FontSize36文字大小FontBold.T.粗體ForeColor0,0,255標(biāo)題顏色為藍(lán)色BackStyle0背景透明,不顯示Label1區(qū)域Shape1Curvature99為畫橢圓,使圓角最大BorderColor255,255,0邊框顏色為黃色BackColor0,255,255背景顏色為青色表7.4“封面”屬性設(shè)置
7.2輸入類控件文本框(Text)文本框的值Value屬性焦點(diǎn)控件設(shè)置焦點(diǎn)方法程序格式:Control.SetFocus獲得焦點(diǎn)事件(GotFocusEvent)失去焦點(diǎn)事件(LostFocusEvent)控件的數(shù)據(jù)綁定ControlSource屬性文本框生成器編輯框(Edit)
列表框(List)列表框生成器
[例7-3]在列表框中填充SB表的編號(hào)和名稱兩個(gè)字段,要求選定列表框的任一項(xiàng),就能使文本框中顯示編號(hào)字段值。
(1)在表單中創(chuàng)建1個(gè)列表框控件和1個(gè)文本框控件。
(2)打開列表框生成器——在列表項(xiàng)選項(xiàng)卡的“用此填充列表”組合框中選定“表或視圖中的字段”選項(xiàng)——如圖7.4(a1)所示,通過對(duì)話按鈕選出SB表,然后將編號(hào)和名稱字段從可用字段列表添入選定字段列表中—按確定按鈕。
(3)List1的InteractiveChange事件代碼編寫如下:THISFORM.Text1.Value=THIS.Value&&將列表框選項(xiàng)值賦給文本框
圖7.5列表框選項(xiàng)(a1)表7.5列表框、組合框控件的值源類型組合框(Combo)下拉組合框Style屬性值0下拉列表框Style屬性值1控件值源的類型
設(shè)置值值源類型說明0無缺省值,運(yùn)行時(shí)用AddItem或AddListItem方法程序?qū)?shù)據(jù)分別填入列中1值RowSource設(shè)置逗號(hào)分隔的數(shù)據(jù)項(xiàng)來分別填充列2別名RowSource設(shè)置表名,表由數(shù)據(jù)環(huán)境提供,用ColumnCount確定字段數(shù)3SQL語句RowSource設(shè)置SQLSELECT命令選出記錄,并可創(chuàng)建一個(gè)臨時(shí)表或表4查詢(.QPR)RowSource設(shè)置一個(gè).QPR文件名5數(shù)組RowSource設(shè)置數(shù)組名 6字段RowSource設(shè)置逗號(hào)分隔的字段列表,首字段有表名前綴,表來自數(shù)據(jù)環(huán)境7文件在RowSource設(shè)置路徑,可用通配符或掩碼,結(jié)果以目錄與文件名填充列8結(jié)構(gòu)在RowSource設(shè)置表名,結(jié)果以字段名來填充列9彈出式菜單為與以前版本兼容而設(shè)[例7-4]試用BMDM表的代碼來修改SB表的部門字段。要求SB表在列表框顯示,BMDM表在組合框顯示;并且當(dāng)列表框確定一個(gè)記錄后,便可用組合框的選項(xiàng)來替代SB表的部門字段值。
(1)在表單上創(chuàng)建2個(gè)標(biāo)簽,1個(gè)列表框和1個(gè)組合框。
(2)在數(shù)據(jù)環(huán)境中添加SB表和BMDM。注意,若存在關(guān)聯(lián)聯(lián)線則將它取消。
(3)屬性設(shè)置:見表7.7。
(4)Combo1的InteractiveChange事件代碼編寫如下:
THISFORM.LIST1.Refresh&&在組合框列表中選項(xiàng)并替代SB.部門后更新列表框的顯示
(5)Form1的Init事件代碼編寫如下:
THISFORM.Combo1.Enabled=.F.&&使初始時(shí)不能操作組合框,只可在列表框先確定記錄
(6)List1的InteractiveChange事件代碼編寫如下:
THISFORM.Combo1.Enabled=.T.&&列表框操作后即允許組合框操作
(7)List1的Init事件代碼編寫如下:
SETORDERTOTAG編號(hào)
&&使列表按設(shè)備編號(hào)次序顯示(假定SB表中該索引標(biāo)識(shí)已存在)圖7.6選項(xiàng)替代對(duì)象屬性屬性值說明Form1Caption用BMDM表的代碼來修改SB表的部門在表單標(biāo)題欄顯示文本Label1Caption請(qǐng)指定要修改的記錄:設(shè)置第1個(gè)標(biāo)簽的顯示文本AutoSize.T.區(qū)域大小自動(dòng)適應(yīng)標(biāo)題Label2Caption請(qǐng)選供代入的部門號(hào):設(shè)置第2個(gè)標(biāo)簽的顯示文本AutoSize.T.List1RowSourceType6列表框值源類型:字段RowSourcesb.編號(hào),名稱,部門數(shù)據(jù)環(huán)境中添加表后才能設(shè)置字段ColumnCount3列表顯示3列BoundColumn1第1列作為value屬性值Combo1Style2組合框類型設(shè)置為下拉列表框RowSourceType2組合框值源類型:別名RowSourceBMDM數(shù)據(jù)環(huán)境中添加表后才能設(shè)置表名ColumnCount2列表顯示2個(gè)字段:代碼與名稱BoundColumn1第1列作為value屬性值ControlSourceSB.部門指定從列表選定的項(xiàng)存入的位置表7.7“用BMDM表修改SB表的部門”屬性設(shè)置[例7-6]在表單上創(chuàng)建1個(gè)組合框和1個(gè)文本框,要求如下:
(1)組合框的列表包含SB表的編號(hào)字段值。
(2)能在組合框中為其列表鍵入新選項(xiàng)。
(3)若選取組合框列表中的項(xiàng)(也可以是剛添入的新選項(xiàng)),便能將它送入文本框。假定組合框和文本框已在表單上創(chuàng)建(圖略),下面列出主要的屬性和事件代碼。
(1)Combo1屬性設(shè)置
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年度黑龍江省高校教師資格證之高等教育心理學(xué)考前沖刺試卷B卷含答案
- 國(guó)光蘋果運(yùn)輸效率提升策略
- 2024年圖書管理員考試實(shí)習(xí)心得試題及答案
- 全面解析2024年圖書管理員考試試題及答案
- 2025年抗變態(tài)反應(yīng)藥合作協(xié)議書
- 2025年度礦山礦產(chǎn)資源綜合利用合同
- 二零二五年度房屋租賃安全免責(zé)責(zé)任書模板
- 二零二五年度文化旅游投資人投資協(xié)議
- 2025年度水利工程合同印花稅稅率調(diào)整政策解讀
- 二零二五年度幼兒園入園安全協(xié)議書與心理健康教育合作
- 中醫(yī)適宜技術(shù)-中藥熱奄包
- 2024年江蘇省南通市國(guó)家保安員資格考試題庫國(guó)編版
- 全國(guó)高中生物奧林匹克競(jìng)賽試題
- 中醫(yī)治肥胖課件
- 中醫(yī)針灸懸針
- 船舶運(yùn)輸合同(運(yùn)輸管樁)
- 2023年全國(guó)職業(yè)院校技能大賽-老年護(hù)理與保健賽項(xiàng)規(guī)程
- 2024年新課標(biāo)Ⅱ高考英語真題試題(原卷版+含解析)
- 浙江省寧波市2024屆高三下學(xué)期選考模擬考試(寧波二模)2023至2024化學(xué)試題附參考答案(解析)
- 2024年蘇州工業(yè)職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫完美版
- 嘉世咨詢:2024現(xiàn)制茶飲行業(yè)簡(jiǎn)析報(bào)告
評(píng)論
0/150
提交評(píng)論