版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第4章結(jié)構(gòu)化查詢語言SQL和報(bào)表SQL語言的基本概述數(shù)據(jù)定義語言DDL數(shù)據(jù)操縱語言DML查詢和SELECT命令報(bào)表和標(biāo)簽小結(jié)2025/2/314.1SQL語言的基本概述結(jié)構(gòu)化查詢語言(StructuredQueryLanguage,簡(jiǎn)稱SQL)SQL是用于對(duì)存放在計(jì)算機(jī)數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行組織、管理和檢索的工具,是一種用于和數(shù)據(jù)庫進(jìn)行交互通信的計(jì)算機(jī)語言。SQL是1974年由Boyce和Chamberlin提出的,并在IBM公司研制的SystemR上首次實(shí)現(xiàn)了這種語言,由于它的功能豐富,使用方式靈活和語言簡(jiǎn)潔易學(xué)等突出特點(diǎn),很受計(jì)算機(jī)界的歡迎?,F(xiàn)在SQL語言已成為關(guān)系型數(shù)據(jù)庫操縱語言的國(guó)際標(biāo)準(zhǔn)。VFP提供了SQL語言支持2025/2/324.1.1SQL語言的基本概念SQL語言支持關(guān)系型數(shù)據(jù)庫的三級(jí)模式結(jié)構(gòu),其中外模式對(duì)應(yīng)于視圖和部分基本表,模式對(duì)應(yīng)于基本表,內(nèi)模式對(duì)應(yīng)于存儲(chǔ)文件。在SQL語言中,一個(gè)關(guān)系就對(duì)應(yīng)于一個(gè)表,基本表本身是獨(dú)立存在的表,對(duì)應(yīng)一個(gè)存儲(chǔ)文件;存儲(chǔ)文件的邏輯結(jié)構(gòu)組成了關(guān)系型數(shù)據(jù)庫的內(nèi)模式。視圖是從基本表或其他視圖導(dǎo)出的表,視圖只是一個(gè)虛表。在用戶看來,視圖和基本表都是關(guān)系,而存儲(chǔ)文件對(duì)用戶是透明的。2025/2/334.1.2SQL的基本功能SQL語言由3部分組成:數(shù)據(jù)定義語言DDL(DateDefinitionLanguage)。數(shù)據(jù)操縱語言DML(DateManipulationLanguage)。數(shù)據(jù)控制語言DCL(DateControlLanguage)。其主要命令如表4-1所示。SQL功能命令數(shù)據(jù)定義語言DDLCreate、Drop、Alter數(shù)據(jù)操縱語言DMLSelect、Insert、Update、Delete數(shù)據(jù)控制語言DCLGrant、Revoke其中,數(shù)據(jù)定義語言DDL提供了完整的定義數(shù)據(jù)庫所必需的語言工具,用來創(chuàng)建、修改、刪除數(shù)據(jù)庫對(duì)象;數(shù)據(jù)操縱語言DML用于查詢或者修改數(shù)據(jù);數(shù)據(jù)控制語言DCL用來管理用戶的訪問權(quán)限,由于VFP
沒有權(quán)限管理功能,所以不支持DCL命令。
2025/2/344.2.1用Create語句創(chuàng)建基本表命令格式:CREATETABLE表名[FREE] (<FieldName1><FieldType>[(寬度,小數(shù))][NULL][NOTNULL] [CHECK<邏輯表達(dá)式>[ERROR<文本信息>]] [DEFAULT<表達(dá)式>] [PRIMARYKEY/UNIQUE] ,<FieldName2>…)
命令功能:創(chuàng)建數(shù)據(jù)表的結(jié)構(gòu)。
2025/2/364.2.1用Create語句創(chuàng)建基本表(續(xù))命令說明:CREATETABLE表名:指定創(chuàng)建表文件名。FREE:在數(shù)據(jù)庫打開的情況下創(chuàng)建的是自由表。默認(rèn)在數(shù)據(jù)庫未打開時(shí)創(chuàng)建的是自由表,在數(shù)據(jù)庫打開時(shí)創(chuàng)建的是數(shù)據(jù)庫表。CHECK<邏輯表達(dá)式>:為字段值指定約束條件;ERROR<文本信息>:用來指定當(dāng)不滿足約束條件時(shí)顯示的出錯(cuò)信息。DFAULT:指定默認(rèn)的字段值。PRIMARYKEY:指定當(dāng)前字段為主索引關(guān)鍵字;UNIQUE:指定當(dāng)前字段為候選索引關(guān)鍵字。NULL/NOTNULL:表示該字段是否可以為空。2025/2/374.2.1用Create語句創(chuàng)建基本表(續(xù))【例4.1】在圖書館管理系統(tǒng)中創(chuàng)建dzzl(讀者種類)表,包含zlbh(種類編號(hào))、zlmc(種類名稱)、jssl(借書數(shù)量)、jsqx(借書期限)、bz(備注)幾個(gè)字段。OPENDATABASE圖書館管理CTEATETABLEdzzl(zlbhc(10)notnull,zlmcc(10)notnull,jsslc(8),jsqxc(8),Bzc(20))
若在命令窗口執(zhí)行MODIFYSTRUCTURE命令,就可以在彈出的對(duì)話框中見到dzzl表結(jié)構(gòu),如圖4-2所示。
圖4-2創(chuàng)建的dzzl表結(jié)構(gòu)2025/2/384.2.1用Create語句創(chuàng)建基本表(續(xù))【例4.2】創(chuàng)建一個(gè)名為“通訊錄”的自由表,包含姓名、工作單位、電話號(hào)碼、家庭住址4個(gè)字段,所得的表預(yù)覽如圖4-3所示。CREATETABLE通訊錄
FREE(姓名C(10),工作單位C(20),電話號(hào)碼C(12),家庭住址C(20))BROWSE由于沒有向表中添加任何記錄,所以在預(yù)覽時(shí)看不見任何的記錄。圖4-3創(chuàng)建的通訊錄表2025/2/394.2.1用Create語句創(chuàng)建基本表(續(xù))【例4.3】創(chuàng)建一個(gè)“圖書訂單”的數(shù)據(jù)庫,并在此數(shù)據(jù)庫中創(chuàng)建一個(gè)“圖書”表,圖書表含有訂單號(hào)、圖書編號(hào)、書名、單價(jià)、數(shù)量等字段。CREATEDATEBASE圖書訂單CREATETABLE圖書(訂單號(hào)
C(10); DEFAULT"10001",圖書編號(hào)
C(10)PRIMARYKEY,;
書名C(10),單價(jià)
N(8,2);
數(shù)量
N(6)CHECK數(shù)量>=100AND數(shù)量<=1000;
ERROR"數(shù)量范圍在100和1000之間")圖4-4圖書表的索引圖預(yù)覽此表的設(shè)計(jì)器可以看見“圖書編號(hào)”已經(jīng)被設(shè)為主索引,如圖4-4所示。
2025/2/3104.2.1用Create語句創(chuàng)建基本表(續(xù))【例4.4】在圖書訂單數(shù)據(jù)庫中建立一個(gè)新表“訂單”表,含有訂單編號(hào)、圖書編號(hào)、客戶編號(hào)、訂貨日期、發(fā)貨日期幾個(gè)字段。OPENDATABASE圖書訂單CREATETABLE訂單(訂單編號(hào)
C(10)PRIMARYKEY,; 客戶編號(hào)
C(10),訂貨日期
D,發(fā)貨日期D; 圖書編號(hào)C(10),FOREIGNKEY圖書編號(hào); TAG圖書編號(hào)
REFERENCES圖書)
圖4-5圖書表和訂單表之間的關(guān)系在命令窗口中輸入“MODIFYDATABASE訂數(shù)訂單”命令,可在彈出的“數(shù)據(jù)庫設(shè)計(jì)器”窗口中見到圖書表和訂單表之間已建立的關(guān)系,如圖4-5所示。
2025/2/3114.2.2用Alter修改基本表命令格式1:ALTERTABLE<表名>ADD/ALTER[COLUMN]<字段名1><字段類型>[(字段寬度[,小數(shù)位數(shù)])][NULL][NOTNULL][CHECK<邏輯表達(dá)式>[ERROR<文本信息>]] [DEFAULT<表達(dá)式>] [PRIMARYKEY/UNIQUE][REFERENCES<表名2>[TAG<標(biāo)識(shí)名1>]]命令功能:修改表中原有的字段,或者在表中增加新的字段。2025/2/3124.2.2用Alter修改基本表(續(xù))命令說明:ADD[COLUMN]<字段名1><字段類型>[(字段寬度[,小數(shù)位數(shù)])]:增加新字段,并指定新增字段的名稱、類型、字段寬度及小數(shù)位數(shù)。[NULL][NOTNULL]:指定新字段是否接受空值。ALTER[COLUMN]<字段名1><字段類型>[(字段寬度[,小數(shù)位數(shù)])]:修改原有字段,并指定修改后的字段名稱、類型、字段寬度及小數(shù)位數(shù)。其他的參數(shù)含義同CREATETABLE。2025/2/3134.2.2用Alter修改基本表(續(xù))【例4.5】修改在例4.2中創(chuàng)建的通訊錄表,增加一個(gè)“性別”字段,SQL命令如下:ALTERTABLE通訊錄
ADDCOLUMN性別
C(10)再把表中字段“家庭住址”修改為“工作地址”,SQL命令如下:ALTERTABLE通訊錄
RENAMECOLUMN家庭住址
TO工作地址預(yù)覽修改后的表如圖4-6所示,與圖4-3對(duì)比就可以發(fā)現(xiàn)多出了一個(gè)字段“性別”,字段“家庭住址”改為了“工作地址”。
圖4-6修改后的通訊錄表2025/2/3144.2.2用Alter修改基本表(續(xù))【例4.6】修改例4.3中創(chuàng)建的圖書表,將“書名”字段的寬度改為20且不準(zhǔn)為空值。SQL命令如下:OPENDATABASE圖書訂單ALTERTABLE圖書
ALTER書名
C(20)NOTNULL命令格式2:ALTERTABLE<表名>ALTER[COLUMN] <字段名>[NULL][NOTNULL] [SETCHECK<邏輯表達(dá)式>[ERROR<文本信息>]] [SETDEFAULT<表達(dá)式>] [DROPCHECK] [DROPDEFAULT]
2025/2/3154.2.2用Alter修改基本表(續(xù))命令功能:刪除或者設(shè)置字段的默認(rèn)值或約束條件。命令說明:
[SETCHECK<邏輯表達(dá)式>[ERROR<文本信息>]]:為字段設(shè)置約束條件。[SETDEFAULT<表達(dá)式>]:設(shè)置默認(rèn)值。[DROPDEFAULT]:刪除默認(rèn)值。
[DROPCHECK]:刪除約束條件。
2025/2/3164.2.2用Alter修改基本表(續(xù))【例4.7】在例4.3創(chuàng)建的圖書表中,為“圖書編號(hào)”字段設(shè)置一個(gè)默認(rèn)值200601并刪除數(shù)量的約束條件,SQL命令如下:ALTERTABLE圖書
ALTER圖書編號(hào)
SETDEFAULT200601ALTERTABLE圖書
ALTER數(shù)量
DROPCHECK2025/2/3174.2.2用Alter修改基本表(續(xù))命令格式3:ALTERTABLE<表名>[DROP[COLUMN]<字段名>] [ADDPRIMARYKEY<表達(dá)式>TAG<標(biāo)識(shí)名>] [DROPPRIMARYKEY] [ADDUNIQUE<表達(dá)式>[TAG<標(biāo)識(shí)名>]] [DROPUNIQUETAG<標(biāo)識(shí)名>] [SETCHECK<邏輯表達(dá)式>[ERROR<文本信息>]] [DROPCHECK] [ADDFOREIGNKEY<表達(dá)式>TAG<標(biāo)識(shí)名>
REFERENCES<表名>[TAG<標(biāo)識(shí)名>]] [DROPFOREIGNKEYTAG<標(biāo)識(shí)名>[SAVE]] [RENAMECOLUMN<字段名>TO<字段名>]
2025/2/3184.2.2用Alter修改基本表(續(xù))命令功能:刪除表中的字段、設(shè)置或刪除表的主索引、候選索引、對(duì)字段重新命名或者刪除指定的字段的約束條件。命令說明:[DROP[COLUMN]<字段名>]:刪除指定的字段。[ADDPRIMARYKEY<表達(dá)式>TAG<標(biāo)識(shí)名>]:建立主索引。[DROPPRIMARYKEY]:刪除主索引。[ADDUNIQUE<表達(dá)式>[TAG<標(biāo)識(shí)名>]]:建立候選索引。[DROPUNIQUETAG<標(biāo)識(shí)名>]:刪除候選索引。[ADDFOREIGNKEY<表達(dá)式>TAG<標(biāo)識(shí)名>:建立外索引。REFERENCES<表名>[TAG<標(biāo)識(shí)名>]]:指定建立關(guān)聯(lián)的父表。[DROPFOREIGNKEYTAG<標(biāo)識(shí)名>[SAVE]]:刪除外索引。[RENAMECOLUMN<字段名>TO<字段名>]:對(duì)字段重新命名。
2025/2/3194.2.2用Alter修改基本表(續(xù))【例4.8】在例4.3創(chuàng)建的圖書表中,為“書名”創(chuàng)建一個(gè)候選索引,并且刪除“數(shù)量”字段,如圖4-7所示。SQL語句如下:ALTERTABLE圖書
ADDUNIQUE書名;ALTERTABLE圖書
DROPCOLUMN數(shù)量圖4-7例4.8圖在圖4-7中,字段“數(shù)量”被刪除,并創(chuàng)建候選索引“書名”。
2025/2/3204.2.2用Alter修改基本表(續(xù))【例4.9】在第1章創(chuàng)建的“圖書管理系統(tǒng)”的dzzl中,為jssl創(chuàng)建一個(gè)默認(rèn)值15,當(dāng)輸入有錯(cuò)誤時(shí)就會(huì)顯示“值為15”,刪除表中的候選索引。SQL語句如下:ALETERTABLEdzzlALTERjsslSETDEFAULT15; ERROR“值為15”;ALETERTABLEdzzlDROPUNIQUETAGzlbh
2025/2/3214.2.3用DROP命令刪除一個(gè)表隨著數(shù)據(jù)庫設(shè)計(jì)的變化,數(shù)據(jù)庫的結(jié)構(gòu)也在不斷的變化,新建的表就會(huì)不斷地代替舊表,這時(shí)某些舊表就不再需要了,可以用DROPTABLE命令刪除它。命令格式:DROPTABLE<表名>命令功能:刪除一個(gè)表,包括在這個(gè)表上建立的索引。命令說明:<表名>:指定被刪除的表?!纠?.10】刪除在例4.2中創(chuàng)建的通訊錄表,SQL命令如下:DROPTABLE通訊錄
2025/2/3224.3數(shù)據(jù)操縱語言DML數(shù)據(jù)操縱實(shí)際上就是管理數(shù)據(jù),這也是創(chuàng)建表的基本目的,主要是對(duì)關(guān)系中的具體數(shù)據(jù)進(jìn)行查詢、更新、刪除和插入,但不能夠改變數(shù)據(jù)的結(jié)構(gòu)。DML命令如表4-2所示。命令功能UPDATE更新數(shù)據(jù)庫中的已有數(shù)據(jù)DELETE用于從數(shù)據(jù)表中刪除數(shù)據(jù)INSERT增加一個(gè)新的數(shù)據(jù)到表中SELECT數(shù)據(jù)查詢表4-2DML的命令及功能2025/2/3234.3.1INSERT命令用CREATETABLE命令創(chuàng)建一個(gè)表后,創(chuàng)建的表中沒有具體的數(shù)據(jù),可以用INSERT命令向表中插入數(shù)據(jù)。命令格式:INSERTINTO表名(列名1,列名2,…)VALUES(<表達(dá)式1>,<表達(dá)式2>,…)命令說明:INTO表名:指定接受新數(shù)據(jù)的目標(biāo)表。VALUES:指明增加記錄的字段值。向表中添加的數(shù)據(jù)必須與指定字段名的類型相匹配。字符串要用單引號(hào)或者雙引號(hào)括起來,日期型可用CTOD函數(shù)處理或者直接引用。2025/2/3244.3.1INSERT命令(續(xù))【例4.11】在例4.4創(chuàng)建的訂單表中插入一個(gè)新的記錄:訂單編號(hào):200601讀者編號(hào):10001訂貨日期:2006-02-1發(fā)貨日期:2006-02-10圖書編號(hào):100012使用INSERT語句把該記錄插入到訂單表中,SQL語句如下:INSERTINTO訂單(訂單編號(hào),讀者編號(hào),訂貨日期,發(fā)貨日期,圖書編號(hào));
VALUES("200601","10001",CTOD("02-1-06"),CTOD("02-10-06"),"100012")
2025/2/3254.3.2UPDATE命令UPDATE語句用來更新表中的記錄。命令格式:UPDATE<表名>SET<字段名1>=<表達(dá)式1>[,<字段名2>=<表達(dá)2>…][WHERE<邏輯表達(dá)式>]命令說明:UPDATE:指明要修改的記錄的表的名稱。SET:指明更新的字段名和字段值。WHERE:限定要修改的行,如果沒有WHERE子句,該字段下的所有字段值都將被新值替換。2025/2/3264.3.2UPDATE命令(續(xù))【例4.12】把第1章中創(chuàng)建的SJ表中“價(jià)格”大于30元且“頁數(shù)”大于300的圖書的“備注”改為“珍貴圖書”,SQL命令如下:UPDATESJSETBZ="珍貴圖書"WHEREJG>30ANDYS>300若把價(jià)格大于30元的或頁數(shù)大于300頁的圖書的備注(bz)改為珍貴圖書,SQL命令如下:UPDATESJSETBZ="珍貴圖書"WHEREJG>30ORYS>300
2025/2/3274.3.3DELETE命令DELETE命令用來刪除一行或者多行記錄。命令格式:DELETEFROM<表名>WHERE<邏輯表達(dá)式>命令說明:FROM子句:指出將刪除的目標(biāo)表。WHERE<邏輯表達(dá)式>:指明被刪除的記錄滿足的條件,若沒有WHERE子句則刪除所有記錄?!纠?.13】在第1章創(chuàng)建的SJ表中,把“價(jià)格”大于30元且“頁數(shù)”大于300的圖書記錄刪掉,SQL語句如下:DELETEFROMSJWHEREJG>30ANDYS>300
2025/2/3284.4查詢和SELECT命令SELECT是數(shù)據(jù)查詢命令。SELECT命令雖然屬于數(shù)據(jù)操縱范圍,但它是SQL的核心,在SQL命令中使用的是最多的,我們將它和查詢單獨(dú)作為一節(jié)。VFP6.0的查詢?cè)O(shè)計(jì)器或SELECT-SQL語句可用來方便地檢索存儲(chǔ)在表或者視圖中的信息。利用查詢?cè)O(shè)計(jì)器可以搜索滿足條件的記錄,并且可將查詢保存在.qpr文件中。2025/2/3294.4.1創(chuàng)建和添加查詢1.啟動(dòng)查詢?cè)O(shè)計(jì)器若要打開查詢?cè)O(shè)計(jì)器,應(yīng)首先打開一個(gè)要查詢的數(shù)據(jù)庫,然后采用以下方式之一:(1)“文件”菜單啟動(dòng)查詢?cè)O(shè)計(jì)器(2)從“工具”菜單啟動(dòng)查詢?cè)O(shè)計(jì)器(3)使用CREATEQUERY命令打開查詢?cè)O(shè)計(jì)器2025/2/330(1)“文件”菜單啟動(dòng)查詢?cè)O(shè)計(jì)器從“文件”菜單中選擇“打開”命令,啟動(dòng)“打開”對(duì)話框,并在對(duì)話框的“文件類型”中選擇“項(xiàng)目”類型,再選取要打開的項(xiàng)目名稱,最后單擊“確定”按鈕,出現(xiàn)項(xiàng)目管理器對(duì)話框。在項(xiàng)目管理器中選擇“數(shù)據(jù)”選項(xiàng)卡,再選取“查詢”選項(xiàng)。單擊“新建”按鈕,此時(shí)出現(xiàn)“添加表或視圖”對(duì)話框,然后從數(shù)據(jù)庫下拉列表框中選擇待查詢的數(shù)據(jù)庫名稱。再從“選定”欄中選擇“表”或“視圖”,本例選擇了“表”。從“數(shù)據(jù)庫中的表”列表框中選擇要添加的表。重復(fù)這一步驟,直到選取了所需要的全部表。單擊“關(guān)閉”按鈕,返回“查詢?cè)O(shè)計(jì)器”窗口,如圖4-8所示。2025/2/331(1)“文件”菜單啟動(dòng)查詢?cè)O(shè)計(jì)器(續(xù))圖4-8查詢?cè)O(shè)計(jì)器2025/2/332(2)從“工具”菜單啟動(dòng)查詢?cè)O(shè)計(jì)器在VFP6.0主菜單中,選擇“工具”,指向“向?qū)А?,選擇“查詢”,彈出“向?qū)нx取”對(duì)話框,再選擇“查詢向?qū)А?,可根?jù)查詢向?qū)У奶崾緞?chuàng)建查詢。(3)使用CREATEQUERY命令打開查詢?cè)O(shè)計(jì)器在命令窗口中輸入CREATEQUERY即可打開查詢?cè)O(shè)計(jì)器。2025/2/3332.創(chuàng)建查詢(1)查詢?cè)O(shè)計(jì)器查詢?cè)O(shè)計(jì)器的窗口如圖4-8所示。在查詢?cè)O(shè)計(jì)器上半部分的窗口中,列出用戶已選定的要查詢的表或視圖。表或視圖之間的連線表示表之間的連接關(guān)系。查詢?cè)O(shè)計(jì)器下半部分的窗口中有6個(gè)選項(xiàng)卡:“字段”:選定包含在查詢結(jié)果中的字段?!奥?lián)接”:確定各數(shù)據(jù)表或視圖之間的連接關(guān)系?!昂Y選”:相當(dāng)于命令SETFILTERTO,利用過濾的方法查找一個(gè)特定的數(shù)據(jù)子集?!芭判蛞罁?jù)”:決定查詢結(jié)果輸出中記錄或行的排列順序“分組依據(jù)”:所謂分組就是將一組類似的記錄壓縮成一個(gè)結(jié)果記錄,這樣就可以完成基于一組的計(jì)算?!半s項(xiàng)”:指定是否要對(duì)重復(fù)記錄進(jìn)行檢索,同時(shí)是否對(duì)記錄(返回記錄的最大數(shù)目或最大百分比)做限制。
2025/2/334(2)創(chuàng)建查詢的步驟1)按上面介紹的方法打開查詢?cè)O(shè)計(jì)器。2)添加出現(xiàn)在查詢結(jié)果中的表或視圖。如本例已打開“圖書館管理”數(shù)據(jù)庫,并已選擇添加了Dz.dbf、Jy.dbf和Sj.dbf三個(gè)表。3)選定要包含在查詢結(jié)果中的字段。在“字段”選項(xiàng)卡中,從可用字段列表框中選擇需要的字段,即單擊需要的字段,再單擊“添加”按鈕;或者雙擊需要的字段。4)如果要“可用字段”列表框中的全部字段都包含在查詢結(jié)果中,可單擊“全部添加”按鈕;單擊“全部移去”按鈕,則將已選定的字段(列于選定字段列表框中)全部作廢。此時(shí)單擊“運(yùn)行”按鈕即可看到查詢結(jié)果。5)保存查詢。從“文件”菜單中選擇“保存”命令,打開如圖4-9所示的“另存為”對(duì)話框中,在“保存類型”下拉框中選擇“查詢”類型,在“保存文檔為:”文本框中輸入查詢文件名,本例取名為“讀者借閱”,然后單擊“保存”按鈕即可。
2025/2/335(2)創(chuàng)建查詢的步驟(續(xù))圖4-9“另存為”對(duì)話框2025/2/336(2)創(chuàng)建查詢的步驟(續(xù))【例4.14】查詢書籍表中的部分信息。將Sj.dbf表添加到查詢?cè)O(shè)計(jì)器中,即只對(duì)Sj.dbf表操作。操作如下:1)首先打開“圖書館管理”數(shù)據(jù)庫,然后打開查詢?cè)O(shè)計(jì)器,添加表Sj.dbf。2)選定要包含在查詢結(jié)果中的字段。方法是在“字段”選項(xiàng)卡中,從可用字段列表框中選擇需要的字段,即單擊需要的字段,再單擊“添加”按鈕;或者雙擊需要的字段。圖4-10列出了本例選擇的全部字段。3)單擊“運(yùn)行”按鈕得到查詢結(jié)果,如圖4-11所示。
2025/2/337(2)創(chuàng)建查詢的步驟(續(xù))4)保存查詢結(jié)果。單擊“文件”菜單的“保存”命令,打開“保存”對(duì)話框,將查詢結(jié)果保存。
圖4-10例4.14圖圖4-11例4.14的查詢結(jié)果2025/2/338(2)創(chuàng)建查詢的步驟(續(xù))【例4.15】統(tǒng)計(jì)表Sj.dbf中記錄書籍的價(jià)格、頁數(shù)和書名等信息。為完成統(tǒng)計(jì)所有書籍的價(jià)格和頁數(shù)的查詢,應(yīng)將Sj.dbf表添加到查詢?cè)O(shè)計(jì)器中。由于本例只要求統(tǒng)計(jì)所有書籍的價(jià)格和頁數(shù),因此只需要選擇書籍名稱、價(jià)格和頁數(shù)三個(gè)字段即可。選擇所需的字段后,單擊“查詢”按鈕即可看到查詢結(jié)果,如圖4-12所示。圖4-12例4.15的“書籍價(jià)格”查詢結(jié)果2025/2/3393.創(chuàng)建SELECT-SQL語句(1)認(rèn)識(shí)SELECT-SQL語句利用查詢?cè)O(shè)計(jì)器可以方便地創(chuàng)建查詢而SELECT-SQL則是一個(gè)功能更強(qiáng)大的查詢工具,它可直接從一個(gè)或多個(gè)表中檢索數(shù)據(jù),其查詢結(jié)果可用于創(chuàng)建報(bào)表、BROWSE或新的數(shù)據(jù)庫表或是臨時(shí)表,并且SELECT-SQL語句可直接加入到程序中。利用查詢?cè)O(shè)計(jì)器創(chuàng)建查詢時(shí),系統(tǒng)會(huì)自動(dòng)創(chuàng)建相應(yīng)的SQL查詢語句。單擊“查詢?cè)O(shè)計(jì)器工具欄”上的“顯示SQL窗口”按鈕,如圖4-13所示,可打開SQL窗口,窗口中所列出的語句就是剛剛利用查詢?cè)O(shè)計(jì)器創(chuàng)建的與查詢相對(duì)應(yīng)的SQL語句。2025/2/3403.創(chuàng)建SELECT-SQL語句(續(xù))表4-3所列是上兩例使用查詢?cè)O(shè)計(jì)器創(chuàng)建查詢得到的SQL語句。在命令窗口中鍵入MODIFYCOMMANDexample命令,打開程序編輯窗口,再輸入下述命令,可得到與使用查詢?cè)O(shè)計(jì)器相同的查詢結(jié)果。1)在命令窗口中輸入任一SELECT-SQL語句,然后按Ctrl+W鍵保存所輸入的內(nèi)容。2)DOexample例4.14的SELECTSQL語句例4.15的SELECTSQL語句
SELECTsj.sjbh,sj.sjmc,sj.sjzz,sj.cbs;FROM圖書館管理!sjSELECTsj.sjmc,sj.jg,sj.ys;FROM圖書館管理!sj表4-3查詢?cè)O(shè)計(jì)器創(chuàng)建的SELECTSQL語句圖4-13查詢?cè)O(shè)計(jì)器工具欄2025/2/341(2)SELECT-SQL語句的語法格式SELECT[ALL|DISTINCT][TOPnExpr[PERCENT]][Alias.]Select_Item[ASColumn_Name][,[Alias.]Select_Item[ASColumn_Name]...]FROM[FORCE][DatabaseName!]Table[[AS]Local_Alias][[INNER|LEFT[OUTER]|RIGHT[OUTER]|FULL[OUTER]JOINDatabaseName!]Table[[AS]Local_Alias][ONJoinCondition…][[INTODestination]|[TOFILEFileName[ADDITIVE]|TOPRINTER[PROMPT] |TOSCREEN]][PREFERENCEPreferenceName][NOCONSOLE][PLAIN][NOWAIT][WHEREJoinCondition[ANDJoinCondition...][AND|ORFilterCondition[AND|ORFilterCondition...]]][GROUPBYGroupColumn[,GroupColumn...]][HAVINGFilterCondition][UNION[ALL]SELECTCommand][ORDERBYOrder_Item[ASC|DESC][,Order_Item[ASC|DESC]...]]2025/2/342(2)SELECT-SQL語句的語法格式(續(xù))SELECT-SQL語句相當(dāng)復(fù)雜,它既可以用于單表的查詢,也可以用于多表的查詢。1)SELECT子句:在SELECT子句中指定在查詢結(jié)果中包含的字段、表達(dá)式。2)FROM子句:指定所有從中檢索數(shù)據(jù)的表。如果表沒有打開,VFP6.0顯示“打開”對(duì)話框,以便指定文件位置。表打開以后,直到查詢結(jié)束時(shí)才關(guān)閉。如果包含F(xiàn)ORCE關(guān)鍵字,則在建立查詢時(shí)會(huì)嚴(yán)格按照FROM子句中描述的順序連接表;若不包含F(xiàn)ORCE關(guān)鍵字,則對(duì)查詢進(jìn)行優(yōu)化。使用FORCE關(guān)鍵字,可加快查詢速度。DatabaseName!用來指定數(shù)據(jù)的名稱。當(dāng)包含表的數(shù)據(jù)庫不是當(dāng)前數(shù)據(jù)庫時(shí),必須指定數(shù)據(jù)庫名稱,并且應(yīng)在數(shù)據(jù)庫名稱之后表名之前加上感嘆號(hào)(!)分隔符。例如,“圖書館管理!sj”表示數(shù)據(jù)管理數(shù)據(jù)庫的sj表。
2025/2/343(2)SELECT-SQL語句的語法格式(續(xù))【例4-16】對(duì)圖書館管理數(shù)據(jù)庫,使用FROM子句,查看所有讀者的編號(hào)、姓名和性別。其中,SELECT子句指定要查詢的字段名稱,dz.dzbh、dz.dzxm和dz.dzxb分別對(duì)應(yīng)dz表中的編號(hào)、姓名和性別。FROM子句表示要查詢的字段來自“圖書館管理”數(shù)據(jù)庫的dz表。SELECTdz.dzbh,dz.dzxm,dz.dzxb;FROMdz注意:下面的SELECT語句和上面的語句具有相同的效果:SELECTdz.dzbh,dz.dzxm,dz.dzxb;FROM圖書館管理!dz
2025/2/3444.定義查詢結(jié)果(1)使用排序選項(xiàng)排序能決定查詢輸出結(jié)果中記錄或行的順序。例如,可按書籍的價(jià)格以升序或降序方式對(duì)書籍記錄進(jìn)行排序。利用排序依據(jù)選項(xiàng)卡可設(shè)置查詢的排序次序。在“排序依據(jù)”選項(xiàng)卡中,“選定字段”可選擇要用來排序的關(guān)鍵字段。選定后,添加到“排序條件”框,“排序條件”框中字段的次序決定了查詢結(jié)果排序時(shí)的條件,第一個(gè)字段決定了主排序次序,其余字段決定了第二排序次序。例如,在“排序條件”框中的字段順序是sj.jg、sj.ys,則查詢結(jié)果將首先按sj.jg進(jìn)行排序,如果sj表中有一個(gè)以上的記錄具有同樣的jg字段值,這些記錄則再按ys進(jìn)行排序。
2025/2/3454.定義查詢結(jié)果(續(xù))【例4.17】建立查詢按書籍價(jià)格從低到高排序。觀察例4.15的查詢結(jié)果,可以發(fā)現(xiàn)其結(jié)果并沒有完全按書籍價(jià)格的高低輸出,若要使輸出按書籍價(jià)格從低到高排列,可按以下步驟操作:1)打開查詢?cè)O(shè)計(jì)器,首先選擇“排序依據(jù)”選項(xiàng)卡。其中,“選定字段”列出了可用來排序的字段,供用戶選擇,“排序條件”是用戶已選擇好的用來排序的字段。2)從“選定字段”框中選定用來排序的字段,由于本例要按書籍價(jià)格從小到大的順序排序,所以應(yīng)選擇字段sj.jg,然后單擊“添加”按鈕,把它移到“排序條件”框中。3)從“排序選項(xiàng)”的兩個(gè)單選按鈕“升序”和“降序”中選擇一個(gè),本例選擇“升序”。
4)單擊常用工具欄中的“運(yùn)行”按鈕。將查詢結(jié)果同例4.15比較。2025/2/3464.定義查詢結(jié)果(續(xù))對(duì)查詢結(jié)果進(jìn)行排序時(shí),在對(duì)應(yīng)的SELECT-SQL命令中可包括ORDERBY子句,它的格式如下:ORDERBYOrder_item[ASC|DESC]其中,Order_item是排序條件框中選定的排序字段,字段間用逗號(hào)(,)分隔。另外,Order_item也可以是一個(gè)數(shù)字表達(dá)式,表示查詢結(jié)果中列的位置(最左邊列的編號(hào)為1)。ASC指定查詢結(jié)果根據(jù)排序以升序排序,DESC指定以降序排列,缺省時(shí)為升序。如果不使用ORDERBY子句指定查詢結(jié)果的排列順序,則查詢結(jié)果不排序。例4.17對(duì)應(yīng)的SELECT-SQL語句如下:SELECTsj.sjmc,sj.jg,sj.ys;FROM圖書館管理!sjORDERBYsj.jg2025/2/347(2)給字段添加說明標(biāo)題為使查詢結(jié)果易于閱讀和理解,可以給字段添加說明標(biāo)題,又稱別名。給前面設(shè)計(jì)的“書籍價(jià)格”添加說明標(biāo)題,操作步驟如下:1)打開“書籍價(jià)格”查詢。2)在“函數(shù)和表達(dá)式”文本框中鍵入字段名,接著輸入AS和說明標(biāo)題,如下所示:sj.sjmcAS書籍名稱3)單擊“添加”按鈕,在“選定字段”框中放置帶有別名的字段。4)重復(fù)步驟2)、3),分別給sj.jg和sj.ys添加說明標(biāo)題“書籍價(jià)格”和“書籍頁數(shù)”。5)單擊“運(yùn)行”按鈕,查詢結(jié)果中各字段名稱已變成相應(yīng)的漢字說明。對(duì)應(yīng)的SELECT語句如下:SELECTsj.sjbhAS書籍編號(hào),sj.jgAS書籍價(jià)格,sj.ysAS書籍頁數(shù);FROM圖書館管理!sj2025/2/348(3)使用選擇條件選擇數(shù)據(jù)庫或表中符合條件的一部分記錄而不是全部記錄是查詢的重要任務(wù)。例如,要查詢一定日期范圍內(nèi)的借書記錄、查詢所有女性讀者的基本情況等。在查詢?cè)O(shè)計(jì)器中,“篩選”選項(xiàng)卡可確定用于選擇記錄的字段和比較準(zhǔn)則,以及輸入與該字段進(jìn)行比較的示例值。設(shè)置篩選條件是指設(shè)置篩選的邏輯表達(dá)式,這個(gè)表達(dá)式由字段、操作符和數(shù)值組成。邏輯表達(dá)式主要有下述形式:字段操作符表達(dá)式其中,字段是要查詢的表中的字段。操作符的含義及使用示例如表4-4所示。2025/2/349(3)使用選擇條件(續(xù))在表4-4中,Like篩選操作符的含義是查找每個(gè)與字符表達(dá)式相匹配的字段。在字符串表達(dá)式中可使用百分號(hào)“%”和下劃線“_”通配符,下劃線表示字符串中的任意一個(gè)字符,百分號(hào)表示任意長(zhǎng)度的字符串。
操作符比較關(guān)系舉例=相等xk.cj=60,xk.kcbm='02'==完全相等xk.cj==60,xk.kcbm=='02'Like不精確匹配xk.xhLIKE"19964%",查詢所有學(xué)號(hào)前五位是“19964”的學(xué)生>大于xk.cj>60,xk.kcbm>'02'>=大于等于xk.cj>=60,xk.kcbm>='02'<小于xk.cj<60,xk.kcbm<'02'<=小于等于xk.cj<=60,xk.kcbm<='02'表4-4操作符及其舉例2025/2/350(3)使用選擇條件(續(xù))在“實(shí)例”文本框中,輸入比較條件時(shí)需要注意以下幾點(diǎn):1)僅當(dāng)字符串與待查詢表中字段名相同時(shí),用引號(hào)括起字符串;否則,無需用引號(hào)括起字符串。2)日期也不必用花括號(hào)括起來。3)邏輯值的前后必須使用句點(diǎn)號(hào),如.T.。4)若輸入查詢中表的字段名,VFP就將它識(shí)別為一個(gè)字段。在搜索字符型數(shù)據(jù)時(shí),如果想忽略大小寫匹配,應(yīng)選擇“大小寫”下面的按鈕。當(dāng)需要多個(gè)篩選條件時(shí),需要在“篩選”卡中加進(jìn)多個(gè)語句(多個(gè)行)。各個(gè)篩選條件之間使用.AND.和.OR.連接,即“篩選”選項(xiàng)卡中的“邏輯”下拉列表。當(dāng)有多個(gè)篩選條件且“邏輯”選項(xiàng)設(shè)置為“無”時(shí),系統(tǒng)自動(dòng)加入.AND.值。當(dāng)想否定設(shè)置的篩選條件時(shí),選擇“否”按鈕。例如,篩選條件sj.jg>=30,選擇“否”按鈕后,變?yōu)閟j.jg<30。2025/2/351(3)使用選擇條件(續(xù))【例4.18】在例4.15的“書籍價(jià)格”查詢中,篩選出價(jià)格在30元以上的書籍。1)打開“書籍價(jià)格”查詢,并選擇“篩選”選項(xiàng)卡。2)在“字段”下拉列表中選擇sj.jg字段。3)在“條件”下拉列表中選擇>=操作符。4)在“實(shí)例”文本框中輸入30。對(duì)應(yīng)的SELECT語句如下:SELECTsj.sjmcAS書籍名稱,sj.jgAS書籍價(jià)格,sj.ysAS書籍頁數(shù);FROM圖書館管理!sj;WHEREsj.jg>=302025/2/352(3)使用選擇條件(續(xù))【例4.19】在例4.15創(chuàng)建的“書籍價(jià)格”查詢中,使用LIKE操作符,篩選出書籍名為軟件工程的記錄。1)打開“統(tǒng)計(jì)學(xué)生成績(jī)”查詢,并選擇“篩選”選項(xiàng)卡。2)在“字段”下拉列表中選擇sj.sjmc字段。3)在“條件”下拉列表中選擇LIKE操作符。4)在“實(shí)例”文本框中輸入“軟件工程”。對(duì)應(yīng)的SELECT語句如下:SELECTsj.sjmc,sj.jg,sj.ys;FROM圖書館管理!sjWHEREsj.sjmcLIKE"軟件工程"2025/2/353(4)多個(gè)篩選條件的組合使用實(shí)際使用中,經(jīng)常需要查詢某一范圍內(nèi)的記錄。例如,書籍價(jià)格在30元以下或者50元以上的所有書籍,或者書籍頁數(shù)在300頁以上且價(jià)格在40元以上的書籍等。由于可能同時(shí)需要輸入兩個(gè)篩選條件,因此需要考慮篩選條件之間的關(guān)系問題。在VFP中,篩選條件間共有三種關(guān)系,即與(and)、或(or)和否(not)。例如,“書籍價(jià)格在30元以下或者50元以上”可寫成sj.jg<=30orsj.jg>=50,而“書籍頁數(shù)在300頁以上且價(jià)格在40元以上的書籍”可寫成sj.ys>=300andsj.jg>=40。在“篩選”選項(xiàng)卡中,可同時(shí)輸入多個(gè)篩選條件,每一個(gè)篩選條件占一行,行與行之間的缺省邏輯關(guān)系是“與”(AND),當(dāng)選擇其他關(guān)系時(shí),可通過邏輯項(xiàng)對(duì)應(yīng)行的列表來選擇。
2025/2/354(4)多個(gè)篩選條件的組合使用(續(xù))【例4.20】設(shè)置“與”篩選條件。前面已經(jīng)分析過,“書籍頁數(shù)在300頁以上且價(jià)格在40元以上的書籍”,可看成兩個(gè)篩選條件的組合,即sj.ys>=300andsj.jg>=40。首先建立篩選條件sj.ys>=300,然后再建立另一個(gè)篩選條件sj.jg>=40。由于兩個(gè)篩選條件之間是“與”的關(guān)系,因此不用設(shè)置“邏輯”選項(xiàng)。對(duì)應(yīng)的SELECT語句如下:SELECTsj.sjmc,sj.jg,sj.ys;FROM圖書館管理!sjWHEREsj.ys>=300andsj.jg>=40
2025/2/355(4)多個(gè)篩選條件的組合使用(續(xù))【例4.21】設(shè)置“或”(OR)篩選條件。統(tǒng)計(jì)“書籍價(jià)格在30元以下或者50元以上”的所有書籍,其篩選條件可寫成sj.jg<=30orsj.jg>=50。在“篩選”選項(xiàng)卡中首先建立兩個(gè)篩選條件,第一個(gè)是sj.jg<=30,第二個(gè)篩選條件是sj.jg>=50。由于兩個(gè)篩選條件是“或”關(guān)系,因此,還要在第一個(gè)篩選條件對(duì)應(yīng)的“邏輯”下拉列表中選擇OR運(yùn)算符。對(duì)應(yīng)的SELECT語句如下:SELECTsj.sjmc,sj.jg,sj.ys;FROM圖書館管理!sjWHEREsj.jg<=30ORsj.jg>=502025/2/356(4)多個(gè)篩選條件的組合使用(續(xù))【例4.22】設(shè)置“非”(NOT)篩選條件。查詢“所有書名不是‘軟件工程’的書籍”??疾臁八袝皇恰浖こ獭臅焙汀八袝恰浖こ獭臅笔腔榉穸ǖ摹!八袝恰浖こ獭臅笨蓪懗伞癓IKE”軟件工程“”,可先設(shè)置篩選條件“LIKE”軟件工程“”,然后單擊該篩選條件行對(duì)應(yīng)的“否”按鈕。對(duì)應(yīng)的SELECT語句是:SELECTsj.sjmc,sj.jg,sj.ys;FROM圖書館管理!sjWHEREsj.sjmcNOTlike"軟件工程"2025/2/3575.定向輸出查詢結(jié)果VFP允許查詢結(jié)果以不同的形式輸出。例如,可輸出到文件、打印機(jī)、臨時(shí)表和屏幕等。缺省形式是將查詢結(jié)果顯示在瀏覽窗口中。選擇查詢結(jié)果輸出形式的方法是:(1)從“查詢”菜單中選擇“查詢?nèi)ハ颉泵?,打開“查詢?nèi)ハ颉睂?duì)話框,如圖4-14所示。打開該對(duì)話框的另一個(gè)方法是在“查詢?cè)O(shè)計(jì)器”工具欄中單擊“查詢?nèi)ハ颉卑粹o。(2)“查詢?nèi)ハ颉睂?duì)話框中列出了7個(gè)查詢結(jié)果的輸出形式,且均以按鈕形式給出。選擇需要的按鈕,并單擊“確定”按鈕即可。
圖4-14“查詢?nèi)ハ颉睂?duì)話框2025/2/3585.定向輸出查詢結(jié)果(續(xù))定向輸出對(duì)應(yīng)的SELECT子句是INTODestination子句。表4-5為該子句常用格式。如輸出到臨時(shí)表“學(xué)生成績(jī)清單”中可寫成“INTOCURSOR學(xué)生成績(jī)清單”,輸出到活動(dòng)窗口中,可寫成TOSCREEN。如果只想暫時(shí)保存結(jié)果,可將它們發(fā)送到數(shù)組或臨時(shí)表中。若要永久保存結(jié)果,將它發(fā)送到一個(gè)表中。查詢結(jié)果輸出形式SELECT子句格式獨(dú)立的表INTOTABLE表名稱數(shù)組INTOARRAY數(shù)組名稱臨時(shí)表INTOCURSOR臨時(shí)表名稱活動(dòng)窗口TOSCREEN瀏覽窗口系統(tǒng)缺省值表4-5定向輸出查詢結(jié)果子句形式2025/2/3594.4.2運(yùn)行查詢1.運(yùn)行查詢?cè)谕瓿闪瞬樵冊(cè)O(shè)計(jì)并指定了輸出目的地后,可以單擊“運(yùn)行”按鈕啟動(dòng)該查詢,也可以在命令窗口使用DO命令。例如,運(yùn)行“數(shù)籍價(jià)格”查詢,可在命令窗口輸入:DO書籍價(jià)格.qpr
2025/2/3602.分組查詢(1)分組查詢。所謂分組就是將一組類似的記錄壓縮成一個(gè)結(jié)果記錄,這樣就可以完成基于一組記錄的計(jì)算。【例4.23】將讀者按家庭住址分組。操作步驟如下:1)新建一個(gè)“按讀者住址查詢”,選擇讀者表的所有字段。2)選擇“分組依據(jù)”選項(xiàng)卡,選擇dz.jtzz,并單擊“添加”按鈕。3)為保證分組正確,在“排序依據(jù)”選項(xiàng)卡中設(shè)置排序條件。例如dz.dzbh。4)運(yùn)行查詢,結(jié)果如圖4-15所示。
2025/2/361(1)分組查詢(續(xù))【例4.24】統(tǒng)計(jì)在書籍表中每個(gè)出版社出版的書籍的數(shù)目。操作步驟如下:1)建立一個(gè)查詢,選擇sj表中的所有字段,在“分組依據(jù)”選項(xiàng)卡中選擇sj.cbs,在“排序依據(jù)”選項(xiàng)卡中選擇sj.sjbh。2)在“字段”選項(xiàng)卡中,在“函數(shù)和表達(dá)式”框中輸入“count(sj.cbs)as數(shù)量”,并單擊“添加”按鈕。3)運(yùn)行查詢,其結(jié)果如圖4-16所示。圖4-16統(tǒng)計(jì)出版社的出版數(shù)量2025/2/362(2)為查詢?cè)黾佑?jì)算字段【例4.25】統(tǒng)計(jì)每個(gè)出版社的所出書中價(jià)格最低的書籍,可按如下步驟操作:1)創(chuàng)建一個(gè)查詢,選擇書籍表中的sj.sjmc、sj.sjzz、sj.jg,sj.ys。2)選擇“字段”選項(xiàng)卡,在“函數(shù)和表達(dá)式”文本框中輸入“MIN(sj.jg)AS最便宜的圖書”。3)單擊“添加”按鈕。4)選擇“分組依據(jù)”選項(xiàng)卡,選擇sj.cbs,并單擊“添加”按鈕。5)若需要排序,此時(shí)可在“排序依據(jù)”選項(xiàng)卡中設(shè)置排序條件,如sj.ys。
“MIN(sj.jg)AS最便宜的圖書”是一個(gè)函數(shù)表達(dá)式,在查詢結(jié)果中以“最便宜的圖書”名稱給出。此列不是表中原有的字段,而是在生成查詢的過程中經(jīng)過計(jì)算得到的,又稱為計(jì)算列或計(jì)算字段。2025/2/363(2)為查詢?cè)黾佑?jì)算字段(續(xù))VFP提供了“字符串、數(shù)學(xué)、邏輯和日期”4類函數(shù)。表4-6列出了在SELECT-SQL中經(jīng)常使用的列函數(shù)。列函數(shù)均產(chǎn)生一個(gè)單值,因此以下查詢求出所有圖書的總價(jià)格。SELECTsj.mcsj.jgsj.sjbhSUM(sj.jg)AS總價(jià)格;FROMsj函數(shù)功能AVG(列名)求出指定列上的平均值,只適用于數(shù)字類型的列SUM(列名)求出指定列上的和。只適用于數(shù)字類型的列MIN(列名)求出指定列上的最小值。列可以是數(shù)字型、字符型或日期型MAX(列名)求出指定列上的最大值,列可以是數(shù)字型、字符型或日期型COUNT(列名)求出指定列上的值的出現(xiàn)個(gè)數(shù)表4-6常用列函數(shù)2025/2/364(2)為查詢?cè)黾佑?jì)算字段(續(xù))在“函數(shù)和表達(dá)式”文本框中輸入函數(shù)可以使用表達(dá)式生成器,單擊“函數(shù)和表達(dá)式”文本框旁的“...”按鈕可啟動(dòng)表達(dá)式生成器,如圖4-17所示。在表達(dá)式生成器中,有“字符串、數(shù)學(xué)、邏輯和日期”4類函數(shù),每一類函數(shù)對(duì)應(yīng)一個(gè)下拉列表,在列表中可選擇相應(yīng)的函數(shù),然后再輸入相應(yīng)的變量。圖4-17表達(dá)式生成器2025/2/365(2)為查詢?cè)黾佑?jì)算字段(續(xù))例,“SUM(sj.jg)AS總價(jià)格”函數(shù)的輸入方法如下:1)在“數(shù)學(xué)”下拉列表中選擇SUM函數(shù),表達(dá)式文本框中出現(xiàn)SUM(expN)。2)選取expN。3)在“字段”列表框中選擇需要的字段變量或從鍵盤輸入相應(yīng)的表達(dá)式,例如si.jg以便代替expN。4)在“表達(dá)式”文本框的SUM函數(shù)后添加“AS總價(jià)格”,將表達(dá)式修改成“SUM(sj.jg)AS總價(jià)格”。5)單擊“檢驗(yàn)”按鈕可檢驗(yàn)輸入的表達(dá)式的正確性,若正確無誤后,可單擊“確定”按鈕,返回查詢?cè)O(shè)計(jì)器。此時(shí)在“函數(shù)和表達(dá)式”框中出現(xiàn)“SUM(sj.jg)AS總成績(jī)”。6)單擊“添加”按鈕,“總成績(jī)”項(xiàng)將出現(xiàn)在查詢結(jié)果中。2025/2/366(2)為查詢?cè)黾佑?jì)算字段(續(xù))【例4.26】已知sj表,可以使用AVG()列函數(shù)求每個(gè)出版社的書籍的平均價(jià)格。下面給出SELECT語句:SELECTsj.mc,sj.jg,sj.ys,sj.sjzz,;AVG(sj.jg)AS平均價(jià)格;FROMsj;GROUPBYsj.cbs;ORDERBYsj.sjbh【例4.27】在“統(tǒng)計(jì)平均價(jià)格”查詢中,添加“總價(jià)格”列。相應(yīng)的SELECT語句如下:SELECTsj.mc,sj.jg,sj.ys,sj.sjzz,;AVG(sj.jg)AS平均價(jià)格,SUM(sj.jg);FROMsj;GROUPBYsj.cbs;ORDERBYsj.sjbh
2025/2/3673.篩選分組WHERE、HAVING子句都能為查詢提供過濾條件。一般來說,HAVING子句用來過濾GROUPBY后的分組結(jié)果,用WHERE子句過濾一般表的元組。下面SELECT語句輸出家住在北京且讀者編號(hào)小于2006005的讀者記錄。SELECTDz.dzbh,Dz.dzxm,Dz.jtzz,Dz.dznl;FROM圖書館管理!dz;WHEREDz.jtzz="北京"ANDDz.dzbh<"20060005"; GROUPBYDz.dzbh; ORDERBYDz.dzbh如果要查詢年齡小于等于30的讀者,可繼續(xù)修改SELECT語句:SELECTDz.dzbh,Dz.dzxm,Dz.jtzz,Dz.dznl;FROM圖書館管理!dz;WHEREDz.jtzz="北京"ANDDz.dzbh<"20060005"; GROUPBYDz.dzbh; ORDERBYDz.dzbh;HAVINGDz.dznl<=30
2025/2/3684.查詢多個(gè)表數(shù)據(jù)庫中的表之間的關(guān)系可由表間的公共字段體現(xiàn)。例如,“圖書館管理”數(shù)據(jù)庫中,表dz.dbf、jy.dbf和sj.dbf、dz.dbf和jy.dbf之間由公共字段dzbh相連接,jy.dbf和sj.dbf之間由公共字段sjbh相連接。當(dāng)需要獲取存儲(chǔ)在兩個(gè)或更多表或視圖中的信息時(shí),需要指出這些表或視圖之間的連接關(guān)系。使用SELECT-SQL的INNERJOIN子句可完成表間的連接。2025/2/3694.查詢多個(gè)表(續(xù))在VFP中,表之間的連接有4種類型,如表4-8所示。
連接類型查詢內(nèi)容(條件)內(nèi)部連接(INNER)兩個(gè)表中僅滿足條件的記錄,這是最普通的連接類型左連接表中在連接條件左邊的所有記錄,和表中連接條件右邊的且滿足連接條件的記錄右連接表中在連接條件右邊的所有記錄,和表中連接條件左邊的且滿足連接條件的記錄完全連接表中不論是否滿足條件的所有記錄表4-8表間聯(lián)接類型及使用條件2025/2/3704.查詢多個(gè)表(續(xù))在多表間建立查詢和單表基本相同,惟一不同的是要指明表間的關(guān)系。【例4.28】統(tǒng)計(jì)借書的讀者和他們所借的書籍,要求包括“讀者姓名”和“書籍名稱”等字段。1)首先打開“圖書館管理”數(shù)據(jù)庫,然后打開查詢?cè)O(shè)計(jì)器。因?yàn)楸纠蟀白x者姓名”和“書籍名稱”,故需添加dz.dbf、sj.dbf和jy.dbf三個(gè)表。2)選定要包含在查詢結(jié)果中的字段。在“字段”選項(xiàng)卡中,從“可用字段”列表框中選擇需要的字段,單擊這些字段,再單擊“添加”按鈕;或者雙擊需要的字段。相應(yīng)的SELECT語句是:SELECTDz.dzxm,sj.sjmc,Jy.cjrq,Jy.sjbh;FROM圖書館管理!dzINNERJOIN圖書館管理!jy; INNERJOIN圖書館管理!sj; ONsj.sjbh=Jy.sjbh; ONDz.dzbh=Jy.dzbh2025/2/3714.查詢多個(gè)表(續(xù))圖4-18列出了上例選擇的全部字段。單擊“運(yùn)行”按鈕可看到例4.28的查詢結(jié)果,如圖4-19所示。圖4-18例4.28選定的字段圖4-19例4.28查詢結(jié)果2025/2/3724.5報(bào)表和標(biāo)簽報(bào)表和標(biāo)簽是將需要的數(shù)據(jù)表格化的重要工具。本節(jié)主要介紹如何快速創(chuàng)建報(bào)表,并將應(yīng)用程序有機(jī)地連接起來。2025/2/3734.5.1VisualFoxPro的報(bào)表和標(biāo)簽報(bào)表包括兩個(gè)基本組成部分:數(shù)據(jù)源和布局。數(shù)據(jù)源通常是數(shù)據(jù)庫中的表,或是視圖、查詢或臨時(shí)表。報(bào)表布局定義了報(bào)表打印格式。在定義表和視圖或查詢后,便可創(chuàng)建報(bào)表或標(biāo)簽。創(chuàng)建報(bào)表的過程包括定義報(bào)表的樣式并指定數(shù)據(jù)源。系統(tǒng)將報(bào)表樣式保存在報(bào)表文件中,報(bào)表文件的擴(kuò)展名為.frx,其相關(guān)文件是.frt。報(bào)表文件指定了想要的字段、要打印的文本(數(shù)據(jù)源)及數(shù)據(jù)在頁面上的位置。報(bào)表文件不存儲(chǔ)每個(gè)數(shù)據(jù)字段的值,只存儲(chǔ)特定數(shù)據(jù)庫或表中各字段值在報(bào)表中的位置和格式信息。標(biāo)簽的創(chuàng)建過程和創(chuàng)建報(bào)表基本相同,標(biāo)簽保存在.lbx文件中,相關(guān)文件為.lbt。2025/2/3741.創(chuàng)建報(bào)表布局創(chuàng)建報(bào)表之前,首先應(yīng)該確定報(bào)表的常規(guī)格式,系統(tǒng)提供了幾種基本的報(bào)表布局,列報(bào)表、行報(bào)表、一對(duì)多報(bào)表、多欄報(bào)表和標(biāo)簽。每種報(bào)表布局的一般用途如表4-8所示。用戶可以使用“報(bào)表設(shè)計(jì)器”進(jìn)行修改布局,直至符合用戶的要求為止。布局類型說明示例列報(bào)表每行一條記錄,每條記錄的字段在頁面上按水平方向放置分組/總計(jì)報(bào)表、財(cái)政報(bào)表、存貨清單和銷售總結(jié)行報(bào)表每列一字段,每條記錄的字段在一側(cè)豎直放置列表一對(duì)多一條記錄或一對(duì)多關(guān)系發(fā)票多列多列記錄,每條記錄的字段沿左邊緣豎直放置電話號(hào)碼薄,名片標(biāo)簽多列的記錄,每條記錄的字段左邊緣豎直放置,打印在特殊紙上郵件標(biāo)簽,名簽表4-8報(bào)表常規(guī)布局及用途2025/2/375(1)用報(bào)表向?qū)?chuàng)建報(bào)表VFP6.0提供了3種方法創(chuàng)建報(bào)表布局:用報(bào)表向?qū)?chuàng)建簡(jiǎn)單的單表或多表的布局用快速報(bào)表從單表中創(chuàng)建一個(gè)簡(jiǎn)單報(bào)表用報(bào)表設(shè)計(jì)器修改已有的報(bào)表或創(chuàng)建自己的報(bào)表。每種方法創(chuàng)建的報(bào)表布局文件都可以用“報(bào)表設(shè)計(jì)器”進(jìn)行修改。“報(bào)表向?qū)А笔莿?chuàng)建報(bào)表的最簡(jiǎn)單途徑,它自動(dòng)提供很多“報(bào)表設(shè)計(jì)器”的定制功能?!翱焖賵?bào)表”是創(chuàng)建簡(jiǎn)單布局的最迅速途徑。直接在“報(bào)表設(shè)計(jì)器”內(nèi)創(chuàng)建報(bào)表,“報(bào)表設(shè)計(jì)器”提供一個(gè)空白布局。2025/2/376(2)用“快速報(bào)表”命令創(chuàng)建報(bào)表詳細(xì)步驟如下:1)在“文件”菜單中選擇“新建”命令,打開“新建”對(duì)話框,并在該對(duì)話框中選擇“報(bào)表”單選按鈕,然后單擊“新建文件”命令按鈕。此時(shí)將打開“報(bào)表設(shè)計(jì)器”,同時(shí)在菜單中增加“報(bào)表”菜單項(xiàng),如圖4-20所示。2)在“報(bào)表”菜單中選擇“快速報(bào)表”命令,此時(shí)出現(xiàn)“打開”對(duì)話框,用戶可在此對(duì)話框中選擇報(bào)表要使用的表或視圖。例如選擇dz.dbf表。3)選擇完報(bào)表要使用的數(shù)據(jù)源后,系統(tǒng)出現(xiàn)“快速報(bào)表”對(duì)話框,如圖4-21所示。在“快速報(bào)表”對(duì)話框中,提供了簡(jiǎn)單的字段布局,例如列布局或行布局。2025/2/377(2)用“快速報(bào)表”命令創(chuàng)建報(bào)表(續(xù))4)可在字段布局、標(biāo)題和別名選項(xiàng)中做出選擇。如果不想讓表中的所有字段全部出現(xiàn)在報(bào)表中,可單擊“字段”按鈕,在字段選擇器對(duì)話框中選擇適當(dāng)?shù)淖侄魏?,單擊“確定”按鈕,返回“快速報(bào)表”對(duì)話框。5)在“快速報(bào)表”對(duì)話框中單擊“確定”按鈕返回報(bào)表設(shè)計(jì)器。用戶所做的選擇反映在報(bào)表設(shè)計(jì)器中。用戶可在報(bào)表設(shè)計(jì)器中繼續(xù)修改報(bào)表,直至符合要求為止。圖4-20“報(bào)表”菜單項(xiàng)圖4-21“快速報(bào)表”對(duì)話框2025/2/378(3)使用報(bào)表設(shè)計(jì)器創(chuàng)建報(bào)表報(bào)表設(shè)計(jì)器可用來設(shè)計(jì)報(bào)表布局,規(guī)劃數(shù)據(jù)在頁面上的打印位置以及添加各種組件。可通過“文件”菜單的“新建”命令,打開一個(gè)具有空白報(bào)表的報(bào)表設(shè)計(jì)器;也可以通過“文件”菜單的“打開”命令,打開一個(gè)已存在的報(bào)表。圖4-22是報(bào)表設(shè)計(jì)器窗口。圖4-22報(bào)表設(shè)計(jì)器窗口2025/2/379(3)使用報(bào)表設(shè)計(jì)器創(chuàng)建報(bào)表(續(xù))【例4.29】已知有dz.dbf表,請(qǐng)?jiān)O(shè)計(jì)一個(gè)報(bào)表,顯示讀者信息。1)打開報(bào)表設(shè)計(jì)器2)單擊“報(bào)表”菜單的“快速報(bào)表”命令。3)選擇需要的表。本例選擇表dz.dbf,此時(shí)已生成了一個(gè)簡(jiǎn)單的表。單擊“打印預(yù)覽”按鈕可看到運(yùn)行結(jié)果。2025/2/380(4)報(bào)表帶區(qū)VFP將報(bào)表的不同部分定義成不同的帶區(qū),不同的帶區(qū)可根據(jù)需要在報(bào)表設(shè)計(jì)器中進(jìn)行增加或取消。圖4-22中列出了報(bào)表完整的帶區(qū),表4-9給出了這些帶區(qū)的用途。名稱用途添加方法標(biāo)題每報(bào)表出現(xiàn)一次,用來放置標(biāo)題、日期、頁碼、公司標(biāo)志或圍繞標(biāo)題的各種式樣的框從“報(bào)表”菜單中選擇“標(biāo)題/總結(jié)”帶區(qū)頁標(biāo)頭每頁面出現(xiàn)一次,用來放置日期、頁碼和列標(biāo)題默認(rèn)組標(biāo)頭每組出現(xiàn)一次,組標(biāo)頭個(gè)數(shù)和分組數(shù)相等,用來放置分組字段和分隔線等從“報(bào)表”菜單中選擇“數(shù)據(jù)分組”細(xì)節(jié)帶區(qū)每記錄出現(xiàn)一次,用來放置數(shù)據(jù)和說明性文本等默認(rèn)組注腳區(qū)每組出現(xiàn)一次,用來放置分組總計(jì)、小計(jì)文本等從“報(bào)表”菜單中選擇“數(shù)據(jù)分組”頁注腳每頁面出現(xiàn)一次,用來放置日期、頁碼、分類總計(jì)及說明性文本等默認(rèn)總結(jié)每報(bào)表出現(xiàn)一次,用來放置有關(guān)總計(jì)文本從“報(bào)表”菜單中選擇“標(biāo)題/總結(jié)”帶區(qū)表4-9報(bào)表帶區(qū)用途2025/2/3812.打開報(bào)表布局利用下面的命令可打開如圖4-22所示的報(bào)表設(shè)計(jì)器:MODIFYREPORT報(bào)表名稱其中,報(bào)表名稱文件的擴(kuò)展名是.frx。已創(chuàng)建的報(bào)表布局不符合設(shè)計(jì)要求時(shí),可利用報(bào)表設(shè)計(jì)器修改。用報(bào)表設(shè)計(jì)器可更改數(shù)據(jù)環(huán)境、頁面設(shè)置或報(bào)表控件。數(shù)據(jù)環(huán)境定義了報(bào)表中將包含的數(shù)據(jù)源,而頁面設(shè)置定義了報(bào)表頁面和報(bào)表帶區(qū)的總體形狀,報(bào)表控件定義了出現(xiàn)于頁面上的數(shù)據(jù)項(xiàng)。
修改報(bào)表布局主要包括設(shè)置報(bào)表數(shù)據(jù)環(huán)境,修改報(bào)表帶區(qū),修改或添加控件,調(diào)整控件位置和大小,定義字段格式,更改報(bào)表中的字體,添加線條、矩形和圓形,向報(bào)表添加圖片,向報(bào)表添加注釋、在布局上分組數(shù)據(jù)等。2025/2/3823.報(bào)表控件的使用(1)控件工具欄在報(bào)表設(shè)計(jì)器中可插入各種控件,包括標(biāo)簽、字段、變量和表達(dá)式。如圖4-23所示是報(bào)表設(shè)計(jì)器中的控件工具欄。表4-10列出了報(bào)表控件及其作用??丶Q作用域用來顯示表的字段、變量和其他表達(dá)式標(biāo)簽用來顯示文本線條用來顯示直線矩形用來顯示框和邊界圓角矩形用來顯示圓、橢圓、圓角矩形和邊界圖片/ActiveX用來顯示位圖或通用字段表4-10報(bào)表控件名稱及作用圖4-23控件工具欄2025/2/383(2)添加域控件可以采用以下方式之一添加域控件:1)從數(shù)據(jù)環(huán)境中添加字段。在報(bào)表設(shè)計(jì)器中,打開報(bào)表數(shù)據(jù)環(huán)境,選擇需要的表或視圖,并將需要的字段拖放到報(bào)表布局上。2)從工具欄添加字段。在報(bào)表控件工具欄中:選擇“域控件”,彈出如圖4-24所示的報(bào)表表達(dá)式對(duì)話框;然后在“報(bào)表表達(dá)式”對(duì)話框中,選擇“表達(dá)式”框后的“…”按鈕,出現(xiàn)“表達(dá)式生成器”對(duì)話框,如圖4-25所示。在“表達(dá)式生成器”對(duì)話框的“字段”列表框中,列出了已添加到數(shù)據(jù)環(huán)境中的表或視圖中包含的字段,雙擊想要的字段名。表名和字段名將出現(xiàn)在“報(bào)表字段的表達(dá)式”框內(nèi);最后,單擊“檢驗(yàn)”按鈕,可檢驗(yàn)表達(dá)式的正確性。2025/2/384(2)添加域控件(續(xù))圖4-24“報(bào)表表達(dá)式”對(duì)話框圖4-25“表達(dá)式生成器”對(duì)話框
2025/2/385(3)選擇和移動(dòng)報(bào)表控件可通過移動(dòng)或者改變的大小來調(diào)整報(bào)表布局上已存在控件的布局。選擇控件的方法是:1)選擇單個(gè)控件:?jiǎn)螕艨丶?,已選擇的控件周圍會(huì)出現(xiàn)若干個(gè)黑色控點(diǎn)。2)選擇多個(gè)控件:按住Shift鍵,單擊要選擇的控件或者在控件周圍拖動(dòng),將需要選擇的控件均置于拖出的方框中。已選擇的多個(gè)控件可一起移動(dòng)、復(fù)制、刪除或改變格式。控件在布局內(nèi)移動(dòng)位置的增量并不是連續(xù)的。增量取決于網(wǎng)格的設(shè)置。按住Ctrl鍵再拖動(dòng)控件時(shí),則可忽略網(wǎng)格的作用。2025/2/386(4)調(diào)整控件大小1)手動(dòng)調(diào)整控件大小:首先選擇要調(diào)整大小的控件,然后將鼠標(biāo)指針指向控件周圍的控點(diǎn),最后拖動(dòng)即可。2)自動(dòng)匹配控件大?。合冗x定這些控件,再單擊“格式”菜單中的“大小”命令。“大小”命令中提供了5種調(diào)整控件的方法,分別是“對(duì)齊網(wǎng)格”、“調(diào)整到最高”、“調(diào)整到最窄”、“調(diào)整到最寬”、“調(diào)整到最短”,可按照需要選擇,系統(tǒng)自動(dòng)匹配控件大小。2025/2/387(5)對(duì)齊報(bào)表控件將彼此有關(guān)系的控件相互對(duì)齊,以便它們能整齊地顯示或打印在表格中。VFP6.0中提供了若干種對(duì)齊選項(xiàng),主要有左對(duì)齊、右對(duì)齊、底對(duì)齊和頂對(duì)齊等13種,如圖4-26所示。按先選取要對(duì)齊的控件再單擊控件工具欄中的相應(yīng)對(duì)齊按鈕的方法操作。圖4-26布局工具欄2025/2/3884.報(bào)表分組系統(tǒng)允許在一個(gè)報(bào)表中添加一個(gè)或多個(gè)組,已建立的分組可根據(jù)需要改變組的順序,重復(fù)組標(biāo)頭或者更改或刪除組帶區(qū)。報(bào)表分組之后,報(bào)表布局就有了組標(biāo)頭和組注腳帶區(qū),可向其中添加控件。組注腳通常包含組總計(jì)和其他組總結(jié)性信息。報(bào)表分組并不重排數(shù)據(jù)記錄,只是按記錄原來的順序進(jìn)行分組,而不會(huì)將表中所有具有相同分組特性的記錄分在一個(gè)組。報(bào)表內(nèi)最多可定義20級(jí)數(shù)據(jù)分組。嵌套分組有助于組織不同層次的數(shù)據(jù)和總表達(dá)式。2025/2/389(1)添加單個(gè)組一個(gè)單組報(bào)表具有基于輸入表達(dá)式的一級(jí)數(shù)據(jù)分組。例如,在前面建立的dz表中,按讀者性別進(jìn)行分組,即將女讀者放在一組,男讀者放在另一組。1)從“報(bào)表”菜單中選擇組,打開“數(shù)據(jù)分組”對(duì)話框。2)在“數(shù)據(jù)分組”對(duì)話框中,輸入分組表達(dá)式,或者單擊分組表達(dá)式框后面的“…”按鈕,在表達(dá)式生成器中輸入分組表達(dá)式。本例的表達(dá)式是:dz.dzxb=“女”。3)在組屬性區(qū)域中選定想要的屬性。組屬性主要用來為組指定頁面分隔選項(xiàng)VFP6.0提供了4個(gè)選項(xiàng)。4)添加表達(dá)式后,可在帶區(qū)內(nèi)放置任何希望的控件。例如,說明性文字、求和、求平均值,以及求分組個(gè)數(shù)統(tǒng)計(jì)等。2025/2/390(1)添加單個(gè)組(續(xù))圖4-27顯示了增加組帶區(qū)后的報(bào)表設(shè)計(jì)器畫面,其中只選了讀者表中的4個(gè)屬性。圖4-28是報(bào)表的運(yùn)行結(jié)果。圖4-27添加一個(gè)報(bào)表設(shè)計(jì)器圖4-28本例的報(bào)表2025/2/391(2)添加多個(gè)數(shù)據(jù)分組若要添加多個(gè)數(shù)據(jù)分組,可從“報(bào)表”中選擇“數(shù)據(jù)分組”。在第一個(gè)“分組表達(dá)式”框下方鍵入新的分組表達(dá)式,然后在“組屬性”區(qū)域選擇想要的屬性。分組順序?qū)⒗谩敖M注腳X”(其中X=1,2,3,...)來標(biāo)識(shí)其次序。2025/2/392(3)更改組帶區(qū)若要更改分組表達(dá)式和組打印選項(xiàng),可從“報(bào)表”菜單中選擇“數(shù)據(jù)分組”,然后在“數(shù)據(jù)分組”對(duì)話框中選定要更改的分組表達(dá)式,并輸入新的表達(dá)式。(4)刪除組帶區(qū)若要?jiǎng)h除組帶區(qū),可從“報(bào)表”菜單中選擇“數(shù)據(jù)分組”,選定希望刪除的組,然后選擇“刪除”按鈕,則該組帶區(qū)將從布局中刪除。2025/2/3935.使用標(biāo)簽向?qū)?biāo)簽是多列報(bào)表布局。在VFP6.0中,提供“標(biāo)簽向?qū)А?、?biāo)簽設(shè)計(jì)器和語言三種方法創(chuàng)建標(biāo)簽。用戶可根據(jù)標(biāo)簽向?qū)崾局鸩酵瓿蓸?biāo)簽的布局設(shè)計(jì)。使用標(biāo)簽向?qū)瓿傻臉?biāo)簽布局不一定完全符合用戶的要求,用戶還可以使用“標(biāo)簽設(shè)計(jì)器”進(jìn)行修改布局,直至符合用戶的要求為止。2025/2/3946.標(biāo)簽設(shè)計(jì)器標(biāo)簽設(shè)計(jì)器是報(bào)表設(shè)計(jì)器的一部分,它們使用相同的菜單和工具欄。設(shè)計(jì)標(biāo)簽和設(shè)計(jì)報(bào)表的方法是一樣的。詳細(xì)請(qǐng)參見“報(bào)表設(shè)計(jì)”部分。2025/2/3957.預(yù)覽報(bào)表報(bào)表在設(shè)計(jì)過程中或設(shè)計(jì)完成后,可通過報(bào)表預(yù)覽查看報(bào)表的頁面外觀;檢查數(shù)據(jù)列的對(duì)齊和間隔;查看報(bào)表是否返回希望的數(shù)據(jù)??梢圆捎靡韵路绞街活A(yù)覽報(bào)表:菜單方法。從“顯示”菜單中選擇“預(yù)覽”,或單擊“常用”工具欄中的“預(yù)覽”按鈕。命令方法。VFP6.0提供了命令方法預(yù)覽報(bào)表或標(biāo)簽。命令格式如下:REPORTFORM報(bào)表名稱PREVIEW2025/2/3968.打印報(bào)表可以采用以下方式之一打印報(bào)表:菜單方法:從“文件”菜單中選擇“打印”命令,在彈出的“打印選項(xiàng)”對(duì)話框中,可配置有關(guān)打印機(jī)的屬性、紙張大小、打印份數(shù)和打印頁碼范圍。命令方法:此方法可直接寫入程序中。例如,將“讀者表”報(bào)表送打印機(jī)打印,可執(zhí)行下述命令:REPORTFORM讀者表TOPRINTER打印報(bào)表時(shí),通過提供選擇條件可限制出現(xiàn)在報(bào)表中的記錄數(shù)目;通過指定一個(gè)數(shù)量或范圍為記錄選擇范圍;生成FOR表達(dá)式來選定與條件相匹配的記錄;生成WHILE表達(dá)式來選定記錄直到發(fā)現(xiàn)與條件不匹配的記錄為止。2025/2/3974.5.2向應(yīng)用程序添加報(bào)表和標(biāo)簽向應(yīng)用程序添加報(bào)表和標(biāo)簽主要包括:控制數(shù)據(jù)源定義報(bào)表頁面和報(bào)表變量在域控件中使用表達(dá)式和函數(shù)域控件格式化控制報(bào)表和標(biāo)簽的輸出集成查詢和報(bào)表2025/2/3981.控制數(shù)據(jù)源數(shù)據(jù)環(huán)境定義了報(bào)表中包含的數(shù)據(jù)源。所謂數(shù)據(jù)源就是用來填充到報(bào)表中的數(shù)據(jù)所在的表或視圖。向數(shù)據(jù)環(huán)境中添加表或視圖的方法如下:(1)從“顯示”菜單中選擇“數(shù)據(jù)環(huán)境”命令,打開數(shù)據(jù)環(huán)境設(shè)計(jì)器。(2)選擇“數(shù)據(jù)環(huán)境”菜單的“添加”命令,此時(shí)若已經(jīng)打開了某個(gè)數(shù)據(jù)庫或視圖,將出現(xiàn)“添加表或視圖”對(duì)話框,否則將出現(xiàn)“打開”對(duì)話框。(3)選擇要添加到數(shù)據(jù)環(huán)境中的表或視圖,在“添加表或視圖”對(duì)話框中單擊“添加”按鈕,在“打開”對(duì)話框中單擊“確定”按鈕,系統(tǒng)返回到“添加表或視圖”對(duì)話框中。(4)單擊“關(guān)閉”按鈕。2025/2/3992.定義報(bào)表頁面和報(bào)表變量(1)修改報(bào)表布局和更改報(bào)表頁面。修改已設(shè)計(jì)好的報(bào)表或標(biāo)簽,可按以下方法操作:1)設(shè)計(jì)報(bào)表帶區(qū)內(nèi)容。使用報(bào)表帶區(qū)可以決定報(bào)表的每頁、分組及開始與結(jié)尾的樣式。選擇“報(bào)表”菜單中的“標(biāo)題/總結(jié)”,彈出如圖4-29所示的“標(biāo)題/總結(jié)”對(duì)話框;然后單擊“標(biāo)題帶區(qū)”和“總結(jié)帶區(qū)”復(fù)選框,最后單擊“確定”按鈕,則報(bào)表設(shè)計(jì)畫面如圖4-30所示。在“標(biāo)題/總結(jié)”對(duì)話框中,兩個(gè)“新頁”復(fù)選框用于決定打印完標(biāo)題帶區(qū)或總結(jié)帶區(qū)后是否走一頁紙。2)修改表帶區(qū)。在“報(bào)表設(shè)計(jì)器”中,可以通過拖動(dòng)帶區(qū)欄達(dá)到適當(dāng)高度,來調(diào)整每個(gè)帶區(qū)的帶區(qū)大小。2025/2/31002.定義報(bào)表頁面和報(bào)表變量(續(xù))3)放置控件。向標(biāo)題帶區(qū)放置圖片和標(biāo)題文字等控件。在本例中,分別向標(biāo)題帶區(qū)放一圖片和標(biāo)題文字,并在細(xì)節(jié)區(qū)上下畫一條直線以分離記錄。4)報(bào)表預(yù)覽。單擊報(bào)表預(yù)
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年寧波人才投資有限公司招聘?jìng)淇碱}庫及參考答案詳解1套
- 2026年“重慶人力”所屬企業(yè)飛駛特公司招聘:外派至中鐵建重慶石化銷售有限公司備考題庫及一套答案詳解
- 2026年安徽皖信招聘駐阜陽鐵塔公司業(yè)務(wù)拓展經(jīng)理的備考題庫及參考答案詳解
- 2026年華云升達(dá)(北京)氣象科技有限責(zé)任公司招聘?jìng)淇碱}庫完整答案詳解
- 2026年合肥市遴選新一屆肥東縣政府法律顧問的備考題庫及一套答案詳解
- 2026年九江八里湖外國(guó)語學(xué)校招聘教師備考題庫及答案詳解1套
- 2026年關(guān)于招聘伊美區(qū)政務(wù)服務(wù)中心工作人員的備考題庫及1套完整答案詳解
- 2026年宜賓五糧液有機(jī)農(nóng)業(yè)發(fā)展有限公司招聘?jìng)淇碱}庫及完整答案詳解一套
- 河南省九師聯(lián)盟2026屆數(shù)學(xué)高三第一學(xué)期期末質(zhì)量檢測(cè)試題含解析
- 2026屆江西省上饒市民校聯(lián)盟高二上生物期末調(diào)研模擬試題含解析
- 2025年中國(guó)私募基金白皮書
- 礦山安全生產(chǎn)責(zé)任目標(biāo)分解方案
- 2025秋季學(xué)期國(guó)開電大法律事務(wù)??啤缎谭▽W(xué)(2)》期末紙質(zhì)考試填空題題庫珍藏版
- 社會(huì)組織財(cái)務(wù)內(nèi)部控制管理制度
- 普外科護(hù)士長(zhǎng)年終述職
- 新高考3+1+2政策解讀及選科指導(dǎo)+課件-2025-2026學(xué)年高一上學(xué)期生涯規(guī)劃主題班會(huì)
- 感染科入科教育
- GB/T 33820-2025金屬材料延性試驗(yàn)多孔狀和蜂窩狀金屬高速壓縮試驗(yàn)方法
- 友善社會(huì)主義核心價(jià)值觀
- 外墻外保溫系統(tǒng)應(yīng)用技術(shù)標(biāo)準(zhǔn)(巖棉) DG-TJ08-2126-2023
- 電泳工藝原理培訓(xùn)課件
評(píng)論
0/150
提交評(píng)論