版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
學習要點1、查詢向?qū)Ш筒樵冊O計器的使用方法;2、單表查詢和交叉表查詢;3、查詢設計器中各選項卡的功能和使用方法;4、本地視圖和遠程視圖;5、視圖向?qū)Ш鸵晥D設計器的使用方法;6、使用視圖。第6章查詢與視圖2020/12/21VisualFoxPro6.0程序設計學習要點1、查詢向?qū)Ш筒樵冊O計器的使用方法;第6章查詢與第6章查詢與視圖6.1用查詢向?qū)гO計查詢6.2用查詢設計器設計查詢6.3創(chuàng)建視圖6.4數(shù)據(jù)庫視圖的操作小結返回退出6.5利用視圖更新數(shù)據(jù)6.6利用視圖處理自由數(shù)據(jù)2020/12/22VisualFoxPro6.0程序設計第6章查詢與視圖6.1用查詢向?qū)гO計查詢6.2精品資料3精品資料3你怎么稱呼老師?如果老師最后沒有總結一節(jié)課的重點的難點,你是否會認為老師的教學方法需要改進?你所經(jīng)歷的課堂,是講座式還是討論式?教師的教鞭“不怕太陽曬,也不怕那風雨狂,只怕先生罵我笨,沒有學問無顏見爹娘……”“太陽當空照,花兒對我笑,小鳥說早早早……”44精品資料5精品資料5你怎么稱呼老師?如果老師最后沒有總結一節(jié)課的重點的難點,你是否會認為老師的教學方法需要改進?你所經(jīng)歷的課堂,是講座式還是討論式?教師的教鞭“不怕太陽曬,也不怕那風雨狂,只怕先生罵我笨,沒有學問無顏見爹娘……”“太陽當空照,花兒對我笑,小鳥說早早早……”666.1用查詢向?qū)гO計查詢6.1.1設計單表查詢6.1.2建立交叉表返回退出2020/12/27VisualFoxPro6.0程序設計6.1用查詢向?qū)гO計查詢6.1.1設計單表查詢6.6.1.1設計單表查詢
查詢向?qū)Э梢砸龑в脩艨焖僭O計一個查詢。下面將示例使用查詢向?qū)гO計一個簡單的單表查詢:從GXGLXT數(shù)據(jù)庫的Student表中查詢系部代號為“04”且是99級的所有學生的信息。操作過程如下:首先從“項目管理器”開始,選擇【數(shù)據(jù)】卡片中的“查詢”,然后單擊【新建】按鈕,則出現(xiàn)設計查詢的方式選擇對話框。單擊2020/12/28VisualFoxPro6.0程序設計6.1.1設計單表查詢查詢向?qū)Э梢砸龑в脩艨焖龠x擇GXGLXT數(shù)據(jù)庫中的Student表,并將該表中的所有字段添加到“選定字段”列表框中。單擊查詢向?qū)А侄芜x取2020/12/29VisualFoxPro6.0程序設計選擇GXGLXT數(shù)據(jù)庫中的Student表,并將該表從中選擇Student.系部代號0在此輸入值4取默認值從中選擇“包含”在此輸入值98單擊單擊【預覽】按鈕可以顯示查詢結果。根據(jù)要求,設置條件如上圖。其中,雖然表中沒有年級字段,但可通過“學號”得到年級(學號的前二位為年級)。
查詢向?qū)АY選記錄2020/12/210VisualFoxPro6.0程序設計從中選擇Student.系部代號0在此輸入值4取默認值從中選選擇排序字段單擊【添加】選擇排序方式調(diào)整排序順序移動按鈕單擊查詢向?qū)А涗浥判?020/12/211VisualFoxPro6.0程序設計選擇排序字段單擊【添加】選擇排序方式調(diào)整排序順序移動按鈕單擊查詢向?qū)А拗朴涗浵拗撇樵兘Y果中所包含的記錄數(shù)說明:查詢結果中所包含的記錄數(shù)限制共有四種方式:1、“部分類型”中選擇“所占記錄百分比”,“數(shù)量”中選擇“所有記錄”,查詢結果集中包含全部記錄。2、“部分類型”中選擇“所占記錄百分比”,“數(shù)量”中選擇“部分值”,再在“微調(diào)框”中設置數(shù)值,查詢結果集中包含指定數(shù)值百分數(shù)的記錄。3、“部分類型”中選擇“記錄號”,“數(shù)量”中選擇“所有記錄”,查詢結果集中包含全部記錄。4、“部分類型”中選擇“記錄號”,“數(shù)量”中選擇“部分值”,再在“微調(diào)框”中設置數(shù)值,查詢結果集中包含指定數(shù)值的記錄數(shù)。單擊取默認值,查詢結果集中包含全部記錄2020/12/212VisualFoxPro6.0程序設計查詢向?qū)А拗朴涗浵拗撇樵兘Y果中所包含的記錄數(shù)說明:查詢結查詢向?qū)А瓿蓪⒉樵円晕募男问剑?QPR)保存到一個指定的目錄中。將查詢保存到一個指定的目錄中并運行該文件。
利用查詢向?qū)гO計的查詢功能有限,可以使用查詢設計器修改它。單擊,可以查看查詢結果集中的全部數(shù)據(jù)打開幫助文件取消所建立的查詢返回到向?qū)У纳弦徊浇Y束向?qū)В瓿刹樵冊O計。單擊2020/12/213VisualFoxPro6.0程序設計查詢向?qū)А瓿蓪⒉樵円晕募男问剑?QPR)保存到一個指定保存設計的查詢目錄選擇下拉列表框文件名輸入文本框文件類型選擇下位列表框在“文件名輸入文本框”中輸入“Stud_query”后,單擊【保存】按鈕,結束查詢設計過程。在項目管理器中的“數(shù)據(jù)”選項中的查詢項下產(chǎn)生了一個查詢文件返回2020/12/214VisualFoxPro6.0程序設計保存設計的查詢目錄選擇下拉列表框文件名輸入文本框文件類型選擇6.1.2建立交叉表
如果在上文所述的建立查詢的第一步選擇“交叉表向?qū)А保瑒t可以建立交叉表。下面通過示例來介紹如何建立交叉表。用Grade表中的數(shù)據(jù)建立一個交叉表,以顯示每個學生所有課程的總成績。Grade表中的部分數(shù)據(jù)如:前面的設計過程同以上內(nèi)容,但是在第二步需要確定交叉表的行和列。2020/12/215VisualFoxPro6.0程序設計6.1.2建立交叉表如果在上文所述的建立查詢的第交叉表設計向?qū)А侄芜x取選擇數(shù)據(jù)庫和表選定字段單擊單個字段選定按鈕全部字段選定按鈕單個字段撤消按鈕說明:在這一步先在“數(shù)據(jù)庫和表”一選擇一個數(shù)據(jù)庫,再選擇用以建立交叉表的數(shù)據(jù)表,然后再從可用字段列表框中選擇要用的字段,交叉表只用三個字段,這一步可多選字段。全部字段撤消按鈕單擊2020/12/216VisualFoxPro6.0程序設計交叉表設計向?qū)А侄芜x取選擇數(shù)據(jù)庫和表選定字段單擊單個字段交叉表向?qū)Аx布局說明:(1)行,將要加入到交叉表中的第一個字段名,本示例中選擇字段“學號”;(2)列,將要加入到交叉表中的從第二個字段開始的若干個字段的字段名,注意這些從源表中選擇的數(shù)據(jù)不能超過254個。本示例中選擇字段“課程代號”;(3)數(shù)據(jù),對應行和列的運算結果,本示例中選擇“課程成績”。按提示操作:從可用字段列表框中將“學號”字段拖入“行”框,將“課程代號”拖入“列”框,將“課程成績”拖入“數(shù)據(jù)”框。單擊2020/12/217VisualFoxPro6.0程序設計交叉表向?qū)Аx布局說明:按提示操作:從可用字段列交叉表查詢向?qū)А尤肟偨Y信息說明:這一步的操作,決定在生成的交叉表中要加入的一個字段的內(nèi)容。(1)求和:求出對應行和列的數(shù)據(jù)字段的和;(2)計數(shù):求出對應行和列的數(shù)據(jù)字段的數(shù)目;(3)平均值:求出對應行和列的數(shù)據(jù)字段的平均值;(4)最大值:求出對應行和列的數(shù)據(jù)字段的最大值;(5)最小值:求出對應行和列的數(shù)據(jù)字段的最小值。
本示例中選擇“求和”運算。如果不想加入總結信息,可以在“分類匯總”中選擇“無”。單擊2020/12/218VisualFoxPro6.0程序設計交叉表查詢向?qū)А尤肟偨Y信息說明:這一步的操作,決定在生成交叉表向?qū)А瓿蓪⒔徊姹聿樵円晕募男问剑?QPR)保存到一個指定的目錄中。將交叉表查詢保存到一個指定的目錄中并運行該文件。
將交叉表查詢保存到一個指定的目錄中并打開“查詢設計器”修改它。對于值為空的記錄是否以.NULL.填充
說明:系統(tǒng)默認值是“保存交叉表查詢”和“顯示NULL值”。選擇“保存并運行交叉表查詢”后單擊2020/12/219VisualFoxPro6.0程序設計交叉表向?qū)А瓿蓪⒔徊姹聿樵円晕募男问剑?QPR)保存到交叉表保存及運行結果按上一步的操作完成后,進行到“另存為…”對話框中,將該查詢?nèi)∶麨镚rad_Query,然后保存在默認的目錄中。保存后,系統(tǒng)進入到數(shù)據(jù)查詢過程,稍候系統(tǒng)將查詢結果顯示出來。如:從中可以看到,凡是沒有數(shù)據(jù)的欄,就被.NULL.值填充,且有許多數(shù)據(jù)丟失。交叉表可以用數(shù)據(jù)過濾處理,在下一節(jié)中介紹。返回2020/12/220VisualFoxPro6.0程序設計交叉表保存及運行結果按上一步的操作完成后,進行到“另6.2用查詢設計器設計查詢6.2.1確定各表間的聯(lián)接關系
退出6.2.2選定查詢字段
6.2.3篩選記錄
6.2.4查詢結果排序
6.2.5建立分組查詢
6.2.6雜項的設置
6.2.7定向輸出查詢結果
6.2.8運行查詢返回2020/12/221VisualFoxPro6.0程序設計6.2用查詢設計器設計查詢6.2.1確定各表間的聯(lián)接6.2用查詢設計器設計查詢
前面學習了如何使用VFP6中文版提供的查詢向?qū)Э焖俚脑O計一個查詢。但是在實際應用中,查詢向?qū)гO計的查詢往往不能滿足需求。這時還可以采用查詢設計器方便靈活的設計各種查詢,也可以先用查詢向?qū)гO計一個簡單的查詢,再在查詢向?qū)е写蜷_并修改它。將上一節(jié)建立的Grad_Query交叉表查詢,用“查詢設計器”進行修改,使用之包含盡可能少的空欄??梢酝ㄟ^以下所提供的多種方法之一來打開查詢設計器:■從“項目管理器”啟動查詢設計器1、在“項目管理器”中選擇“數(shù)據(jù)”選項卡,再選取“查詢”項,再單擊【新建】,進入查詢設計方式選擇對話框后單擊【新建查詢】,則啟動“查詢設計器”。2、在“項目管理器”中選擇“數(shù)據(jù)”選項卡,從“查詢”項中選擇一個已存在的查詢文件,再單擊【修改】,也啟動“查詢設計器”。2020/12/222VisualFoxPro6.0程序設計6.2用查詢設計器設計查詢前面學習了如何使用V■從【文件】菜單啟動查詢設計器選擇系統(tǒng)菜單中的【文件】|【新建】命令,在“新建”對話框中選中“文件類型”下的“查詢”單選項,再單擊右邊的【新建文件】按鈕,也可啟動“查詢設計器”;■使用CREATEQUERY命令也可啟動“查詢設計器”現(xiàn)采用新建方式啟動“查詢設計器”2020/12/223VisualFoxPro6.0程序設計■從【文件】菜單啟動查詢設計器■使用CREATEQUERY查詢設計器下部分的窗口中有幾個選項卡,其含義簡介如下:(1)“字段”:用來選定包含在查詢結果中的字段;(2)“排序依據(jù)”:用來決定查詢結果輸出中記錄或行的排列順序;(3)“聯(lián)接”:用來確定各數(shù)據(jù)表或視圖之間的聯(lián)接關系;(4)“篩選”:相當于命令SETFILTERTO,利用過濾的方法查找一個特定的數(shù)據(jù)子集;(5)“分組依據(jù)”:所謂分組就是將一組類似的記錄壓縮成一個結果記錄,這樣就可以完成基于一組的計算。要設計一個查詢文件,首先必須明確查詢的目的是什么,即想要得到哪些數(shù)據(jù),并以什么方式存在;或者想要得到滿足某些條件的特定記錄,或者想要知道某些記錄的字段值組合成的表達式按某一方式輸出。明確了輸出的數(shù)據(jù)后,就可以開始設計查詢了,一般要通過以下幾個步驟進行:(1)啟動查詢設計器;(2)選擇出現(xiàn)在查詢結果中的字段;(3)設置選擇條件來查找可給出所需結果的記錄;(4)設置排序或分組選項來組織查詢結果;(5)選擇查詢結果的輸出類型:表、報表、瀏覽等;(6)運行查詢。返回2020/12/224VisualFoxPro6.0程序設計查詢設計器下部分的窗口中有幾個選項卡,其含義簡介如下:返回26.2.1確定各表間的聯(lián)接關系
下面將通過一個示例來介紹創(chuàng)建一個含有多個表中信息的查詢。例如在GXGLXT數(shù)據(jù)庫中有三個表:Student、Grade、Courses,現(xiàn)在想知道學號前四位是9904和9804的所有學生考試的成績。當在多個表或視圖間進行查詢時,需要指出這些表或視圖間的聯(lián)接關系。如前面所述,啟動查詢設計器,在“添加表和視圖”對話框中從“數(shù)據(jù)庫”中選擇GXGLXT庫,在“數(shù)據(jù)庫中的表”中選擇Student表,單擊【添加】按鈕,再選擇Grade表,再單擊【添加】,此時系統(tǒng)自動彈出一個“聯(lián)接條件”,詢問是否根據(jù)兩表中都有的“學號”字段建立內(nèi)部聯(lián)接,單擊“確定”,兩表間就有了一條連線,代表它們之間的聯(lián)接。然后再添加Courses表,最后關閉對話框。2020/12/225VisualFoxPro6.0程序設計6.2.1確定各表間的聯(lián)接關系下面將通過一個示例在“查詢設計器”中選擇“聯(lián)接”選項卡,如圖:在VFP6中表間的聯(lián)接有四種類型,分別是:2020/12/226VisualFoxPro6.0程序設計在“查詢設計器”中選擇“聯(lián)接”選項卡,如圖:在VFP6中表間(1)InnerJoin:內(nèi)部聯(lián)接,指定只有滿足聯(lián)接條件的記錄包含在結果中,此類型是默認的,也是最常用的;(2)RightOuterJoin:右聯(lián)接,指定滿足聯(lián)接條件的記錄,以及滿足聯(lián)接條件右側的表中記錄(即使不匹配聯(lián)接條件)都包含在結果中;(3)LeftOuterJoin:左聯(lián)接,指定滿足聯(lián)接條件的記錄,以及滿足聯(lián)接條件左側的表中記錄(即使不匹配聯(lián)接條件)都包含在結果中;(4)FullJoin:完全聯(lián)接,指定所有滿足和不滿足聯(lián)接條件的記錄都包含在結果中。如果想修改各表間的聯(lián)接,雙擊查詢設計器上部窗口表之間的連線,系統(tǒng)將彈出“連接條件”對話框;或者通過打開查詢設計器下部的“聯(lián)接”選項卡進行。一般不應隨便更改連接條件,不然會與實際數(shù)據(jù)間的關系不符?!皸l件”列表中包含如下幾項:(1)=:指字段值與實例相等;2020/12/227VisualFoxPro6.0程序設計(1)InnerJoin:內(nèi)部聯(lián)接,指定只有滿足聯(lián)接條件的(2)LIKE:表示“字段名”欄中給出的字段值與“實例”欄中給出的文本值之間執(zhí)行不完全匹配,它主要針對字符類型。例如,如設置查詢條件為“Student.學號LIKE9904”,那么諸如“學號”字段前四位為9904的記錄都滿足該條件;(3)==:表示在“字段名”欄中給出的字段值與“實例”欄中給出的文本值之間執(zhí)行完全匹配檢查,它也主要是針對字符類型的。(4)>:即為“字段名”欄中給出的字段的值應大于“實例”欄中給出的值;(5)>=:即為“字段名”欄中給出的字段的值應大于或等于“實例”欄中給出的值;(6)<:即為“字段名”欄中給出的字段的值應小于“實例”欄中給出的值;(7)<=:即為“字段名”欄中給出的字段的值應小于或等于“實例”欄中給出的值;(8)IsNull:指定字段必須包含Null值;(9)Between:即為輸出字段的值應大于或等于“實例”欄中的2020/12/228VisualFoxPro6.0程序設計(2)LIKE:表示“字段名”欄中給出的字段值與“實例最小值,而小于或等于“實例”欄中的最大值;(10)IN(在…之中):即為輸出字段的值必須是“實例”欄中所給出值中的一個,在“實例”欄中給出的各值之間以逗號分隔。此外,“聯(lián)接”選項卡中的“否”列用于指定.NOT.條件,“邏輯”列用于設置各聯(lián)接條件和篩選條件之間的邏輯關系(無、.AND.和.OR.),“大小寫”列用于指定是否區(qū)分大小寫。下方的“插入”和“移去”按鈕分別用于增加或移去查詢條件。最后,在設置篩選條件時,我們應注意如下幾點:(1)備注字段和通用字段不能用于設置查詢條件;(2)邏輯值的前后必須使用句點號,如.T.;(3)只有當字符串與查詢的表中字段名相同時,要用引號將字符串括起來,否則不需要用引號將字符串括起來;(4)日期不必用花括號括起來。返回2020/12/229VisualFoxPro6.0程序設計最小值,而小于或等于“實例”欄中的最大值;返回2020/126.2.2選定查詢字段
根據(jù)建立查詢的目的,選擇查詢結果中應包含的字段。操作方法與用向?qū)гO計查詢的方法相同。在本示例中先在“查詢設計器”中選擇“字段”選項卡,然后從可用字段列表框中選擇:Student.學號、Student.姓名、Courses.課程名稱、Grade.課程成績,如圖。選擇一個字段單擊【添加】選定的字段列表重復操作添加Student.姓名、Courses.課程名稱、Grade.課程成績返回2020/12/230VisualFoxPro6.0程序設計6.2.2選定查詢字段根據(jù)建立查詢的目的,選擇查6.2.3篩選記錄
選擇表中符合條件的一部分記錄而不是全部記錄是查詢的重要任務。此例要求從所有學生的成績信息中選出“學號”前四位為“9904”和“9804”的所有學生的成績,可以利用查詢設計器中的“篩選”選項卡?!昂Y選”選項卡可確定用于選擇記錄的字段和比較準則,以及輸入與該字段進行比較的示例值。選擇篩選字段設置篩選條件輸入篩選實例設置條件邏輯是否區(qū)分大小寫在字段名下的下拉選擇框中選擇“Grade.開課學期”,在“條件”下的下拉選擇框中選擇“=”,在“實例”下的文本框中輸入“第1學期”,返回2020/12/231VisualFoxPro6.0程序設計6.2.3篩選記錄選擇表中符合條件的一部分記錄而在“邏輯”下的下拉選擇框中選擇“AND”,然后再在字段名下的下拉選擇框中選擇“Student.學號”,在“條件”下的下拉選擇框中選擇“In”,在“實例”下的文本框中輸入“9904,9804”(請注意中間的“,”是En狀態(tài)下輸入的)。6.2.4查詢結果排序
排序決定了查詢輸出結果中記錄或行的先后順序,我們可以通過“排序依據(jù)”選項卡設置查詢的排序次序,方法同在用查詢向?qū)гO計查詢介紹的一樣,首先從“選定字段”框中選定要使用的字段,返回2020/12/232VisualFoxPro6.0程序設計在“邏輯”下的下拉選擇框中選擇“AND”,然后再在字段名下的并把它們移到“排序條件”框中,然后利用“排序選項”(從中選擇升序或降序)來設置排序條件。本例中設置Student.學號,升序為排序依據(jù)。選擇一個字段單擊【添加】選定的字段列表如果還需要添加用于排序的字段,可以重復以上的操作步驟。返回2020/12/233VisualFoxPro6.0程序設計并把它們移到“排序條件”框中,然后利用“排序選項”(從中選擇6.2.5建立分組查詢
所謂分組就是將一組類似的記錄壓縮成一個結果記錄,這樣就可完成基于一組記錄的計算。分組在與某些累計功能聯(lián)合使用時效果最好,例如SUM(),COUNT(),AVG()等。如果不想壓縮結果記錄,則不必設置它。在此例中不設分組查詢。如果想求各門課程的平均成績,可以用“課程名稱”進行分類查詢。選擇一個字段單擊【添加】選定的字段列表2020/12/234VisualFoxPro6.0程序設計6.2.5建立分組查詢所謂分組就是將一組類似的記錄壓縮成操作步驟如下:(1)在查詢設計器的“字段”選項卡中,單擊“函數(shù)和表達式”右邊的按鈕,出現(xiàn)“表達式”生成器;(2)在“數(shù)學”下拉式列表框中雙擊AVG(expN),在“來源于表”下拉框中選擇Grade表,在“字段”列表框中雙擊“課程成績”,單擊【確定】。即在“函數(shù)和表達式”框中自動生成了“AVG(Grade.課程成績)”這個表達式,用以計算Grade表中課程成績的平均值。(3)單擊“添加”按鈕,該表達式被添加到“選定字段”列表框中。將來查詢結果中就會有一列數(shù)據(jù)求平均值;(4)單擊“分組依據(jù)”選項卡,進入“分組依據(jù)”窗口,在“可用字段”中選擇Grade.課程名稱,再單擊【添加】按鈕,該字段即成為分組字段。運行查詢后的結果返回2020/12/235VisualFoxPro6.0程序設計操作步驟如下:運行查詢后的結果返回2020/12/235Vi6.2.6雜項的設置
經(jīng)過以上五個步驟,基本上已生成了一個比較全面的查詢。接下來還可以通過查詢設計器中的“雜項”選項卡做最后處理。單擊“雜項”選項卡,可以看到其間包括“無重復記錄”、“交叉數(shù)據(jù)表”、“全部”、“百分比”這四個復選框和一個微調(diào)按鈕。選中“無重復記錄”復選框表示對于查詢結果如果存在重復記錄,則只取相同記錄中的一個。選中此項,在查詢生成器的SQL語句中會自動加上限定詞Distinct,表示去掉重復記錄。2020/12/236VisualFoxPro6.0程序設計6.2.6雜項的設置經(jīng)過以上五個步驟,基本上已生成了一個當輸出的字段只有三項時,“交叉數(shù)據(jù)表”復選框為可選狀態(tài),否則為不可選狀態(tài)。選中“交叉數(shù)據(jù)表”復選框表示將查詢的結果以交叉表的形式傳遞給其它報表或表。三項查詢字段分別表示X軸、Y軸和圖形的單元值。如,在本示例中,將前面已加入到“選定字段”中的Student.學號字段移去,并按Student.姓名、Courses.課程名稱和Grade.課程成績的順序調(diào)整字段在“選定字段”列表框中的順序,然后在“雜項”選項卡中選中“交叉數(shù)據(jù)表”,同時將“分組依據(jù)”中的“Grade.課程代號”取消,其它設置不變。從圖中可以看到“交叉數(shù)據(jù)表”成為了可選?,F(xiàn)選中“交叉數(shù)據(jù)表”項,如圖:設置返回2020/12/237VisualFoxPro6.0程序設計當輸出的字段只有三項時,“交叉數(shù)據(jù)表”復選框為可選狀態(tài),否則6.2.7定向輸出查詢結果
查詢檢索的信息,可以輸出到不同的目的地,以用作不同的用途。如果沒有選定輸出的目的地,查詢結果將顯示在瀏覽窗口中。查詢輸出目的可以是瀏覽窗口、臨時表、表、圖形、屏幕、報表、標簽等。選擇結果的去向方法如下:單擊“查詢設計器工具”中的【查詢?nèi)ハ颉堪粹o,或者從【查詢】菜單中選擇【查詢?nèi)ハ颉浚煽吹饺鐖D所示的“查詢?nèi)ハ颉睂υ捒?。對話框中的按鈕含義如下:2020/12/238VisualFoxPro6.0程序設計6.2.7定向輸出查詢結果查詢檢索的信息,可以輸出到不同【瀏覽】:在瀏覽窗口中顯示查詢結果,這是查詢?nèi)笔≡O置;【臨時表】:將查詢結果存儲在一個臨時只讀表中。多次查詢的結果可放在不同的表內(nèi)。該表可用于瀏覽數(shù)據(jù),制作報表等,直到用戶關閉它們;【表】:將查詢的結果保存在一個命名的表(.DBF)中,此時查詢的結果是真正的存放到磁盤上的,多次查詢的結果可放在不同的表內(nèi);【圖形】:使查詢結果可用于MicrosoftGraph(包含在VFP6中的一個獨立的應用程序)中制作圖表;【屏幕】:在VFP6主窗口或當前活動輸出窗口中顯示查詢結果;【報表】:將輸出送到一個報表文件(.FRX)中;【標簽】:將輸出送到一個標簽文件(.LBX)中。選定一個去向,按一定的步驟設置一些屬性,然后單擊【確定】按鈕,系統(tǒng)就將按意圖放置查詢結果。假設本例將查詢結果保存到臨時表中,取臨時表名為“查詢1”。返回2020/12/239VisualFoxPro6.0程序設計【瀏覽】:在瀏覽窗口中顯示查詢結果,這是查詢?nèi)笔≡O置6.2.8運行查詢
在完成了查詢的設計工作并指定了結果輸出去向后,可通過以下五種方式之一運行查詢:■在查詢設計器區(qū)域內(nèi)單擊右鍵,在彈出菜單中選擇“運行查詢”;■在“項目管理器”中選定查詢的名稱,然后選定“運行”按鈕;■在“查詢”菜單中選擇“運行查詢”:■在命令窗口中鍵入DO查詢名.qpr?!鰡螕粝到y(tǒng)常用菜單上的“運行”按鈕。本例中按前述步驟設置后,單擊系統(tǒng)菜單上的“運行”按鈕運行交叉表查詢,并將查詢結果保存到臨時表“查詢1”中,然后再在瀏覽窗口中單擊【顯示】|【瀏覽“查詢1”】,結果如右表。返回2020/12/240VisualFoxPro6.0程序設計6.2.8運行查詢在完成了查詢的設計工作并指定了結果輸出6.3創(chuàng)建視圖
6.3.1創(chuàng)建本地視圖6.3.2用已有的SQLSELECT語句創(chuàng)建視圖6.3.3創(chuàng)建遠程視圖返回退出2020/12/241VisualFoxPro6.0程序設計6.3創(chuàng)建視圖6.3.1創(chuàng)建本地視圖6.3.26.3.1創(chuàng)建本地視圖
視圖可以通過向?qū)Ш驮O計器兩種方法來創(chuàng)建。1、利用向?qū)?chuàng)建本地視圖用本地視圖向?qū)?chuàng)建本地視圖,可采取以下方式:方式一:(1)在主窗口下打開【工具】菜單,選擇【向?qū)А坎藛蚊?。?)再選擇【全部】菜單,出現(xiàn)【向?qū)нx取】對話框,如圖單擊滑動按鈕選擇“本地視圖向?qū)А眴螕簟敬_定】進入到“本地視圖向?qū)А襟E1——字段選取’”2020/12/242VisualFoxPro6.0程序設計6.3.1創(chuàng)建本地視圖視圖可以通過向?qū)Ш驮O計器兩種方法方式二:(1)在主窗口下打開【文件】菜單,選擇【新建】菜單命令。(2)選擇“視圖”,再單擊【向?qū)А浚瑢棾觥颈镜匾晥D向?qū)А繉υ捒?。?)然后按照向?qū)聊簧系闹甘静僮鳌7绞饺海?)在項目管理器中選定數(shù)據(jù)庫。(2)選定本地視圖,單擊【新建】按鈕。(3)單擊【視圖向?qū)А堪粹o(4)然后按照向?qū)聊簧系闹甘静僮鳌7绞剿模海?)打開數(shù)據(jù)庫設計器,打開【數(shù)據(jù)庫】菜單。(2)選擇【新建本地視圖】,再單擊【視圖向?qū)А堪粹o。(3)然后按照向?qū)聊簧系闹甘静僮鳌?020/12/243VisualFoxPro6.0程序設計方式二:(4)然后按照向?qū)聊簧系闹甘静僮鳌?020/12/本地視圖向?qū)В翰襟E1——字段選取說明:按照上述幾種方式,可以快速建立本地視圖,但要強調(diào)的是,在項目管理器中創(chuàng)建或使用視圖時,項目管理器會自動打開數(shù)據(jù)庫。如果要使用項目以外的表或視圖,則必須先打開數(shù)據(jù)庫或事先確認數(shù)據(jù)庫在作用范圍內(nèi)。本地視圖向?qū)υ捒蛉鐖D,可以看到,創(chuàng)建視圖大體要經(jīng)過以下步驟:(1)字段選取。選擇數(shù)據(jù)庫,數(shù)據(jù)庫中的表和表中的字段。如果當前已經(jīng)打開了一個數(shù)據(jù)庫,則第一步的對話框中顯示的2020/12/244VisualFoxPro6.0程序設計本地視圖向?qū)В翰襟E1——字段選取說明:按照上述幾種方式,可以是創(chuàng)建當前數(shù)據(jù)庫的視圖,也可以選擇其它的數(shù)據(jù)庫。(2)關聯(lián)表。建立數(shù)據(jù)庫中表與表之間的關系。(3)包含記錄。指定包含表中的全部記錄還是僅匹配的記錄。(4)篩選記錄。選定符合條件的記錄。(5)排序記錄。為選定的記錄按照某一字段進行排序。(6)限定記錄。定制顯示一定數(shù)量的記錄。(7)完成視圖。選擇保存視圖后瀏覽還是修改。例:創(chuàng)建包含Grade表和Courses表的本地視圖“視圖1”。選擇表Grade單擊全部添加按鈕選擇Courses表單擊單個添加按鈕,添加課程名、學時數(shù)、學分數(shù)字段選擇完成后,單擊【下一步】,步驟2——為表建立關系。2020/12/245VisualFoxPro6.0程序設計是創(chuàng)建當前數(shù)據(jù)庫的視圖,也可以選擇其它的數(shù)據(jù)庫。選擇表Gra本地視圖向?qū)В翰襟E2——為表建立關系父表字段選擇下拉選擇框子表字段選擇下拉選擇框說明:在這一步要建立用來建立本地視圖的表間的關系。1、先在父表字段選擇下拉選擇框中選擇要用來建立關系的主關鍵字;2、再在子表字段選擇下拉選擇框中選擇用來建立關系的子表關鍵字;3、單擊【添加】,將設定關系添加到關系列表框中。上面的字段符合要求,單擊【添加】關系設置完成后單擊【下一步】進入到步驟2a——字段選取對話框。2020/12/246VisualFoxPro6.0程序設計本地視圖向?qū)В翰襟E2——為表建立關系父表字段選擇下拉選擇框子本地視圖向?qū)В翰襟E2a——字段選取生成的本地視圖中只包含表中關系相匹配的記錄,對應于關系中的內(nèi)聯(lián)接的設置結果。生成的本地視圖中包含Grade表中的全部記錄和子表中關鍵字段相匹配的記錄,對應于關系中的左聯(lián)接的設置結果。生成的本地視圖中包含Courses表中全部記錄和父表中關鍵字段相匹配的記錄,對應于關系中的右聯(lián)接的設置結果。生成的本地視圖中包含表中所有的記錄,對應于關系中的完全聯(lián)接的設置結果。本例中選用默認值:僅包含匹配的行。然后單擊【下一步】,進入步驟3——篩選記錄。2020/12/247VisualFoxPro6.0程序設計本地視圖向?qū)В翰襟E2a——字段選取生成的本地視圖中只包含表中本地視圖向?qū)В翰襟E3——篩選記錄說明:本地視圖向?qū)У暮Y選記錄與查詢向?qū)У暮Y選記錄的方式類似。在本例中不篩選記錄。單擊【下一步】,進入到本地視圖向?qū)У牟襟E4——排序記錄。2020/12/248VisualFoxPro6.0程序設計本地視圖向?qū)В翰襟E3——篩選記錄說明:本地視圖向?qū)У谋镜匾晥D向?qū)В翰襟E4——排序記錄
說明:在這一步中設置在本地視圖的記錄順序。本例中可先按“學號”排序,學號相同的再按“課程代號”排序。操作方法與建立查詢的記錄排序方法相同。先在“可用字段”列表框中選擇“學號”,然后單擊【添加】,再選擇“課程代號”,再單擊【添加】如上圖。排序字段及順序設置后單擊【下一步】,進入本地視圖向?qū)В翰襟E4a——限制記錄。2020/12/249VisualFoxPro6.0程序設計本地視圖向?qū)В翰襟E4——排序記錄說明:在這一步中設置本地視圖向?qū)В翰襟E4a——限制記錄限制記錄的方法與建立查詢的限制記錄的方法完全相同。在本例中仍保持在本地視圖中包含所有的記錄,因而取默認值,直接單擊【下一步】,進入本地視圖向?qū)В翰襟E5——完成。在第5步中的操作方法也與建立查詢的方法相同,現(xiàn)選擇“保存本地視圖并瀏覽”,然后單擊【完成】。彈出“視圖名”對話框。在“視圖名”文本框中輸入“視圖1”。輸入視圖名后單擊【確認】按鈕,系統(tǒng)顯示所建立的本地視圖的結果。本地視圖向?qū)ЫY束。2020/12/250VisualFoxPro6.0程序設計本地視圖向?qū)В翰襟E4a——限制記錄限制記錄的方法與建2、利用視圖設計器創(chuàng)建本地視圖通過本地視圖向?qū)Ы?shù)據(jù)庫視圖雖然方便,快捷,但這僅對入門者如此,何況用視圖向?qū)Ы?shù)據(jù)庫視圖最終還要依賴視圖設計器。因此,傾向獨立進行開發(fā)的程序員來說,僅僅學會使用向?qū)沁h遠不夠的,還應學會使用視圖設計器的強大功能來創(chuàng)建視圖。(1)
進入視圖設計器進入視圖設計器的方法與進入查詢設計器的方法基本相同,下面以新建視圖的方式進入視圖設計器。2020/12/251VisualFoxPro6.0程序設計2、利用視圖設計器創(chuàng)建本地視圖圖設計器的強大功能來創(chuàng)建視圖。啟動視圖設計器方法新建一個視圖可按以下步驟進入視圖設計器:■選擇【文件】|【新建】命令,單擊“視圖”單選框,再單擊【新建文件】按鈕?!鲈跀?shù)據(jù)庫設計器中,選擇【數(shù)據(jù)庫】|【新建本地視圖】或單擊數(shù)據(jù)庫設計器的快捷菜單中的【新建本地視圖】|【新視圖】按鈕?!鲈陧椖抗芾砥髦?,單擊“數(shù)據(jù)”選項卡,在列表框中選定“本地視圖”,再單擊【新建】按鈕,單擊【新建視圖】按鈕。修改一個視圖可按以下步驟進入視圖設計器:■在數(shù)據(jù)庫設計器窗口中,單擊選定需要修改的視圖,選擇【數(shù)據(jù)庫】|【修改】命令?!鲈跀?shù)據(jù)庫設計器窗口中,右擊需要修改的視圖,在出現(xiàn)的快捷菜單中選擇【修改】命令?!鲈陧椖抗芾砥髦校瑔螕簟緮?shù)據(jù)】選項卡,在列表框中選定需要修改的視圖,單擊【修改】按鈕。2020/12/252VisualFoxPro6.0程序設計啟動視圖設計器方法新建一個視圖可按以下步驟進入視圖設計“視圖設計器”工具欄說明添加表移去表添加聯(lián)接顯示SQL窗口最大化上部窗格添加表:顯示“添加表或視圖”對話框,從而可以向設計器窗口添加一個表或視圖移去表:從設計器窗口的上窗格中移去選定的表。添加聯(lián)接:在視圖中的兩個表之間創(chuàng)建聯(lián)接條件顯示/隱藏SQL窗口:顯示或隱藏建立當前視圖的SQL語句最大化/最小化上部窗口:放大或縮小視圖設計器的上窗格2020/12/253VisualFoxPro6.0程序設計“視圖設計器”工具欄說明添加表移去表添加聯(lián)接顯示SQL窗口最(2)從表中選擇所需字段在進行本地視圖設計器之前,先建立Classzc表和Department表,表結構和數(shù)據(jù)如下:2020/12/254VisualFoxPro6.0程序設計(2)從表中選擇所需字段2020/12/254Visual通過上述方式之一打開視圖設計器,在進入設計器之前,需要選定數(shù)據(jù)庫和表,現(xiàn)選定GXGLXT數(shù)據(jù)庫,如右圖:從中選定表Classzc并單擊【添加】按鈕,然后單擊【關閉】按鈕,啟動視圖設計器。2020/12/255VisualFoxPro6.0程序設計通過上述方式之一打開視圖設計器,在進入設計器之前,需視圖設計器進入視圖設計器后,第一步先需要選定字段,選定字段可直接通過字段選項卡進行。其操作方法與查詢設計器中選擇字段的方法相同。2020/12/256VisualFoxPro6.0程序設計視圖設計器進入視圖設計器后,第一步先需要選定字段,選從“可用字段”列表框里選定Classzc.班級簡稱字段,單擊【添加】按鈕或雙擊該字段,則Classzc.班級簡稱字段將會出現(xiàn)在右邊的“選定字段”列表框中。本次建立的視圖里,還需要選定Classzc.學習性質(zhì)、Classzc.學制二個字段。它們選定的方法與選定Classzc.班級簡稱字段一樣。如果需選定字段是“可用字段”列表框中的所有字段,可以單擊【全部添加】按鈕,這樣就把所有字段添加到了“選定字段”列表框中去了,可以通過【移去】按鈕將其移出來。如果需要全部移出,可以利用【全部移去】按鈕快速移出。要將表中的字段添加到“選定字段”列表框中,除了上述方法外,還可以將鼠標指向視圖設計器上部窗口中的表窗口中的字段上,按住鼠標左鍵或右鍵拖動一個字段到“選定字段”列表框,該字段就被加入到了“選定字段”列表框中。還可以通過雙擊字段名將其加入到“選定字段”列表框。表窗口中的*代表表中的全部字段,它也是可以拖動或雙擊的。若要從“選定字段”列表框中移去字段,也可以使用鼠標拖動或雙擊。2020/12/257VisualFoxPro6.0程序設計從“可用字段”列表框里選定Classzc.班級簡稱字段,單擊“字段”選項卡還有一個【屬性】按鈕和一個“函數(shù)和表達式”文本框。只要“選定字段”列表框中有一個值,【屬性】命令按鈕就成為可選的了。選擇【屬性】后,出現(xiàn)圖:2020/12/258VisualFoxPro6.0程序設計“字段”選項卡還有一個【屬性】按鈕和一個“函數(shù)和表達屬性設置可分為五種類型:字段有效性、顯示、匹配字段到類、數(shù)據(jù)匹配和注釋。其中字段有效性、顯示、匹配字段到類和注釋在第3章中介紹數(shù)據(jù)表設計時已經(jīng)作過說明,視圖設計和數(shù)據(jù)表設計在字段屬性上基本類似?!昂瘮?shù)和表達式”文本框及其按鈕:“函數(shù)和表達式”文本框用于輸入一個函數(shù)和表達式,具體操作只需單擊“函數(shù)和表達式”文本框后的對話按鈕,在隨后出現(xiàn)的表達式生成器中書寫函數(shù)或表達式。此選項的功能是為了生成一個虛擬的字段。后面的創(chuàng)建步驟與本章前述的用查詢設計器設計查詢相似,在此不一一闡述。(3)建立多表關聯(lián)前面主要是針對單一的本地表建立視圖,雖然很容易,但它的實際功能不大。因為在實際開發(fā)中,系統(tǒng)的數(shù)據(jù)庫很復雜,表的關聯(lián)性很強,用戶關心的往往是一些復雜的數(shù)據(jù),因此需要建立多表視圖。2020/12/259VisualFoxPro6.0程序設計屬性設置可分為五種類型:字段有效性、顯示、匹配字段到類、數(shù)據(jù)從定義上講,多表視圖指的是:視圖中的字段來源于兩個或兩個以上的表。但是,在視圖中表間的關系既不像數(shù)據(jù)庫中的關系是永久的,也不像表中的關系是暫時的,它不靠索引字段進行聯(lián)接,而是通過定義一個聯(lián)接表達式來進行聯(lián)接,表間的關系是松散的??梢园慈缦罗k法建立表間的聯(lián)接:■在視圖設計器中單擊“聯(lián)接”選項卡即可設置多表間的關聯(lián)?!鲈凇疤砑颖砘蛞晥D”對話框中,選定表后,單擊【添加】按鈕,當視圖設計器中的表在兩個及以上時,視圖設計器就會為選定的表建立關聯(lián)。說明:用以上的方法建立多表關聯(lián),必須有多個表添加到了視圖設計器中。后續(xù)的操作方法與設計多表查詢相似,除不同點外,相同的部分這里不再講述。下面我們來建立表Department、Classzc、Student、Courses和Grade五表之間的關聯(lián)的視圖,起名為視圖3。2020/12/260VisualFoxPro6.0程序設計從定義上講,多表視圖指的是:視圖中的字段來源于兩個或兩個以上(4)與設計多表查詢不相同的部分——更新條件視圖的最大特點在于能用視圖更新數(shù)據(jù),這也是建立視圖與建立查詢的主要區(qū)別,也是視圖的重點所在。視圖設計器中的“更新條件”選項卡可以用來設置允許視圖更新表字段的條件。2020/12/261VisualFoxPro6.0程序設計(4)與設計多表查詢不相同的部分——更新條件2020/12/“更新條件”選項卡選項包括如下內(nèi)容:■“表”:指定視圖所使用的哪些表可以修改。選擇這個下拉列表框中的選項,可以確定哪些表中的字段可以在“字段名”列表框中,以便設置更新條件。此列表中所顯示的表都包含了“字段”選項卡“選定字段”列表中的字段?!觥局刂藐P鍵字】:這個按鈕作用是從每個表中選擇主關鍵字字段作為視圖的關鍵字字段。每個主關鍵字字段是在“字段名”列表中的、在鑰匙符號下面打一個對鉤的字段,關鍵字字段可2020/12/262VisualFoxPro6.0程序設計“更新條件”選項卡選項包括如下內(nèi)容:■“表”:指定視圖所使用可用來使視圖中的修改與表中的原始記錄相匹配。■【全部更新】:可以從字段名文本框中看到一些字段前的鉛筆符號下打了一個對鉤,這表明這些字段可以更新。在這個按鈕中可以選擇除了關鍵字字段以外的所有字段來進行更新,并在“字段名”列表的鉛筆符號下打一個對鉤?!觥鞍l(fā)送SQL更新”:指定是否將視圖記錄中的修改傳送給原始表。如果選擇了這個復選框,將把在視圖中對記錄字段的修改返回到源表中?!觥白侄蚊绷斜砜颍猴@示了從“表”列表框中所選的表中的字段、并用來輸出這些字段,不過這些字段都是可以更新的。在字段文本框中共有下列3種方式字段:●關鍵字段(使用鑰匙符號作標記),指定該字段是否為關鍵字段?!窨筛伦侄危ㄊ褂勉U筆符號作標記),指定該字段是否為可更新字段?!褡侄蚊?,顯示可標志為關鍵字字段或可更新字段的輸出字段名。2020/12/263VisualFoxPro6.0程序設計可用來使視圖中的修改與表中的原始記錄相匹配。2020/12/
■“SQLWHERE子句包括”:●“關鍵字段”:如果在原始表中有一個關鍵字字段被改變,設置WHERE子句來檢測沖突,對于由另一用戶對表中原始記錄的其他字段所做修改不進行比較?!瘛瓣P鍵字和可更新字段”:設置WHERE子句來檢測由某一用戶修改了任何可更新的字段的沖突?!瘛瓣P鍵字和已修改字段”:如果從視圖首次檢索(默認)以后,關鍵字字段或原始表記錄的已修改字段中,某個字段做過修改,設置WHERE子句來檢測沖突?!瘛瓣P鍵字段和時間戳”:如果自原始表記錄的時間戳首次檢索以后,它被修改過,設置WHERE子句來檢測沖突。只有當遠程表有時間戳列時,此選項才有效?!觥笆褂酶隆保捍藛芜x按鈕組用于指定字段如何在后端服務器上進行更新?!瘛癝QLDELETE然后INSERT”:指定先刪除原始表記錄后,再創(chuàng)建一個新的在視圖中被修改的記錄?!瘛癝QLUPDATE”:指定用視圖字段中的內(nèi)容來修改原始表中的字段。具體說明如何設置更新條件詳見6.5在視圖中更新數(shù)據(jù)。返回2020/12/264VisualFoxPro6.0程序設計■“SQLWHERE子句包括”:返回2020/16.3.2用已有的SQLSELECT語句創(chuàng)建視圖
同查詢一樣,可用SELECT—SQL語言創(chuàng)建視圖。若用SELECT—SQL建立視圖,則可用下列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][ON
Join-Condition…]
[[INTO
Destination]|[TOFILE
[ADDITIVE]|TOPRINTER[PROMPT]|TOSCREEN]][PREFERENCEPreferenceName][NOCONSOLE][PLAIN][NOWAIT]
[WHEREJoinCondition[.AND.JoinCondition...][.AND.|.OR.FilterCondition[.AND.|.OR.FilterCondition...]]][GROUPBY
GroupColumn[,GroupColumn...]][HAVINGFilterCondition][UNION[ALL]SELECTCommand][ORDERBY
Order_Item[ASC|DESC][,Order_Item[ASC|DESC]...]]2020/12/265VisualFoxPro6.0程序設計6.3.2用已有的SQLSELECT語句創(chuàng)建視圖同功能:從一個或多個表中檢索數(shù)據(jù)。參數(shù)描述:SELECT:用SELECT子句指定在查詢結果中包含的字段、常量和表達式。[ALL]:在查詢結果中包含所有的行(包括重復值)。它是系統(tǒng)的默認設置。[DISTINCT]:在查詢結果中刪除重復行。[TOPnExpr[PERCENT]]:在符合查詢條件的所有記錄中,選取指定數(shù)量或百分比的記錄。TOP子句必須與ORDERBY子句同時使用。ORDERBY子句指定按哪個字段排序,TOP子句根據(jù)此排序選定開始的nExp個或nExp%的記錄??梢灾付ㄟx取1~32767條記錄。[Alias.]:限定匹配項的名稱。Select-Item指定的每一項在查詢結果中都生成一列,如果多個項具有相同的名稱,則應在這些項前加上表的別名和一個句點號,以防止出現(xiàn)重復的列。Select_Item:指定包含在查詢中的一個項。一個項可以是:2020/12/266VisualFoxPro6.0程序設計功能:從一個或多個表中檢索數(shù)據(jù)。2020/12/266Vis①FROM子句中所包含的表中的字段名稱。②一個常量,查詢結果中的每一行都出現(xiàn)這個常量值。③一個表達式,可以是用戶自定義函數(shù)名。[ASColumn_Name]:指定查詢結果中的列標題。當Select-Item是一個表達式或一個字段函數(shù)時,如果要給此列取一個有意義的名稱可用這個子句。它可以是一個表達式。FROM:列出所有從中檢索數(shù)據(jù)的表。如果沒有打開表,VFP會顯示“打開”對話框以便指定文件位置,表打開以后直到查詢結束才關閉。[FORCE]:如果包含了此子句,VFP在建立查詢時會嚴格按照在FROM子句中申明的順序建立聯(lián)接,否則會試圖對查詢進行優(yōu)化。避免優(yōu)化過程,可能會加快查詢執(zhí)行的速度。[DatabaseName!]:當包含表的數(shù)據(jù)庫不是當前的數(shù)據(jù)庫時,此子句指定數(shù)據(jù)庫的名稱。如果數(shù)據(jù)庫不是當前數(shù)據(jù)庫,就必須指定包含表的數(shù)據(jù)庫名稱,注意其后應加上“!”號。Table[[AS]Local_Alias]:為Table中的表指定一個臨時名稱。2020/12/267VisualFoxPro6.0程序設計①FROM子句中所包含的表中的字段名稱。2020/12/26如果指定了本地別名,那么在整個Select語句中都必須用這個別名代替表名。INNERJOIN:只有在其它表中包含對應記錄(一個或多個)的記錄才出現(xiàn)在查詢結果中。LEFT[OUTER]JOIN:在查詢結果中包含JOIN左側表中的所有記錄,以及右側表中匹配的記錄。這是左聯(lián)接。RIGHT[OUTER]JOIN:在查詢結果中包含JOIN右側表中的所有記錄,以及左側表中匹配的記錄。這是右聯(lián)接。FULL[OUTER]JOIN:在查詢結果中包含JOIN兩側表中的所有記錄,這是完全聯(lián)接。[DatabaseName!]Table[[AS]Local_Alias]:指定和當前表建立聯(lián)接的表所在的數(shù)據(jù)庫及表名或本地表別名。ONJoinCondition:指定聯(lián)接條件。[INTODestination]:指定在何處保存查詢結果。如果在同一個查詢中同時包含了INTO子句和TO子句,則TO子句不起作用。如果沒有包含INTO子句,查詢結果顯示在“瀏覽”窗口中。2020/12/268VisualFoxPro6.0程序設計如果指定了本地別名,那么在整個Select語句中都必須用這個Destination可以是下列子句之一:①ARRAYArrayName:將查詢結果保存到數(shù)組中。如果查詢結果中不包含任何記錄,則不創(chuàng)建這個數(shù)組。②CURSORCursorName:將查詢結果保存到臨時表中。如果指定了一個已打開表的名稱,則VFP產(chǎn)生錯誤信息。執(zhí)行完SELECT語句后,臨時表仍然保持打開、活動,但只讀。一旦關閉臨時表,則自動刪除它。③DBFTableName|TABLETableName:將查詢結果保存到一個表中,如果指定的表已經(jīng)打開,并且SETSAFETY設置為OFF,則VFP在不給出任何警告信息的情況下改寫該表。執(zhí)行完SELECT語句后,臨時表仍然保持打開活動狀態(tài)。[TOFILE[ADDITIVE]|TOPRINTER[PROMPT]|TOSCREEN]:如果命令中包含了TO子句,但沒有包括INTO子句,則查詢結果定向輸出到名為的ASCII碼文件、打印機或主窗口。包含ADDITIVE子句使查詢結果追加到所指定的文本文件的內(nèi)容后面。2020/12/269VisualFoxPro6.0程序設計Destination可以是下列子句之一:2020/12/2[PREFERENCEPreferenceName]:如果查詢結果送往瀏覽窗口,就可以使用該子句保存瀏覽窗口的屬性和選項以備后用。[NOCONSOLE]:不顯示送到打印機、文件、或VFP主窗口的查詢結果。[PLAIN]:防止列標題出現(xiàn)在顯示的查詢結果中。[NOWAIT]:打開瀏覽窗口并將結果輸出到這個窗口后繼續(xù)程序的執(zhí)行。WHERE:告訴VFP只在查詢結果中包含一定的記錄。從多表檢索中查找數(shù)據(jù)時需要用到該子句。JoinCondition:指定一個字段,該字段聯(lián)接FROM子句中的表。如果查詢中包括不止一個表就應該為第一個表后的每一個表指定聯(lián)接條件。聯(lián)接多個查詢條件必須使用.AND.。每個聯(lián)接都是這樣的形式:FieldName1ComparisonFieldName2其中:FieldName1是一個表的字段名,F(xiàn)ieldName2是另一個表的字段名。Comparison是下列的某一操作符:2020/12/270VisualFoxPro6.0程序設計[PREFERENCEPreferenceName]:如果=、==、LIKE、<>,!=,#、>、>=、<、<=FilterCondition:指定包含在查詢結果中的記錄必須滿足條件。篩選條件的數(shù)目沒有限制,只要將它們用.AND.或.OR.操作符連接起來即可。也可以使用操作符.NOT.對邏輯表達式取反,或使用EMPTY()函數(shù)檢查字段是否為空等。[GROUPBYGroupColumn]:按列的值對查詢結果進行分組。GroupColumn可以是常規(guī)的表字段名,也可以是一個包含SQL字段函數(shù)的字段名,還可以是一個數(shù)值表達式指定查詢結果表中的列位置。[HAVINGFilterCondition]:指定包含在查詢結果中的組必須滿足的條件。它應和GROUPBYGroupColumn一起使用。[UNION[ALL]SELECTCommand]:把一個SELECT語句的最后查詢結果同另一個SELECT語句最后的查詢結果組合起來。ALL防止UNION刪除組合結果中的重復行。[ORDERBYOrder_Item]:根據(jù)列的數(shù)據(jù)對查詢結果進行排序。每個Order_Item都必須對應查詢結果中的一列。2020/12/271VisualFoxPro6.0程序設計=、==、LIKE、<>,!=,#、>、>=、<、<=202用SELECT—SQL命令完成上節(jié)的設計任務:SELECTDepartment.系部名稱,Classzc.班級名稱,Student.學號,;Student.姓名,Course.課程名,Grade.課程成績;
FROMgxglxt!departmentINNERJOINgxglxt!classzc;INNERJOINgxglxt!student;INNERJOINgxglxt!grade;INNERJOINgxglxt!course;ONGrade.課程代號=Course.課程代號;ONStudent.學號=Grade.學號;ONClasszc.班級代號=Student.班級代號;ONDepartment.系部代號=Classzc.系部代號;WHEREClasszc.系部代號="04";.AND.Grade.開課學期="第1學期";
ORDERBYStudent.學號;INTOCURSOR視圖12020/12/272VisualFoxPro6.0程序設計用SELECT—SQL命令完成上節(jié)的設計任務:2020/12運行該SELECT語句后,選擇【顯示】|【瀏覽“視圖1”】屏幕顯示如圖:返回2020/12/273VisualFoxPro6.0程序設計運行該SELECT語句后,選擇【顯示】|【瀏覽“視圖6.3.3創(chuàng)建遠程視圖
1、用視圖向?qū)?chuàng)建遠程視圖創(chuàng)建使用遠程數(shù)據(jù)(ODBC)的視圖,必須存在一個數(shù)據(jù)庫來保存視圖,同時還需要存在數(shù)據(jù)源或命名連接。如果沒有打開數(shù)據(jù)庫,系統(tǒng)將提示打開數(shù)據(jù)庫或創(chuàng)建數(shù)據(jù)庫。在運行“遠程視圖向?qū)А敝?,可以在“選項”對話框的“遠程數(shù)據(jù)”選項卡上設置遠程視圖和連接的默認選項。也可以在“連接設計器”中創(chuàng)建連接。如果要利用遠程視圖向?qū)?chuàng)建遠程視圖,則選擇【文件】|【新建】命令,在彈出的新建對話框中選中遠程視圖,然后單擊【向?qū)А堪粹o。就會進入遠程視圖向?qū)υ捒蛑小;蛘咴跀?shù)據(jù)庫設計器工具欄中單擊【新建遠程視圖】按鈕,選擇使用向?qū)А?020/12/274VisualFoxPro6.0程序設計6.3.3創(chuàng)建遠程視圖1、用視圖向?qū)?chuàng)建遠程視圖創(chuàng)建遠程視圖主要有以下步驟:1、
數(shù)據(jù)源選取2、字段選取3、為表建立關系4、包含記錄5、排序記錄6、篩選記錄7、完成在第一步數(shù)據(jù)源選取中,可以在可用的數(shù)據(jù)源列表框中選擇一種ODBC數(shù)據(jù)源或者一個已經(jīng)建立的連接。如果選擇的是一種未連接任何數(shù)據(jù)源的ODBC數(shù)據(jù)源,系統(tǒng)將顯示一個“確認連接”對話框,從中選擇一個數(shù)據(jù)源。當選擇的VFPTables或VFP2020/12/275VisualFoxPro6.0程序設計創(chuàng)建遠程視圖主要有以下步驟:在第一步數(shù)據(jù)源選取中,可以在可用Databases時,會打開建立數(shù)據(jù)源對話框。在此對話框中為數(shù)據(jù)庫選擇一種類型,同時在Path中輸入遠程數(shù)據(jù)源的文件名或者使用【Browse】按鈕選擇一個文件作為遠程數(shù)據(jù)源。選擇數(shù)據(jù)源以后,向?qū)Ь蜁M入下一步,以后的步驟與本地視圖及創(chuàng)建查詢沒有太大的差別,在此不再贅述。2020/12/276VisualFoxPro6.0程序設計Databases時,會打開建立數(shù)據(jù)源對話框。在此對話框中為2、利用視圖設計器創(chuàng)建遠程視圖創(chuàng)建新的遠程視圖首先必須要有同數(shù)據(jù)源的連接。在數(shù)據(jù)庫設計器中單擊鼠標右鍵選擇【新建遠程視圖】或者在【文件】下的【新建】命令,在新建對話框中選擇遠程視圖,并單擊【新建文件】按鈕。此時會顯示選擇連接或數(shù)據(jù)源對話框,在此對話框中選擇連接或者可用的數(shù)據(jù)源。如圖。2020/12/277VisualFoxPro6.0程序設計2、利用視圖設計器創(chuàng)建遠程視圖2020/12/277Visu如果已經(jīng)存在定義的連接,該對話框中就顯示所定義的連接。如果要定義新的連接,可單擊【新建】按鈕,出現(xiàn)圖示的“連接設計器”。2020/12/278VisualFoxPro6.0程序設計如果已經(jīng)存在定義的連接,該對話框中就顯示所定義的連接。如果要在數(shù)據(jù)源下面的下拉選項框中選擇VisualFoxProDatabase項,其它項均采用系統(tǒng)默認設置,然后選擇【驗證連接】按鈕。如果為這個連接指定了一個數(shù)據(jù)庫,則會出現(xiàn)“連接成功”的提示信息,否則,將出現(xiàn)如圖所示的連接配置(ConfigureConnection)對話框。在該對話框中選擇【Browse】后將出現(xiàn)圖示的“選擇數(shù)據(jù)庫”(SelectDatabase)對話框。2020/12/279VisualFoxPro6.0程序設計在數(shù)據(jù)源下面的下拉選項框中選擇VisualFoxP在此對話框中可以選擇本地存在的數(shù)據(jù)庫或網(wǎng)上鄰居中設置為共享的數(shù)據(jù)庫。然后選擇【打開】,就會在“連接配置ConfigureConnection”對話框中“Path”后的文本框中加入所添加的數(shù)據(jù)庫文件名及其所在的路徑,如“\\092\FOXPRO上機操作\Visualfp.dbc”。然后按【OK】,系統(tǒng)會告訴“連接成功”。然后再在“連接設計器”中單擊【確定】,接著彈出“保存對話框”,默認的連接名為“連接1”,可以采用默認的連接名,也可以重命名連接名,再單擊【確定】。2020/12/280VisualFoxPro6.0程序設計在此對話框中可以選擇本地存在的數(shù)據(jù)庫或網(wǎng)上鄰居中設置為共享的在保存連接后,“遠程視圖設計器”進入“打開”對話框。在視圖設計器中對加入的表創(chuàng)建遠程視圖的操作與建立本地視圖的操作一樣,此處不再贅述。2020/12/281VisualFoxPro6.0程序設計在保存連接后,“遠程視圖設計器”進入“打開”對話框。3、控制如何檢查更新沖突如果在一個多用戶環(huán)境中工作,服務器上的數(shù)據(jù)也可以被別的用戶訪問,也許別的用戶也在試圖更新遠程服務器上的記錄,為了讓VFP檢查用視圖操作的數(shù)據(jù)在更新之前是否被別的用戶修改過,可使用更新條件選項卡上的選項。在更新條件選項卡中,SQLWHERE子句包括框中的選項可以幫助管理遇到多用戶訪問同一數(shù)據(jù)時應如何更新記錄。在允許更新之前,VFP先檢查遠程數(shù)據(jù)源表中的指定字段,看看它們在記錄被提取到視圖中后有沒有改變,如果數(shù)據(jù)源中的這些記錄被修改,就不允許更新操作。在“更新條件”選項卡中可以設置SQLWHERE子句。這些選項決定哪些字段包含在UPDATE或DELETE語句的WHERE子句中,VFP正是利用這些語句將在視圖中修改或刪除的記錄發(fā)送到遠程數(shù)據(jù)源或源表中,WHERE子句就是用來檢查自從提取記錄用于視圖中后,服務器上的數(shù)據(jù)是否已改變。2020/12/282VisualFoxPro6.0程序設計3、控制如何檢查更新沖突2020/12/282Visua關鍵字段:當源表中的關鍵字段被改變時,使更新失敗。關鍵字和可更新字段:當遠程表中任何標記為可更新的字段被改變時,使更新失敗。關鍵字和已修改字段:當在本地改變的任一字段在源表中已被改變時,使更新失敗。關鍵字和時間戳:當遠程表上記錄的時間戳在首次檢索之后被改變時,使更新失?。▋H當遠程表有時間戳列時有效)。4、定制視圖同本地視圖一樣,可以在遠程視圖中包含表達式,設置提示輸入值,也可以設置高級選項來協(xié)調(diào)與服務器交換數(shù)據(jù)的方式(1)控制更新方法若要控制關鍵字段的信息實際上在服務器上更新的方式,可使用視圖設計器中更新條件選項卡中“使用更新”中的選項。如圖2020/12/283VisualFoxPro6.0程序設計關鍵字段:當源表中的關鍵字段被改變時,使更新失敗。2020/當記錄中的關鍵字更新時,這些選項決定發(fā)送到服務器或源表中的更新語句使用什么SQL命令??芍付ㄏ葎h除記錄,然后使用在視圖中輸入的新值取代原值(SQLDELETE然后INSERT),也可指定使用服務器支持的SQLUPDATE函數(shù)來改變服務器的記錄。(2)在遠程視圖中添加表達式若要在視圖中添加表達式,可在“篩選”選項卡中,從“字段名”框中選擇“表達式”。當視圖基于遠程數(shù)據(jù)源時,在“表達式設計器”中顯示的函數(shù)反映了服務器所支持的函數(shù)。可以查看服務器文檔中列出的該服務器所支持的函數(shù)列表,VFP不對構造的表達式作語法分析,而是將它們發(fā)送到遠程服務器上。2020/12/284VisualFoxPro6.0程序設計當記錄中的關鍵字更新時,這些選項決定發(fā)送到服務器或源表中的更5、建立連接使用遠程視圖,無需將所有記錄下載到本地計算機上即可提取遠程ODBC服務器上的數(shù)據(jù)子集??梢栽诒镜貦C上操作這些選定的記錄,然后把更改或添加的值返回到遠程數(shù)據(jù)源中。有兩種連接遠程數(shù)據(jù)源的方法,可以直接訪問在機器上注冊的ODBC數(shù)據(jù)源,也可以用連接設計器設計自定義連接。在安裝VFP時,選擇VFP的“完全”或“自定義”安裝選項,就可以把ODBC安裝在系統(tǒng)中。如果想為服務器創(chuàng)建定制的連接,可以使用連接設計器,創(chuàng)建的連接將作為數(shù)據(jù)庫的一部分保存起來,并含有如何訪問特定數(shù)據(jù)源的信息。使用連接設計器能夠創(chuàng)建并修改命名連接。因為連接是作為數(shù)據(jù)庫的一部分存儲的,所以僅在有打開的數(shù)據(jù)庫時才能使用連接設計器。連接設計器對話框中有如下選項:(1)指定的數(shù)據(jù)源2020/12/285VisualFoxPro6.0程序設計5、建立連接2020/12/285VisualFoxP■數(shù)據(jù)源、用戶標識、密碼指定VFP顯示以下三個框:●數(shù)據(jù)源:允許從已安裝的ODBC數(shù)據(jù)源列表中選擇一個數(shù)據(jù)源?!裼脩魳俗R:如果數(shù)據(jù)源需要用戶名稱或標識,允許鍵入?!衩艽a:如果數(shù)據(jù)源需要密碼,允許鍵入密碼?!駭?shù)據(jù)庫:可以選擇一個數(shù)據(jù)庫,作為所選數(shù)據(jù)源連接的目標?!鲞B接串:指定VFP顯示連接串文本框,可在其中鍵入連接串。選擇對話按鈕,顯示選擇連接或數(shù)據(jù)源對話框,如圖所示??梢赃x擇現(xiàn)有文件或機器數(shù)據(jù)源。■【驗證連接】:可以對那些剛輸入了內(nèi)容的連接進行檢查。如果連接成功,則顯示對話框提示此消息;如果連接失敗,則出現(xiàn)錯誤信息。如果沒有對話指定內(nèi)容,則顯示選擇2020/12/286VisualFoxPro6.0程序設計■數(shù)據(jù)源、用戶標識、密碼指定VFP顯示以下三個框:可以選擇現(xiàn)數(shù)據(jù)庫對話框,從中選擇數(shù)據(jù)源。前文已作介紹?!觥拘陆〝?shù)據(jù)源】:顯示“DataSources”對話框,可以在其中添加、刪除或配置數(shù)據(jù)源。前文已作介紹。(2)顯示ODBC登錄提示●未指定登錄信息時顯示:如果在命名連接定義中未存儲用戶標識和密碼,則VFP用“ODBC數(shù)據(jù)源注冊”對話框提示用戶?!窨傦@示:指定VFP總是使用“ODBC數(shù)據(jù)源注冊”對話框提示用戶,該框允許用戶使用與存儲在命名連接中不同的注冊ID和密碼。●從不顯示:指定VFP從不提示用戶。此選項確保更高的安全性。(3)數(shù)據(jù)處理此選項與用戶用DBSETPROP()函數(shù)設置的連接屬性相對應?!霎惒綀?zhí)行:指定異步連接。此選項與Asynchronous連接屬性相對應?!鲲@示警告信息:指定顯示不可捕獲警告。此選項與Disp2020/12/287VisualFoxPro6.0程序設計數(shù)據(jù)庫對話框,從中選擇數(shù)據(jù)源。前文已作介紹。2020/12/warning連接屬性相對應。■批處理:指定以批處理方式進行連接操作。此選項與BatchMode連接屬性相對應?!鲎詣邮聞仗幚恚褐付ㄗ詣訄?zhí)行事務處理。此選項與Transactions連接屬性相對應?!霭笮。寒敽瓦h程數(shù)據(jù)位置之間傳送信息時,可以指定傳送信息網(wǎng)絡包的大小(以字節(jié)為單位)。在下拉列表中選擇或鍵入一個值。(4)超時間隔這些選項設置連接屬性的值,也可用DBSETPROP()函數(shù)設置?!鲞B接(秒):以秒為單位指定連接超時時間間隔。此選項與ConnectTimeout連接屬性相對應?!霾樵儯耄阂悦霝閱挝恢付ú樵兂瑫r時間間隔。此選取項與QueryTimeout連接屬性相對應?!隹臻e(分鐘):以分鐘為單位指定空閑超時時間間隔。在指定的時間間隔后,活動連接變?yōu)椴换顒?。此選項與IdleTimeout連接屬性相對應?!龅却龝r間(毫秒):以毫秒為單位指定在VFP確定SQL語句是否執(zhí)行完畢之前經(jīng)過的時間。此選項與WaitTime連接屬性相對應。返回2020/12/288VisualFoxPro6.0程序設計warning連接屬性相對應。返回2020/12/288Vi6.4數(shù)據(jù)庫視圖的操作6.4.1使用視圖退出6.4.2、顯示視圖結構6.4.3、重新命名視圖6.4.4刪除視圖6.4.5創(chuàng)建視圖索引6.4.6創(chuàng)建參數(shù)化視圖返回2020/12/289VisualFoxPro6.0程序設計6.4數(shù)據(jù)庫視圖的操作6.4.1使用視圖退6.4.1使用視圖
建立視圖后,不但可以用它來顯示和更新數(shù)據(jù),而且還可以通過調(diào)整它的屬性來提高性能。處理視圖類似處理表,可以:■使用USE命令并指定視圖名來打開一個視圖。■使用USE命令關閉視圖?!鲈凇緸g覽】窗口中顯示視圖。■在【查看】窗口中顯示已打開的視圖的別名。■將視圖作為數(shù)據(jù)源,供表單或表格控件使用。若要使用一個視圖,可采取如下方法:■在項目管理器中先選擇一
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 鋼結構標準化設計技術方法
- 樂清2022年事業(yè)編招聘考試模擬試題及答案解析16
- 2026屆遼寧省葫蘆島市高三上學期期末考試歷史試題(含答案)
- 邵陽職院考試題庫及答案
- 鉗工知識競賽試題及答案
- 辯論培訓課件
- 北師大版數(shù)學三年級上冊期末評價(A卷)(含答案)
- 四川省綿陽市游仙區(qū)2024-2025學年八年級上學期期末地理試題(含答案)
- 輔警特色培訓課程
- 2025 小學三年級科學下冊保護植物的重要性教育課件
- 2026年春統(tǒng)編版(新教材)小學道德與法治三年級下冊教學計劃及進度表
- 社區(qū)衛(wèi)生安全生產(chǎn)制度
- 物理試卷-云南師大附中2026屆高三1月高考適應性月考卷(六)
- 教育培訓加盟合同協(xié)議
- 2026年高一語文寒假作業(yè)安排(1月31日-3月1日)
- 虛擬電廠的分布式能源協(xié)同調(diào)度與彈性運行機制
- 蘭州水務冬季安全培訓課件
- 陜西交控集團招聘筆試題庫2026
- DZ∕T 0399-2022 礦山資源儲量管理規(guī)范(正式版)
- 消防工程監(jiān)理實施細則
- 權利的游戲雙語劇本-第Ⅰ季
評論
0/150
提交評論