vfvisual-foxpro教程-第6章-課件_第1頁
vfvisual-foxpro教程-第6章-課件_第2頁
vfvisual-foxpro教程-第6章-課件_第3頁
vfvisual-foxpro教程-第6章-課件_第4頁
vfvisual-foxpro教程-第6章-課件_第5頁
已閱讀5頁,還剩101頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

學(xué)習(xí)要點(diǎn)1、查詢向?qū)Ш筒樵冊(cè)O(shè)計(jì)器的使用方法;2、單表查詢和交叉表查詢;3、查詢?cè)O(shè)計(jì)器中各選項(xiàng)卡的功能和使用方法;4、本地視圖和遠(yuǎn)程視圖;5、視圖向?qū)Ш鸵晥D設(shè)計(jì)器的使用方法;6、使用視圖。第6章查詢與視圖2020/12/21VisualFoxPro6.0程序設(shè)計(jì)學(xué)習(xí)要點(diǎn)1、查詢向?qū)Ш筒樵冊(cè)O(shè)計(jì)器的使用方法;第6章查詢與第6章查詢與視圖6.1用查詢向?qū)гO(shè)計(jì)查詢6.2用查詢?cè)O(shè)計(jì)器設(shè)計(jì)查詢6.3創(chuàng)建視圖6.4數(shù)據(jù)庫視圖的操作小結(jié)返回退出6.5利用視圖更新數(shù)據(jù)6.6利用視圖處理自由數(shù)據(jù)2020/12/22VisualFoxPro6.0程序設(shè)計(jì)第6章查詢與視圖6.1用查詢向?qū)гO(shè)計(jì)查詢6.2精品資料3精品資料3你怎么稱呼老師?如果老師最后沒有總結(jié)一節(jié)課的重點(diǎn)的難點(diǎn),你是否會(huì)認(rèn)為老師的教學(xué)方法需要改進(jìn)?你所經(jīng)歷的課堂,是講座式還是討論式?教師的教鞭“不怕太陽曬,也不怕那風(fēng)雨狂,只怕先生罵我笨,沒有學(xué)問無顏見爹娘……”“太陽當(dāng)空照,花兒對(duì)我笑,小鳥說早早早……”44精品資料5精品資料5你怎么稱呼老師?如果老師最后沒有總結(jié)一節(jié)課的重點(diǎn)的難點(diǎn),你是否會(huì)認(rèn)為老師的教學(xué)方法需要改進(jìn)?你所經(jīng)歷的課堂,是講座式還是討論式?教師的教鞭“不怕太陽曬,也不怕那風(fēng)雨狂,只怕先生罵我笨,沒有學(xué)問無顏見爹娘……”“太陽當(dāng)空照,花兒對(duì)我笑,小鳥說早早早……”666.1用查詢向?qū)гO(shè)計(jì)查詢6.1.1設(shè)計(jì)單表查詢6.1.2建立交叉表返回退出2020/12/27VisualFoxPro6.0程序設(shè)計(jì)6.1用查詢向?qū)гO(shè)計(jì)查詢6.1.1設(shè)計(jì)單表查詢6.6.1.1設(shè)計(jì)單表查詢

查詢向?qū)Э梢砸龑?dǎo)用戶快速設(shè)計(jì)一個(gè)查詢。下面將示例使用查詢向?qū)гO(shè)計(jì)一個(gè)簡(jiǎn)單的單表查詢:從GXGLXT數(shù)據(jù)庫的Student表中查詢系部代號(hào)為“04”且是99級(jí)的所有學(xué)生的信息。操作過程如下:首先從“項(xiàng)目管理器”開始,選擇【數(shù)據(jù)】卡片中的“查詢”,然后單擊【新建】按鈕,則出現(xiàn)設(shè)計(jì)查詢的方式選擇對(duì)話框。單擊2020/12/28VisualFoxPro6.0程序設(shè)計(jì)6.1.1設(shè)計(jì)單表查詢查詢向?qū)Э梢砸龑?dǎo)用戶快速選擇GXGLXT數(shù)據(jù)庫中的Student表,并將該表中的所有字段添加到“選定字段”列表框中。單擊查詢向?qū)А侄芜x取2020/12/29VisualFoxPro6.0程序設(shè)計(jì)選擇GXGLXT數(shù)據(jù)庫中的Student表,并將該表從中選擇Student.系部代號(hào)0在此輸入值4取默認(rèn)值從中選擇“包含”在此輸入值98單擊單擊【預(yù)覽】按鈕可以顯示查詢結(jié)果。根據(jù)要求,設(shè)置條件如上圖。其中,雖然表中沒有年級(jí)字段,但可通過“學(xué)號(hào)”得到年級(jí)(學(xué)號(hào)的前二位為年級(jí))。

查詢向?qū)АY選記錄2020/12/210VisualFoxPro6.0程序設(shè)計(jì)從中選擇Student.系部代號(hào)0在此輸入值4取默認(rèn)值從中選選擇排序字段單擊【添加】選擇排序方式調(diào)整排序順序移動(dòng)按鈕單擊查詢向?qū)А涗浥判?020/12/211VisualFoxPro6.0程序設(shè)計(jì)選擇排序字段單擊【添加】選擇排序方式調(diào)整排序順序移動(dòng)按鈕單擊查詢向?qū)А拗朴涗浵拗撇樵兘Y(jié)果中所包含的記錄數(shù)說明:查詢結(jié)果中所包含的記錄數(shù)限制共有四種方式:1、“部分類型”中選擇“所占記錄百分比”,“數(shù)量”中選擇“所有記錄”,查詢結(jié)果集中包含全部記錄。2、“部分類型”中選擇“所占記錄百分比”,“數(shù)量”中選擇“部分值”,再在“微調(diào)框”中設(shè)置數(shù)值,查詢結(jié)果集中包含指定數(shù)值百分?jǐn)?shù)的記錄。3、“部分類型”中選擇“記錄號(hào)”,“數(shù)量”中選擇“所有記錄”,查詢結(jié)果集中包含全部記錄。4、“部分類型”中選擇“記錄號(hào)”,“數(shù)量”中選擇“部分值”,再在“微調(diào)框”中設(shè)置數(shù)值,查詢結(jié)果集中包含指定數(shù)值的記錄數(shù)。單擊取默認(rèn)值,查詢結(jié)果集中包含全部記錄2020/12/212VisualFoxPro6.0程序設(shè)計(jì)查詢向?qū)А拗朴涗浵拗撇樵兘Y(jié)果中所包含的記錄數(shù)說明:查詢結(jié)查詢向?qū)А瓿蓪⒉樵円晕募男问剑?QPR)保存到一個(gè)指定的目錄中。將查詢保存到一個(gè)指定的目錄中并運(yùn)行該文件。

利用查詢向?qū)гO(shè)計(jì)的查詢功能有限,可以使用查詢?cè)O(shè)計(jì)器修改它。單擊,可以查看查詢結(jié)果集中的全部數(shù)據(jù)打開幫助文件取消所建立的查詢返回到向?qū)У纳弦徊浇Y(jié)束向?qū)?,完成查詢?cè)O(shè)計(jì)。單擊2020/12/213VisualFoxPro6.0程序設(shè)計(jì)查詢向?qū)А瓿蓪⒉樵円晕募男问剑?QPR)保存到一個(gè)指定保存設(shè)計(jì)的查詢目錄選擇下拉列表框文件名輸入文本框文件類型選擇下位列表框在“文件名輸入文本框”中輸入“Stud_query”后,單擊【保存】按鈕,結(jié)束查詢?cè)O(shè)計(jì)過程。在項(xiàng)目管理器中的“數(shù)據(jù)”選項(xiàng)中的查詢項(xiàng)下產(chǎn)生了一個(gè)查詢文件返回2020/12/214VisualFoxPro6.0程序設(shè)計(jì)保存設(shè)計(jì)的查詢目錄選擇下拉列表框文件名輸入文本框文件類型選擇6.1.2建立交叉表

如果在上文所述的建立查詢的第一步選擇“交叉表向?qū)А?,則可以建立交叉表。下面通過示例來介紹如何建立交叉表。用Grade表中的數(shù)據(jù)建立一個(gè)交叉表,以顯示每個(gè)學(xué)生所有課程的總成績。Grade表中的部分?jǐn)?shù)據(jù)如:前面的設(shè)計(jì)過程同以上內(nèi)容,但是在第二步需要確定交叉表的行和列。2020/12/215VisualFoxPro6.0程序設(shè)計(jì)6.1.2建立交叉表如果在上文所述的建立查詢的第交叉表設(shè)計(jì)向?qū)А侄芜x取選擇數(shù)據(jù)庫和表選定字段單擊單個(gè)字段選定按鈕全部字段選定按鈕單個(gè)字段撤消按鈕說明:在這一步先在“數(shù)據(jù)庫和表”一選擇一個(gè)數(shù)據(jù)庫,再選擇用以建立交叉表的數(shù)據(jù)表,然后再從可用字段列表框中選擇要用的字段,交叉表只用三個(gè)字段,這一步可多選字段。全部字段撤消按鈕單擊2020/12/216VisualFoxPro6.0程序設(shè)計(jì)交叉表設(shè)計(jì)向?qū)А侄芜x取選擇數(shù)據(jù)庫和表選定字段單擊單個(gè)字段交叉表向?qū)Аx布局說明:(1)行,將要加入到交叉表中的第一個(gè)字段名,本示例中選擇字段“學(xué)號(hào)”;(2)列,將要加入到交叉表中的從第二個(gè)字段開始的若干個(gè)字段的字段名,注意這些從源表中選擇的數(shù)據(jù)不能超過254個(gè)。本示例中選擇字段“課程代號(hào)”;(3)數(shù)據(jù),對(duì)應(yīng)行和列的運(yùn)算結(jié)果,本示例中選擇“課程成績”。按提示操作:從可用字段列表框中將“學(xué)號(hào)”字段拖入“行”框,將“課程代號(hào)”拖入“列”框,將“課程成績”拖入“數(shù)據(jù)”框。單擊2020/12/217VisualFoxPro6.0程序設(shè)計(jì)交叉表向?qū)Аx布局說明:按提示操作:從可用字段列交叉表查詢向?qū)А尤肟偨Y(jié)信息說明:這一步的操作,決定在生成的交叉表中要加入的一個(gè)字段的內(nèi)容。(1)求和:求出對(duì)應(yīng)行和列的數(shù)據(jù)字段的和;(2)計(jì)數(shù):求出對(duì)應(yīng)行和列的數(shù)據(jù)字段的數(shù)目;(3)平均值:求出對(duì)應(yīng)行和列的數(shù)據(jù)字段的平均值;(4)最大值:求出對(duì)應(yīng)行和列的數(shù)據(jù)字段的最大值;(5)最小值:求出對(duì)應(yīng)行和列的數(shù)據(jù)字段的最小值。

本示例中選擇“求和”運(yùn)算。如果不想加入總結(jié)信息,可以在“分類匯總”中選擇“無”。單擊2020/12/218VisualFoxPro6.0程序設(shè)計(jì)交叉表查詢向?qū)А尤肟偨Y(jié)信息說明:這一步的操作,決定在生成交叉表向?qū)А瓿蓪⒔徊姹聿樵円晕募男问剑?QPR)保存到一個(gè)指定的目錄中。將交叉表查詢保存到一個(gè)指定的目錄中并運(yùn)行該文件。

將交叉表查詢保存到一個(gè)指定的目錄中并打開“查詢?cè)O(shè)計(jì)器”修改它。對(duì)于值為空的記錄是否以.NULL.填充

說明:系統(tǒng)默認(rèn)值是“保存交叉表查詢”和“顯示NULL值”。選擇“保存并運(yùn)行交叉表查詢”后單擊2020/12/219VisualFoxPro6.0程序設(shè)計(jì)交叉表向?qū)А瓿蓪⒔徊姹聿樵円晕募男问剑?QPR)保存到交叉表保存及運(yùn)行結(jié)果按上一步的操作完成后,進(jìn)行到“另存為…”對(duì)話框中,將該查詢?nèi)∶麨镚rad_Query,然后保存在默認(rèn)的目錄中。保存后,系統(tǒng)進(jìn)入到數(shù)據(jù)查詢過程,稍候系統(tǒng)將查詢結(jié)果顯示出來。如:從中可以看到,凡是沒有數(shù)據(jù)的欄,就被.NULL.值填充,且有許多數(shù)據(jù)丟失。交叉表可以用數(shù)據(jù)過濾處理,在下一節(jié)中介紹。返回2020/12/220VisualFoxPro6.0程序設(shè)計(jì)交叉表保存及運(yùn)行結(jié)果按上一步的操作完成后,進(jìn)行到“另6.2用查詢?cè)O(shè)計(jì)器設(shè)計(jì)查詢6.2.1確定各表間的聯(lián)接關(guān)系

退出6.2.2選定查詢字段

6.2.3篩選記錄

6.2.4查詢結(jié)果排序

6.2.5建立分組查詢

6.2.6雜項(xiàng)的設(shè)置

6.2.7定向輸出查詢結(jié)果

6.2.8運(yùn)行查詢返回2020/12/221VisualFoxPro6.0程序設(shè)計(jì)6.2用查詢?cè)O(shè)計(jì)器設(shè)計(jì)查詢6.2.1確定各表間的聯(lián)接6.2用查詢?cè)O(shè)計(jì)器設(shè)計(jì)查詢

前面學(xué)習(xí)了如何使用VFP6中文版提供的查詢向?qū)Э焖俚脑O(shè)計(jì)一個(gè)查詢。但是在實(shí)際應(yīng)用中,查詢向?qū)гO(shè)計(jì)的查詢往往不能滿足需求。這時(shí)還可以采用查詢?cè)O(shè)計(jì)器方便靈活的設(shè)計(jì)各種查詢,也可以先用查詢向?qū)гO(shè)計(jì)一個(gè)簡(jiǎn)單的查詢,再在查詢向?qū)е写蜷_并修改它。將上一節(jié)建立的Grad_Query交叉表查詢,用“查詢?cè)O(shè)計(jì)器”進(jìn)行修改,使用之包含盡可能少的空欄??梢酝ㄟ^以下所提供的多種方法之一來打開查詢?cè)O(shè)計(jì)器:■從“項(xiàng)目管理器”啟動(dòng)查詢?cè)O(shè)計(jì)器1、在“項(xiàng)目管理器”中選擇“數(shù)據(jù)”選項(xiàng)卡,再選取“查詢”項(xiàng),再單擊【新建】,進(jìn)入查詢?cè)O(shè)計(jì)方式選擇對(duì)話框后單擊【新建查詢】,則啟動(dòng)“查詢?cè)O(shè)計(jì)器”。2、在“項(xiàng)目管理器”中選擇“數(shù)據(jù)”選項(xiàng)卡,從“查詢”項(xiàng)中選擇一個(gè)已存在的查詢文件,再單擊【修改】,也啟動(dòng)“查詢?cè)O(shè)計(jì)器”。2020/12/222VisualFoxPro6.0程序設(shè)計(jì)6.2用查詢?cè)O(shè)計(jì)器設(shè)計(jì)查詢前面學(xué)習(xí)了如何使用V■從【文件】菜單啟動(dòng)查詢?cè)O(shè)計(jì)器選擇系統(tǒng)菜單中的【文件】|【新建】命令,在“新建”對(duì)話框中選中“文件類型”下的“查詢”單選項(xiàng),再單擊右邊的【新建文件】按鈕,也可啟動(dòng)“查詢?cè)O(shè)計(jì)器”;■使用CREATEQUERY命令也可啟動(dòng)“查詢?cè)O(shè)計(jì)器”現(xiàn)采用新建方式啟動(dòng)“查詢?cè)O(shè)計(jì)器”2020/12/223VisualFoxPro6.0程序設(shè)計(jì)■從【文件】菜單啟動(dòng)查詢?cè)O(shè)計(jì)器■使用CREATEQUERY查詢?cè)O(shè)計(jì)器下部分的窗口中有幾個(gè)選項(xiàng)卡,其含義簡(jiǎn)介如下:(1)“字段”:用來選定包含在查詢結(jié)果中的字段;(2)“排序依據(jù)”:用來決定查詢結(jié)果輸出中記錄或行的排列順序;(3)“聯(lián)接”:用來確定各數(shù)據(jù)表或視圖之間的聯(lián)接關(guān)系;(4)“篩選”:相當(dāng)于命令SETFILTERTO,利用過濾的方法查找一個(gè)特定的數(shù)據(jù)子集;(5)“分組依據(jù)”:所謂分組就是將一組類似的記錄壓縮成一個(gè)結(jié)果記錄,這樣就可以完成基于一組的計(jì)算。要設(shè)計(jì)一個(gè)查詢文件,首先必須明確查詢的目的是什么,即想要得到哪些數(shù)據(jù),并以什么方式存在;或者想要得到滿足某些條件的特定記錄,或者想要知道某些記錄的字段值組合成的表達(dá)式按某一方式輸出。明確了輸出的數(shù)據(jù)后,就可以開始設(shè)計(jì)查詢了,一般要通過以下幾個(gè)步驟進(jìn)行:(1)啟動(dòng)查詢?cè)O(shè)計(jì)器;(2)選擇出現(xiàn)在查詢結(jié)果中的字段;(3)設(shè)置選擇條件來查找可給出所需結(jié)果的記錄;(4)設(shè)置排序或分組選項(xiàng)來組織查詢結(jié)果;(5)選擇查詢結(jié)果的輸出類型:表、報(bào)表、瀏覽等;(6)運(yùn)行查詢。返回2020/12/224VisualFoxPro6.0程序設(shè)計(jì)查詢?cè)O(shè)計(jì)器下部分的窗口中有幾個(gè)選項(xiàng)卡,其含義簡(jiǎn)介如下:返回26.2.1確定各表間的聯(lián)接關(guān)系

下面將通過一個(gè)示例來介紹創(chuàng)建一個(gè)含有多個(gè)表中信息的查詢。例如在GXGLXT數(shù)據(jù)庫中有三個(gè)表:Student、Grade、Courses,現(xiàn)在想知道學(xué)號(hào)前四位是9904和9804的所有學(xué)生考試的成績。當(dāng)在多個(gè)表或視圖間進(jìn)行查詢時(shí),需要指出這些表或視圖間的聯(lián)接關(guān)系。如前面所述,啟動(dòng)查詢?cè)O(shè)計(jì)器,在“添加表和視圖”對(duì)話框中從“數(shù)據(jù)庫”中選擇GXGLXT庫,在“數(shù)據(jù)庫中的表”中選擇Student表,單擊【添加】按鈕,再選擇Grade表,再單擊【添加】,此時(shí)系統(tǒng)自動(dòng)彈出一個(gè)“聯(lián)接條件”,詢問是否根據(jù)兩表中都有的“學(xué)號(hào)”字段建立內(nèi)部聯(lián)接,單擊“確定”,兩表間就有了一條連線,代表它們之間的聯(lián)接。然后再添加Courses表,最后關(guān)閉對(duì)話框。2020/12/225VisualFoxPro6.0程序設(shè)計(jì)6.2.1確定各表間的聯(lián)接關(guān)系下面將通過一個(gè)示例在“查詢?cè)O(shè)計(jì)器”中選擇“聯(lián)接”選項(xiàng)卡,如圖:在VFP6中表間的聯(lián)接有四種類型,分別是:2020/12/226VisualFoxPro6.0程序設(shè)計(jì)在“查詢?cè)O(shè)計(jì)器”中選擇“聯(lián)接”選項(xiàng)卡,如圖:在VFP6中表間(1)InnerJoin:內(nèi)部聯(lián)接,指定只有滿足聯(lián)接條件的記錄包含在結(jié)果中,此類型是默認(rèn)的,也是最常用的;(2)RightOuterJoin:右聯(lián)接,指定滿足聯(lián)接條件的記錄,以及滿足聯(lián)接條件右側(cè)的表中記錄(即使不匹配聯(lián)接條件)都包含在結(jié)果中;(3)LeftOuterJoin:左聯(lián)接,指定滿足聯(lián)接條件的記錄,以及滿足聯(lián)接條件左側(cè)的表中記錄(即使不匹配聯(lián)接條件)都包含在結(jié)果中;(4)FullJoin:完全聯(lián)接,指定所有滿足和不滿足聯(lián)接條件的記錄都包含在結(jié)果中。如果想修改各表間的聯(lián)接,雙擊查詢?cè)O(shè)計(jì)器上部窗口表之間的連線,系統(tǒng)將彈出“連接條件”對(duì)話框;或者通過打開查詢?cè)O(shè)計(jì)器下部的“聯(lián)接”選項(xiàng)卡進(jìn)行。一般不應(yīng)隨便更改連接條件,不然會(huì)與實(shí)際數(shù)據(jù)間的關(guān)系不符?!皸l件”列表中包含如下幾項(xiàng):(1)=:指字段值與實(shí)例相等;2020/12/227VisualFoxPro6.0程序設(shè)計(jì)(1)InnerJoin:內(nèi)部聯(lián)接,指定只有滿足聯(lián)接條件的(2)LIKE:表示“字段名”欄中給出的字段值與“實(shí)例”欄中給出的文本值之間執(zhí)行不完全匹配,它主要針對(duì)字符類型。例如,如設(shè)置查詢條件為“Student.學(xué)號(hào)LIKE9904”,那么諸如“學(xué)號(hào)”字段前四位為9904的記錄都滿足該條件;(3)==:表示在“字段名”欄中給出的字段值與“實(shí)例”欄中給出的文本值之間執(zhí)行完全匹配檢查,它也主要是針對(duì)字符類型的。(4)>:即為“字段名”欄中給出的字段的值應(yīng)大于“實(shí)例”欄中給出的值;(5)>=:即為“字段名”欄中給出的字段的值應(yīng)大于或等于“實(shí)例”欄中給出的值;(6)<:即為“字段名”欄中給出的字段的值應(yīng)小于“實(shí)例”欄中給出的值;(7)<=:即為“字段名”欄中給出的字段的值應(yīng)小于或等于“實(shí)例”欄中給出的值;(8)IsNull:指定字段必須包含Null值;(9)Between:即為輸出字段的值應(yīng)大于或等于“實(shí)例”欄中的2020/12/228VisualFoxPro6.0程序設(shè)計(jì)(2)LIKE:表示“字段名”欄中給出的字段值與“實(shí)例最小值,而小于或等于“實(shí)例”欄中的最大值;(10)IN(在…之中):即為輸出字段的值必須是“實(shí)例”欄中所給出值中的一個(gè),在“實(shí)例”欄中給出的各值之間以逗號(hào)分隔。此外,“聯(lián)接”選項(xiàng)卡中的“否”列用于指定.NOT.條件,“邏輯”列用于設(shè)置各聯(lián)接條件和篩選條件之間的邏輯關(guān)系(無、.AND.和.OR.),“大小寫”列用于指定是否區(qū)分大小寫。下方的“插入”和“移去”按鈕分別用于增加或移去查詢條件。最后,在設(shè)置篩選條件時(shí),我們應(yīng)注意如下幾點(diǎn):(1)備注字段和通用字段不能用于設(shè)置查詢條件;(2)邏輯值的前后必須使用句點(diǎn)號(hào),如.T.;(3)只有當(dāng)字符串與查詢的表中字段名相同時(shí),要用引號(hào)將字符串括起來,否則不需要用引號(hào)將字符串括起來;(4)日期不必用花括號(hào)括起來。返回2020/12/229VisualFoxPro6.0程序設(shè)計(jì)最小值,而小于或等于“實(shí)例”欄中的最大值;返回2020/126.2.2選定查詢字段

根據(jù)建立查詢的目的,選擇查詢結(jié)果中應(yīng)包含的字段。操作方法與用向?qū)гO(shè)計(jì)查詢的方法相同。在本示例中先在“查詢?cè)O(shè)計(jì)器”中選擇“字段”選項(xiàng)卡,然后從可用字段列表框中選擇:Student.學(xué)號(hào)、Student.姓名、Courses.課程名稱、Grade.課程成績,如圖。選擇一個(gè)字段單擊【添加】選定的字段列表重復(fù)操作添加Student.姓名、Courses.課程名稱、Grade.課程成績返回2020/12/230VisualFoxPro6.0程序設(shè)計(jì)6.2.2選定查詢字段根據(jù)建立查詢的目的,選擇查6.2.3篩選記錄

選擇表中符合條件的一部分記錄而不是全部記錄是查詢的重要任務(wù)。此例要求從所有學(xué)生的成績信息中選出“學(xué)號(hào)”前四位為“9904”和“9804”的所有學(xué)生的成績,可以利用查詢?cè)O(shè)計(jì)器中的“篩選”選項(xiàng)卡?!昂Y選”選項(xiàng)卡可確定用于選擇記錄的字段和比較準(zhǔn)則,以及輸入與該字段進(jìn)行比較的示例值。選擇篩選字段設(shè)置篩選條件輸入篩選實(shí)例設(shè)置條件邏輯是否區(qū)分大小寫在字段名下的下拉選擇框中選擇“Grade.開課學(xué)期”,在“條件”下的下拉選擇框中選擇“=”,在“實(shí)例”下的文本框中輸入“第1學(xué)期”,返回2020/12/231VisualFoxPro6.0程序設(shè)計(jì)6.2.3篩選記錄選擇表中符合條件的一部分記錄而在“邏輯”下的下拉選擇框中選擇“AND”,然后再在字段名下的下拉選擇框中選擇“Student.學(xué)號(hào)”,在“條件”下的下拉選擇框中選擇“In”,在“實(shí)例”下的文本框中輸入“9904,9804”(請(qǐng)注意中間的“,”是En狀態(tài)下輸入的)。6.2.4查詢結(jié)果排序

排序決定了查詢輸出結(jié)果中記錄或行的先后順序,我們可以通過“排序依據(jù)”選項(xiàng)卡設(shè)置查詢的排序次序,方法同在用查詢向?qū)гO(shè)計(jì)查詢介紹的一樣,首先從“選定字段”框中選定要使用的字段,返回2020/12/232VisualFoxPro6.0程序設(shè)計(jì)在“邏輯”下的下拉選擇框中選擇“AND”,然后再在字段名下的并把它們移到“排序條件”框中,然后利用“排序選項(xiàng)”(從中選擇升序或降序)來設(shè)置排序條件。本例中設(shè)置Student.學(xué)號(hào),升序?yàn)榕判蛞罁?jù)。選擇一個(gè)字段單擊【添加】選定的字段列表如果還需要添加用于排序的字段,可以重復(fù)以上的操作步驟。返回2020/12/233VisualFoxPro6.0程序設(shè)計(jì)并把它們移到“排序條件”框中,然后利用“排序選項(xiàng)”(從中選擇6.2.5建立分組查詢

所謂分組就是將一組類似的記錄壓縮成一個(gè)結(jié)果記錄,這樣就可完成基于一組記錄的計(jì)算。分組在與某些累計(jì)功能聯(lián)合使用時(shí)效果最好,例如SUM(),COUNT(),AVG()等。如果不想壓縮結(jié)果記錄,則不必設(shè)置它。在此例中不設(shè)分組查詢。如果想求各門課程的平均成績,可以用“課程名稱”進(jìn)行分類查詢。選擇一個(gè)字段單擊【添加】選定的字段列表2020/12/234VisualFoxPro6.0程序設(shè)計(jì)6.2.5建立分組查詢所謂分組就是將一組類似的記錄壓縮成操作步驟如下:(1)在查詢?cè)O(shè)計(jì)器的“字段”選項(xiàng)卡中,單擊“函數(shù)和表達(dá)式”右邊的按鈕,出現(xiàn)“表達(dá)式”生成器;(2)在“數(shù)學(xué)”下拉式列表框中雙擊AVG(expN),在“來源于表”下拉框中選擇Grade表,在“字段”列表框中雙擊“課程成績”,單擊【確定】。即在“函數(shù)和表達(dá)式”框中自動(dòng)生成了“AVG(Grade.課程成績)”這個(gè)表達(dá)式,用以計(jì)算Grade表中課程成績的平均值。(3)單擊“添加”按鈕,該表達(dá)式被添加到“選定字段”列表框中。將來查詢結(jié)果中就會(huì)有一列數(shù)據(jù)求平均值;(4)單擊“分組依據(jù)”選項(xiàng)卡,進(jìn)入“分組依據(jù)”窗口,在“可用字段”中選擇Grade.課程名稱,再單擊【添加】按鈕,該字段即成為分組字段。運(yùn)行查詢后的結(jié)果返回2020/12/235VisualFoxPro6.0程序設(shè)計(jì)操作步驟如下:運(yùn)行查詢后的結(jié)果返回2020/12/235Vi6.2.6雜項(xiàng)的設(shè)置

經(jīng)過以上五個(gè)步驟,基本上已生成了一個(gè)比較全面的查詢。接下來還可以通過查詢?cè)O(shè)計(jì)器中的“雜項(xiàng)”選項(xiàng)卡做最后處理。單擊“雜項(xiàng)”選項(xiàng)卡,可以看到其間包括“無重復(fù)記錄”、“交叉數(shù)據(jù)表”、“全部”、“百分比”這四個(gè)復(fù)選框和一個(gè)微調(diào)按鈕。選中“無重復(fù)記錄”復(fù)選框表示對(duì)于查詢結(jié)果如果存在重復(fù)記錄,則只取相同記錄中的一個(gè)。選中此項(xiàng),在查詢生成器的SQL語句中會(huì)自動(dòng)加上限定詞Distinct,表示去掉重復(fù)記錄。2020/12/236VisualFoxPro6.0程序設(shè)計(jì)6.2.6雜項(xiàng)的設(shè)置經(jīng)過以上五個(gè)步驟,基本上已生成了一個(gè)當(dāng)輸出的字段只有三項(xiàng)時(shí),“交叉數(shù)據(jù)表”復(fù)選框?yàn)榭蛇x狀態(tài),否則為不可選狀態(tài)。選中“交叉數(shù)據(jù)表”復(fù)選框表示將查詢的結(jié)果以交叉表的形式傳遞給其它報(bào)表或表。三項(xiàng)查詢字段分別表示X軸、Y軸和圖形的單元值。如,在本示例中,將前面已加入到“選定字段”中的Student.學(xué)號(hào)字段移去,并按Student.姓名、Courses.課程名稱和Grade.課程成績的順序調(diào)整字段在“選定字段”列表框中的順序,然后在“雜項(xiàng)”選項(xiàng)卡中選中“交叉數(shù)據(jù)表”,同時(shí)將“分組依據(jù)”中的“Grade.課程代號(hào)”取消,其它設(shè)置不變。從圖中可以看到“交叉數(shù)據(jù)表”成為了可選?,F(xiàn)選中“交叉數(shù)據(jù)表”項(xiàng),如圖:設(shè)置返回2020/12/237VisualFoxPro6.0程序設(shè)計(jì)當(dāng)輸出的字段只有三項(xiàng)時(shí),“交叉數(shù)據(jù)表”復(fù)選框?yàn)榭蛇x狀態(tài),否則6.2.7定向輸出查詢結(jié)果

查詢檢索的信息,可以輸出到不同的目的地,以用作不同的用途。如果沒有選定輸出的目的地,查詢結(jié)果將顯示在瀏覽窗口中。查詢輸出目的可以是瀏覽窗口、臨時(shí)表、表、圖形、屏幕、報(bào)表、標(biāo)簽等。選擇結(jié)果的去向方法如下:?jiǎn)螕簟安樵冊(cè)O(shè)計(jì)器工具”中的【查詢?nèi)ハ颉堪粹o,或者從【查詢】菜單中選擇【查詢?nèi)ハ颉浚煽吹饺鐖D所示的“查詢?nèi)ハ颉睂?duì)話框。對(duì)話框中的按鈕含義如下:2020/12/238VisualFoxPro6.0程序設(shè)計(jì)6.2.7定向輸出查詢結(jié)果查詢檢索的信息,可以輸出到不同【瀏覽】:在瀏覽窗口中顯示查詢結(jié)果,這是查詢?nèi)笔≡O(shè)置;【臨時(shí)表】:將查詢結(jié)果存儲(chǔ)在一個(gè)臨時(shí)只讀表中。多次查詢的結(jié)果可放在不同的表內(nèi)。該表可用于瀏覽數(shù)據(jù),制作報(bào)表等,直到用戶關(guān)閉它們;【表】:將查詢的結(jié)果保存在一個(gè)命名的表(.DBF)中,此時(shí)查詢的結(jié)果是真正的存放到磁盤上的,多次查詢的結(jié)果可放在不同的表內(nèi);【圖形】:使查詢結(jié)果可用于MicrosoftGraph(包含在VFP6中的一個(gè)獨(dú)立的應(yīng)用程序)中制作圖表;【屏幕】:在VFP6主窗口或當(dāng)前活動(dòng)輸出窗口中顯示查詢結(jié)果;【報(bào)表】:將輸出送到一個(gè)報(bào)表文件(.FRX)中;【標(biāo)簽】:將輸出送到一個(gè)標(biāo)簽文件(.LBX)中。選定一個(gè)去向,按一定的步驟設(shè)置一些屬性,然后單擊【確定】按鈕,系統(tǒng)就將按意圖放置查詢結(jié)果。假設(shè)本例將查詢結(jié)果保存到臨時(shí)表中,取臨時(shí)表名為“查詢1”。返回2020/12/239VisualFoxPro6.0程序設(shè)計(jì)【瀏覽】:在瀏覽窗口中顯示查詢結(jié)果,這是查詢?nèi)笔≡O(shè)置6.2.8運(yùn)行查詢

在完成了查詢的設(shè)計(jì)工作并指定了結(jié)果輸出去向后,可通過以下五種方式之一運(yùn)行查詢:■在查詢?cè)O(shè)計(jì)器區(qū)域內(nèi)單擊右鍵,在彈出菜單中選擇“運(yùn)行查詢”;■在“項(xiàng)目管理器”中選定查詢的名稱,然后選定“運(yùn)行”按鈕;■在“查詢”菜單中選擇“運(yùn)行查詢”:■在命令窗口中鍵入DO查詢名.qpr?!鰡螕粝到y(tǒng)常用菜單上的“運(yùn)行”按鈕。本例中按前述步驟設(shè)置后,單擊系統(tǒng)菜單上的“運(yùn)行”按鈕運(yùn)行交叉表查詢,并將查詢結(jié)果保存到臨時(shí)表“查詢1”中,然后再在瀏覽窗口中單擊【顯示】|【瀏覽“查詢1”】,結(jié)果如右表。返回2020/12/240VisualFoxPro6.0程序設(shè)計(jì)6.2.8運(yùn)行查詢?cè)谕瓿闪瞬樵兊脑O(shè)計(jì)工作并指定了結(jié)果輸出6.3創(chuàng)建視圖

6.3.1創(chuàng)建本地視圖6.3.2用已有的SQLSELECT語句創(chuàng)建視圖6.3.3創(chuàng)建遠(yuǎn)程視圖返回退出2020/12/241VisualFoxPro6.0程序設(shè)計(jì)6.3創(chuàng)建視圖6.3.1創(chuàng)建本地視圖6.3.26.3.1創(chuàng)建本地視圖

視圖可以通過向?qū)Ш驮O(shè)計(jì)器兩種方法來創(chuàng)建。1、利用向?qū)?chuàng)建本地視圖用本地視圖向?qū)?chuàng)建本地視圖,可采取以下方式:方式一:(1)在主窗口下打開【工具】菜單,選擇【向?qū)А坎藛蚊?。?)再選擇【全部】菜單,出現(xiàn)【向?qū)нx取】對(duì)話框,如圖單擊滑動(dòng)按鈕選擇“本地視圖向?qū)А眴螕簟敬_定】進(jìn)入到“本地視圖向?qū)А襟E1——字段選取’”2020/12/242VisualFoxPro6.0程序設(shè)計(jì)6.3.1創(chuàng)建本地視圖視圖可以通過向?qū)Ш驮O(shè)計(jì)器兩種方法方式二:(1)在主窗口下打開【文件】菜單,選擇【新建】菜單命令。(2)選擇“視圖”,再單擊【向?qū)А?,將彈出【本地視圖向?qū)А繉?duì)話框。(3)然后按照向?qū)聊簧系闹甘静僮?。方式三:?)在項(xiàng)目管理器中選定數(shù)據(jù)庫。(2)選定本地視圖,單擊【新建】按鈕。(3)單擊【視圖向?qū)А堪粹o(4)然后按照向?qū)聊簧系闹甘静僮?。方式四:?)打開數(shù)據(jù)庫設(shè)計(jì)器,打開【數(shù)據(jù)庫】菜單。(2)選擇【新建本地視圖】,再單擊【視圖向?qū)А堪粹o。(3)然后按照向?qū)聊簧系闹甘静僮鳌?020/12/243VisualFoxPro6.0程序設(shè)計(jì)方式二:(4)然后按照向?qū)聊簧系闹甘静僮鳌?020/12/本地視圖向?qū)В翰襟E1——字段選取說明:按照上述幾種方式,可以快速建立本地視圖,但要強(qiáng)調(diào)的是,在項(xiàng)目管理器中創(chuàng)建或使用視圖時(shí),項(xiàng)目管理器會(huì)自動(dòng)打開數(shù)據(jù)庫。如果要使用項(xiàng)目以外的表或視圖,則必須先打開數(shù)據(jù)庫或事先確認(rèn)數(shù)據(jù)庫在作用范圍內(nèi)。本地視圖向?qū)?duì)話框如圖,可以看到,創(chuàng)建視圖大體要經(jīng)過以下步驟:(1)字段選取。選擇數(shù)據(jù)庫,數(shù)據(jù)庫中的表和表中的字段。如果當(dāng)前已經(jīng)打開了一個(gè)數(shù)據(jù)庫,則第一步的對(duì)話框中顯示的2020/12/244VisualFoxPro6.0程序設(shè)計(jì)本地視圖向?qū)В翰襟E1——字段選取說明:按照上述幾種方式,可以是創(chuàng)建當(dāng)前數(shù)據(jù)庫的視圖,也可以選擇其它的數(shù)據(jù)庫。(2)關(guān)聯(lián)表。建立數(shù)據(jù)庫中表與表之間的關(guān)系。(3)包含記錄。指定包含表中的全部記錄還是僅匹配的記錄。(4)篩選記錄。選定符合條件的記錄。(5)排序記錄。為選定的記錄按照某一字段進(jìn)行排序。(6)限定記錄。定制顯示一定數(shù)量的記錄。(7)完成視圖。選擇保存視圖后瀏覽還是修改。例:創(chuàng)建包含Grade表和Courses表的本地視圖“視圖1”。選擇表Grade單擊全部添加按鈕選擇Courses表單擊單個(gè)添加按鈕,添加課程名、學(xué)時(shí)數(shù)、學(xué)分?jǐn)?shù)字段選擇完成后,單擊【下一步】,步驟2——為表建立關(guān)系。2020/12/245VisualFoxPro6.0程序設(shè)計(jì)是創(chuàng)建當(dāng)前數(shù)據(jù)庫的視圖,也可以選擇其它的數(shù)據(jù)庫。選擇表Gra本地視圖向?qū)В翰襟E2——為表建立關(guān)系父表字段選擇下拉選擇框子表字段選擇下拉選擇框說明:在這一步要建立用來建立本地視圖的表間的關(guān)系。1、先在父表字段選擇下拉選擇框中選擇要用來建立關(guān)系的主關(guān)鍵字;2、再在子表字段選擇下拉選擇框中選擇用來建立關(guān)系的子表關(guān)鍵字;3、單擊【添加】,將設(shè)定關(guān)系添加到關(guān)系列表框中。上面的字段符合要求,單擊【添加】關(guān)系設(shè)置完成后單擊【下一步】進(jìn)入到步驟2a——字段選取對(duì)話框。2020/12/246VisualFoxPro6.0程序設(shè)計(jì)本地視圖向?qū)В翰襟E2——為表建立關(guān)系父表字段選擇下拉選擇框子本地視圖向?qū)В翰襟E2a——字段選取生成的本地視圖中只包含表中關(guān)系相匹配的記錄,對(duì)應(yīng)于關(guān)系中的內(nèi)聯(lián)接的設(shè)置結(jié)果。生成的本地視圖中包含Grade表中的全部記錄和子表中關(guān)鍵字段相匹配的記錄,對(duì)應(yīng)于關(guān)系中的左聯(lián)接的設(shè)置結(jié)果。生成的本地視圖中包含Courses表中全部記錄和父表中關(guān)鍵字段相匹配的記錄,對(duì)應(yīng)于關(guān)系中的右聯(lián)接的設(shè)置結(jié)果。生成的本地視圖中包含表中所有的記錄,對(duì)應(yīng)于關(guān)系中的完全聯(lián)接的設(shè)置結(jié)果。本例中選用默認(rèn)值:僅包含匹配的行。然后單擊【下一步】,進(jìn)入步驟3——篩選記錄。2020/12/247VisualFoxPro6.0程序設(shè)計(jì)本地視圖向?qū)В翰襟E2a——字段選取生成的本地視圖中只包含表中本地視圖向?qū)В翰襟E3——篩選記錄說明:本地視圖向?qū)У暮Y選記錄與查詢向?qū)У暮Y選記錄的方式類似。在本例中不篩選記錄。單擊【下一步】,進(jìn)入到本地視圖向?qū)У牟襟E4——排序記錄。2020/12/248VisualFoxPro6.0程序設(shè)計(jì)本地視圖向?qū)В翰襟E3——篩選記錄說明:本地視圖向?qū)У谋镜匾晥D向?qū)В翰襟E4——排序記錄

說明:在這一步中設(shè)置在本地視圖的記錄順序。本例中可先按“學(xué)號(hào)”排序,學(xué)號(hào)相同的再按“課程代號(hào)”排序。操作方法與建立查詢的記錄排序方法相同。先在“可用字段”列表框中選擇“學(xué)號(hào)”,然后單擊【添加】,再選擇“課程代號(hào)”,再單擊【添加】如上圖。排序字段及順序設(shè)置后單擊【下一步】,進(jìn)入本地視圖向?qū)В翰襟E4a——限制記錄。2020/12/249VisualFoxPro6.0程序設(shè)計(jì)本地視圖向?qū)В翰襟E4——排序記錄說明:在這一步中設(shè)置本地視圖向?qū)В翰襟E4a——限制記錄限制記錄的方法與建立查詢的限制記錄的方法完全相同。在本例中仍保持在本地視圖中包含所有的記錄,因而取默認(rèn)值,直接單擊【下一步】,進(jìn)入本地視圖向?qū)В翰襟E5——完成。在第5步中的操作方法也與建立查詢的方法相同,現(xiàn)選擇“保存本地視圖并瀏覽”,然后單擊【完成】。彈出“視圖名”對(duì)話框。在“視圖名”文本框中輸入“視圖1”。輸入視圖名后單擊【確認(rèn)】按鈕,系統(tǒng)顯示所建立的本地視圖的結(jié)果。本地視圖向?qū)ЫY(jié)束。2020/12/250VisualFoxPro6.0程序設(shè)計(jì)本地視圖向?qū)В翰襟E4a——限制記錄限制記錄的方法與建2、利用視圖設(shè)計(jì)器創(chuàng)建本地視圖通過本地視圖向?qū)Ы?shù)據(jù)庫視圖雖然方便,快捷,但這僅對(duì)入門者如此,何況用視圖向?qū)Ы?shù)據(jù)庫視圖最終還要依賴視圖設(shè)計(jì)器。因此,傾向獨(dú)立進(jìn)行開發(fā)的程序員來說,僅僅學(xué)會(huì)使用向?qū)沁h(yuǎn)遠(yuǎn)不夠的,還應(yīng)學(xué)會(huì)使用視圖設(shè)計(jì)器的強(qiáng)大功能來創(chuàng)建視圖。(1)

進(jìn)入視圖設(shè)計(jì)器進(jìn)入視圖設(shè)計(jì)器的方法與進(jìn)入查詢?cè)O(shè)計(jì)器的方法基本相同,下面以新建視圖的方式進(jìn)入視圖設(shè)計(jì)器。2020/12/251VisualFoxPro6.0程序設(shè)計(jì)2、利用視圖設(shè)計(jì)器創(chuàng)建本地視圖圖設(shè)計(jì)器的強(qiáng)大功能來創(chuàng)建視圖。啟動(dòng)視圖設(shè)計(jì)器方法新建一個(gè)視圖可按以下步驟進(jìn)入視圖設(shè)計(jì)器:■選擇【文件】|【新建】命令,單擊“視圖”單選框,再單擊【新建文件】按鈕?!鲈跀?shù)據(jù)庫設(shè)計(jì)器中,選擇【數(shù)據(jù)庫】|【新建本地視圖】或單擊數(shù)據(jù)庫設(shè)計(jì)器的快捷菜單中的【新建本地視圖】|【新視圖】按鈕?!鲈陧?xiàng)目管理器中,單擊“數(shù)據(jù)”選項(xiàng)卡,在列表框中選定“本地視圖”,再單擊【新建】按鈕,單擊【新建視圖】按鈕。修改一個(gè)視圖可按以下步驟進(jìn)入視圖設(shè)計(jì)器:■在數(shù)據(jù)庫設(shè)計(jì)器窗口中,單擊選定需要修改的視圖,選擇【數(shù)據(jù)庫】|【修改】命令?!鲈跀?shù)據(jù)庫設(shè)計(jì)器窗口中,右擊需要修改的視圖,在出現(xiàn)的快捷菜單中選擇【修改】命令?!鲈陧?xiàng)目管理器中,單擊【數(shù)據(jù)】選項(xiàng)卡,在列表框中選定需要修改的視圖,單擊【修改】按鈕。2020/12/252VisualFoxPro6.0程序設(shè)計(jì)啟動(dòng)視圖設(shè)計(jì)器方法新建一個(gè)視圖可按以下步驟進(jìn)入視圖設(shè)計(jì)“視圖設(shè)計(jì)器”工具欄說明添加表移去表添加聯(lián)接顯示SQL窗口最大化上部窗格添加表:顯示“添加表或視圖”對(duì)話框,從而可以向設(shè)計(jì)器窗口添加一個(gè)表或視圖移去表:從設(shè)計(jì)器窗口的上窗格中移去選定的表。添加聯(lián)接:在視圖中的兩個(gè)表之間創(chuàng)建聯(lián)接條件顯示/隱藏SQL窗口:顯示或隱藏建立當(dāng)前視圖的SQL語句最大化/最小化上部窗口:放大或縮小視圖設(shè)計(jì)器的上窗格2020/12/253VisualFoxPro6.0程序設(shè)計(jì)“視圖設(shè)計(jì)器”工具欄說明添加表移去表添加聯(lián)接顯示SQL窗口最(2)從表中選擇所需字段在進(jìn)行本地視圖設(shè)計(jì)器之前,先建立Classzc表和Department表,表結(jié)構(gòu)和數(shù)據(jù)如下:2020/12/254VisualFoxPro6.0程序設(shè)計(jì)(2)從表中選擇所需字段2020/12/254Visual通過上述方式之一打開視圖設(shè)計(jì)器,在進(jìn)入設(shè)計(jì)器之前,需要選定數(shù)據(jù)庫和表,現(xiàn)選定GXGLXT數(shù)據(jù)庫,如右圖:從中選定表Classzc并單擊【添加】按鈕,然后單擊【關(guān)閉】按鈕,啟動(dòng)視圖設(shè)計(jì)器。2020/12/255VisualFoxPro6.0程序設(shè)計(jì)通過上述方式之一打開視圖設(shè)計(jì)器,在進(jìn)入設(shè)計(jì)器之前,需視圖設(shè)計(jì)器進(jìn)入視圖設(shè)計(jì)器后,第一步先需要選定字段,選定字段可直接通過字段選項(xiàng)卡進(jìn)行。其操作方法與查詢?cè)O(shè)計(jì)器中選擇字段的方法相同。2020/12/256VisualFoxPro6.0程序設(shè)計(jì)視圖設(shè)計(jì)器進(jìn)入視圖設(shè)計(jì)器后,第一步先需要選定字段,選從“可用字段”列表框里選定Classzc.班級(jí)簡(jiǎn)稱字段,單擊【添加】按鈕或雙擊該字段,則Classzc.班級(jí)簡(jiǎn)稱字段將會(huì)出現(xiàn)在右邊的“選定字段”列表框中。本次建立的視圖里,還需要選定Classzc.學(xué)習(xí)性質(zhì)、Classzc.學(xué)制二個(gè)字段。它們選定的方法與選定Classzc.班級(jí)簡(jiǎn)稱字段一樣。如果需選定字段是“可用字段”列表框中的所有字段,可以單擊【全部添加】按鈕,這樣就把所有字段添加到了“選定字段”列表框中去了,可以通過【移去】按鈕將其移出來。如果需要全部移出,可以利用【全部移去】按鈕快速移出。要將表中的字段添加到“選定字段”列表框中,除了上述方法外,還可以將鼠標(biāo)指向視圖設(shè)計(jì)器上部窗口中的表窗口中的字段上,按住鼠標(biāo)左鍵或右鍵拖動(dòng)一個(gè)字段到“選定字段”列表框,該字段就被加入到了“選定字段”列表框中。還可以通過雙擊字段名將其加入到“選定字段”列表框。表窗口中的*代表表中的全部字段,它也是可以拖動(dòng)或雙擊的。若要從“選定字段”列表框中移去字段,也可以使用鼠標(biāo)拖動(dòng)或雙擊。2020/12/257VisualFoxPro6.0程序設(shè)計(jì)從“可用字段”列表框里選定Classzc.班級(jí)簡(jiǎn)稱字段,單擊“字段”選項(xiàng)卡還有一個(gè)【屬性】按鈕和一個(gè)“函數(shù)和表達(dá)式”文本框。只要“選定字段”列表框中有一個(gè)值,【屬性】命令按鈕就成為可選的了。選擇【屬性】后,出現(xiàn)圖:2020/12/258VisualFoxPro6.0程序設(shè)計(jì)“字段”選項(xiàng)卡還有一個(gè)【屬性】按鈕和一個(gè)“函數(shù)和表達(dá)屬性設(shè)置可分為五種類型:字段有效性、顯示、匹配字段到類、數(shù)據(jù)匹配和注釋。其中字段有效性、顯示、匹配字段到類和注釋在第3章中介紹數(shù)據(jù)表設(shè)計(jì)時(shí)已經(jīng)作過說明,視圖設(shè)計(jì)和數(shù)據(jù)表設(shè)計(jì)在字段屬性上基本類似?!昂瘮?shù)和表達(dá)式”文本框及其按鈕:“函數(shù)和表達(dá)式”文本框用于輸入一個(gè)函數(shù)和表達(dá)式,具體操作只需單擊“函數(shù)和表達(dá)式”文本框后的對(duì)話按鈕,在隨后出現(xiàn)的表達(dá)式生成器中書寫函數(shù)或表達(dá)式。此選項(xiàng)的功能是為了生成一個(gè)虛擬的字段。后面的創(chuàng)建步驟與本章前述的用查詢?cè)O(shè)計(jì)器設(shè)計(jì)查詢相似,在此不一一闡述。(3)建立多表關(guān)聯(lián)前面主要是針對(duì)單一的本地表建立視圖,雖然很容易,但它的實(shí)際功能不大。因?yàn)樵趯?shí)際開發(fā)中,系統(tǒng)的數(shù)據(jù)庫很復(fù)雜,表的關(guān)聯(lián)性很強(qiáng),用戶關(guān)心的往往是一些復(fù)雜的數(shù)據(jù),因此需要建立多表視圖。2020/12/259VisualFoxPro6.0程序設(shè)計(jì)屬性設(shè)置可分為五種類型:字段有效性、顯示、匹配字段到類、數(shù)據(jù)從定義上講,多表視圖指的是:視圖中的字段來源于兩個(gè)或兩個(gè)以上的表。但是,在視圖中表間的關(guān)系既不像數(shù)據(jù)庫中的關(guān)系是永久的,也不像表中的關(guān)系是暫時(shí)的,它不靠索引字段進(jìn)行聯(lián)接,而是通過定義一個(gè)聯(lián)接表達(dá)式來進(jìn)行聯(lián)接,表間的關(guān)系是松散的??梢园慈缦罗k法建立表間的聯(lián)接:■在視圖設(shè)計(jì)器中單擊“聯(lián)接”選項(xiàng)卡即可設(shè)置多表間的關(guān)聯(lián)?!鲈凇疤砑颖砘蛞晥D”對(duì)話框中,選定表后,單擊【添加】按鈕,當(dāng)視圖設(shè)計(jì)器中的表在兩個(gè)及以上時(shí),視圖設(shè)計(jì)器就會(huì)為選定的表建立關(guān)聯(lián)。說明:用以上的方法建立多表關(guān)聯(lián),必須有多個(gè)表添加到了視圖設(shè)計(jì)器中。后續(xù)的操作方法與設(shè)計(jì)多表查詢相似,除不同點(diǎn)外,相同的部分這里不再講述。下面我們來建立表Department、Classzc、Student、Courses和Grade五表之間的關(guān)聯(lián)的視圖,起名為視圖3。2020/12/260VisualFoxPro6.0程序設(shè)計(jì)從定義上講,多表視圖指的是:視圖中的字段來源于兩個(gè)或兩個(gè)以上(4)與設(shè)計(jì)多表查詢不相同的部分——更新條件視圖的最大特點(diǎn)在于能用視圖更新數(shù)據(jù),這也是建立視圖與建立查詢的主要區(qū)別,也是視圖的重點(diǎn)所在。視圖設(shè)計(jì)器中的“更新條件”選項(xiàng)卡可以用來設(shè)置允許視圖更新表字段的條件。2020/12/261VisualFoxPro6.0程序設(shè)計(jì)(4)與設(shè)計(jì)多表查詢不相同的部分——更新條件2020/12/“更新條件”選項(xiàng)卡選項(xiàng)包括如下內(nèi)容:■“表”:指定視圖所使用的哪些表可以修改。選擇這個(gè)下拉列表框中的選項(xiàng),可以確定哪些表中的字段可以在“字段名”列表框中,以便設(shè)置更新條件。此列表中所顯示的表都包含了“字段”選項(xiàng)卡“選定字段”列表中的字段?!觥局刂藐P(guān)鍵字】:這個(gè)按鈕作用是從每個(gè)表中選擇主關(guān)鍵字字段作為視圖的關(guān)鍵字字段。每個(gè)主關(guān)鍵字字段是在“字段名”列表中的、在鑰匙符號(hào)下面打一個(gè)對(duì)鉤的字段,關(guān)鍵字字段可2020/12/262VisualFoxPro6.0程序設(shè)計(jì)“更新條件”選項(xiàng)卡選項(xiàng)包括如下內(nèi)容:■“表”:指定視圖所使用可用來使視圖中的修改與表中的原始記錄相匹配。■【全部更新】:可以從字段名文本框中看到一些字段前的鉛筆符號(hào)下打了一個(gè)對(duì)鉤,這表明這些字段可以更新。在這個(gè)按鈕中可以選擇除了關(guān)鍵字字段以外的所有字段來進(jìn)行更新,并在“字段名”列表的鉛筆符號(hào)下打一個(gè)對(duì)鉤。■“發(fā)送SQL更新”:指定是否將視圖記錄中的修改傳送給原始表。如果選擇了這個(gè)復(fù)選框,將把在視圖中對(duì)記錄字段的修改返回到源表中?!觥白侄蚊绷斜砜颍猴@示了從“表”列表框中所選的表中的字段、并用來輸出這些字段,不過這些字段都是可以更新的。在字段文本框中共有下列3種方式字段:●關(guān)鍵字段(使用鑰匙符號(hào)作標(biāo)記),指定該字段是否為關(guān)鍵字段?!窨筛伦侄危ㄊ褂勉U筆符號(hào)作標(biāo)記),指定該字段是否為可更新字段。●字段名,顯示可標(biāo)志為關(guān)鍵字字段或可更新字段的輸出字段名。2020/12/263VisualFoxPro6.0程序設(shè)計(jì)可用來使視圖中的修改與表中的原始記錄相匹配。2020/12/

■“SQLWHERE子句包括”:●“關(guān)鍵字段”:如果在原始表中有一個(gè)關(guān)鍵字字段被改變,設(shè)置WHERE子句來檢測(cè)沖突,對(duì)于由另一用戶對(duì)表中原始記錄的其他字段所做修改不進(jìn)行比較。●“關(guān)鍵字和可更新字段”:設(shè)置WHERE子句來檢測(cè)由某一用戶修改了任何可更新的字段的沖突。●“關(guān)鍵字和已修改字段”:如果從視圖首次檢索(默認(rèn))以后,關(guān)鍵字字段或原始表記錄的已修改字段中,某個(gè)字段做過修改,設(shè)置WHERE子句來檢測(cè)沖突?!瘛瓣P(guān)鍵字段和時(shí)間戳”:如果自原始表記錄的時(shí)間戳首次檢索以后,它被修改過,設(shè)置WHERE子句來檢測(cè)沖突。只有當(dāng)遠(yuǎn)程表有時(shí)間戳列時(shí),此選項(xiàng)才有效?!觥笆褂酶隆保捍藛芜x按鈕組用于指定字段如何在后端服務(wù)器上進(jìn)行更新。●“SQLDELETE然后INSERT”:指定先刪除原始表記錄后,再創(chuàng)建一個(gè)新的在視圖中被修改的記錄?!瘛癝QLUPDATE”:指定用視圖字段中的內(nèi)容來修改原始表中的字段。具體說明如何設(shè)置更新條件詳見6.5在視圖中更新數(shù)據(jù)。返回2020/12/264VisualFoxPro6.0程序設(shè)計(jì)■“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程序設(shè)計(jì)6.3.2用已有的SQLSELECT語句創(chuàng)建視圖同功能:從一個(gè)或多個(gè)表中檢索數(shù)據(jù)。參數(shù)描述:SELECT:用SELECT子句指定在查詢結(jié)果中包含的字段、常量和表達(dá)式。[ALL]:在查詢結(jié)果中包含所有的行(包括重復(fù)值)。它是系統(tǒng)的默認(rèn)設(shè)置。[DISTINCT]:在查詢結(jié)果中刪除重復(fù)行。[TOPnExpr[PERCENT]]:在符合查詢條件的所有記錄中,選取指定數(shù)量或百分比的記錄。TOP子句必須與ORDERBY子句同時(shí)使用。ORDERBY子句指定按哪個(gè)字段排序,TOP子句根據(jù)此排序選定開始的nExp個(gè)或nExp%的記錄??梢灾付ㄟx取1~32767條記錄。[Alias.]:限定匹配項(xiàng)的名稱。Select-Item指定的每一項(xiàng)在查詢結(jié)果中都生成一列,如果多個(gè)項(xiàng)具有相同的名稱,則應(yīng)在這些項(xiàng)前加上表的別名和一個(gè)句點(diǎn)號(hào),以防止出現(xiàn)重復(fù)的列。Select_Item:指定包含在查詢中的一個(gè)項(xiàng)。一個(gè)項(xiàng)可以是:2020/12/266VisualFoxPro6.0程序設(shè)計(jì)功能:從一個(gè)或多個(gè)表中檢索數(shù)據(jù)。2020/12/266Vis①FROM子句中所包含的表中的字段名稱。②一個(gè)常量,查詢結(jié)果中的每一行都出現(xiàn)這個(gè)常量值。③一個(gè)表達(dá)式,可以是用戶自定義函數(shù)名。[ASColumn_Name]:指定查詢結(jié)果中的列標(biāo)題。當(dāng)Select-Item是一個(gè)表達(dá)式或一個(gè)字段函數(shù)時(shí),如果要給此列取一個(gè)有意義的名稱可用這個(gè)子句。它可以是一個(gè)表達(dá)式。FROM:列出所有從中檢索數(shù)據(jù)的表。如果沒有打開表,VFP會(huì)顯示“打開”對(duì)話框以便指定文件位置,表打開以后直到查詢結(jié)束才關(guān)閉。[FORCE]:如果包含了此子句,VFP在建立查詢時(shí)會(huì)嚴(yán)格按照在FROM子句中申明的順序建立聯(lián)接,否則會(huì)試圖對(duì)查詢進(jìn)行優(yōu)化。避免優(yōu)化過程,可能會(huì)加快查詢執(zhí)行的速度。[DatabaseName!]:當(dāng)包含表的數(shù)據(jù)庫不是當(dāng)前的數(shù)據(jù)庫時(shí),此子句指定數(shù)據(jù)庫的名稱。如果數(shù)據(jù)庫不是當(dāng)前數(shù)據(jù)庫,就必須指定包含表的數(shù)據(jù)庫名稱,注意其后應(yīng)加上“!”號(hào)。Table[[AS]Local_Alias]:為Table中的表指定一個(gè)臨時(shí)名稱。2020/12/267VisualFoxPro6.0程序設(shè)計(jì)①FROM子句中所包含的表中的字段名稱。2020/12/26如果指定了本地別名,那么在整個(gè)Select語句中都必須用這個(gè)別名代替表名。INNERJOIN:只有在其它表中包含對(duì)應(yīng)記錄(一個(gè)或多個(gè))的記錄才出現(xiàn)在查詢結(jié)果中。LEFT[OUTER]JOIN:在查詢結(jié)果中包含JOIN左側(cè)表中的所有記錄,以及右側(cè)表中匹配的記錄。這是左聯(lián)接。RIGHT[OUTER]JOIN:在查詢結(jié)果中包含JOIN右側(cè)表中的所有記錄,以及左側(cè)表中匹配的記錄。這是右聯(lián)接。FULL[OUTER]JOIN:在查詢結(jié)果中包含JOIN兩側(cè)表中的所有記錄,這是完全聯(lián)接。[DatabaseName!]Table[[AS]Local_Alias]:指定和當(dāng)前表建立聯(lián)接的表所在的數(shù)據(jù)庫及表名或本地表別名。ONJoinCondition:指定聯(lián)接條件。[INTODestination]:指定在何處保存查詢結(jié)果。如果在同一個(gè)查詢中同時(shí)包含了INTO子句和TO子句,則TO子句不起作用。如果沒有包含INTO子句,查詢結(jié)果顯示在“瀏覽”窗口中。2020/12/268VisualFoxPro6.0程序設(shè)計(jì)如果指定了本地別名,那么在整個(gè)Select語句中都必須用這個(gè)Destination可以是下列子句之一:①ARRAYArrayName:將查詢結(jié)果保存到數(shù)組中。如果查詢結(jié)果中不包含任何記錄,則不創(chuàng)建這個(gè)數(shù)組。②CURSORCursorName:將查詢結(jié)果保存到臨時(shí)表中。如果指定了一個(gè)已打開表的名稱,則VFP產(chǎn)生錯(cuò)誤信息。執(zhí)行完SELECT語句后,臨時(shí)表仍然保持打開、活動(dòng),但只讀。一旦關(guān)閉臨時(shí)表,則自動(dòng)刪除它。③DBFTableName|TABLETableName:將查詢結(jié)果保存到一個(gè)表中,如果指定的表已經(jīng)打開,并且SETSAFETY設(shè)置為OFF,則VFP在不給出任何警告信息的情況下改寫該表。執(zhí)行完SELECT語句后,臨時(shí)表仍然保持打開活動(dòng)狀態(tài)。[TOFILE[ADDITIVE]|TOPRINTER[PROMPT]|TOSCREEN]:如果命令中包含了TO子句,但沒有包括INTO子句,則查詢結(jié)果定向輸出到名為的ASCII碼文件、打印機(jī)或主窗口。包含ADDITIVE子句使查詢結(jié)果追加到所指定的文本文件的內(nèi)容后面。2020/12/269VisualFoxPro6.0程序設(shè)計(jì)Destination可以是下列子句之一:2020/12/2[PREFERENCEPreferenceName]:如果查詢結(jié)果送往瀏覽窗口,就可以使用該子句保存瀏覽窗口的屬性和選項(xiàng)以備后用。[NOCONSOLE]:不顯示送到打印機(jī)、文件、或VFP主窗口的查詢結(jié)果。[PLAIN]:防止列標(biāo)題出現(xiàn)在顯示的查詢結(jié)果中。[NOWAIT]:打開瀏覽窗口并將結(jié)果輸出到這個(gè)窗口后繼續(xù)程序的執(zhí)行。WHERE:告訴VFP只在查詢結(jié)果中包含一定的記錄。從多表檢索中查找數(shù)據(jù)時(shí)需要用到該子句。JoinCondition:指定一個(gè)字段,該字段聯(lián)接FROM子句中的表。如果查詢中包括不止一個(gè)表就應(yīng)該為第一個(gè)表后的每一個(gè)表指定聯(lián)接條件。聯(lián)接多個(gè)查詢條件必須使用.AND.。每個(gè)聯(lián)接都是這樣的形式:FieldName1ComparisonFieldName2其中:FieldName1是一個(gè)表的字段名,F(xiàn)ieldName2是另一個(gè)表的字段名。Comparison是下列的某一操作符:2020/12/270VisualFoxPro6.0程序設(shè)計(jì)[PREFERENCEPreferenceName]:如果=、==、LIKE、<>,!=,#、>、>=、<、<=FilterCondition:指定包含在查詢結(jié)果中的記錄必須滿足條件。篩選條件的數(shù)目沒有限制,只要將它們用.AND.或.OR.操作符連接起來即可。也可以使用操作符.NOT.對(duì)邏輯表達(dá)式取反,或使用EMPTY()函數(shù)檢查字段是否為空等。[GROUPBYGroupColumn]:按列的值對(duì)查詢結(jié)果進(jìn)行分組。GroupColumn可以是常規(guī)的表字段名,也可以是一個(gè)包含SQL字段函數(shù)的字段名,還可以是一個(gè)數(shù)值表達(dá)式指定查詢結(jié)果表中的列位置。[HAVINGFilterCondition]:指定包含在查詢結(jié)果中的組必須滿足的條件。它應(yīng)和GROUPBYGroupColumn一起使用。[UNION[ALL]SELECTCommand]:把一個(gè)SELECT語句的最后查詢結(jié)果同另一個(gè)SELECT語句最后的查詢結(jié)果組合起來。ALL防止UNION刪除組合結(jié)果中的重復(fù)行。[ORDERBYOrder_Item]:根據(jù)列的數(shù)據(jù)對(duì)查詢結(jié)果進(jìn)行排序。每個(gè)Order_Item都必須對(duì)應(yīng)查詢結(jié)果中的一列。2020/12/271VisualFoxPro6.0程序設(shè)計(jì)=、==、LIKE、<>,!=,#、>、>=、<、<=202用SELECT—SQL命令完成上節(jié)的設(shè)計(jì)任務(wù):SELECTDepartment.系部名稱,Classzc.班級(jí)名稱,Student.學(xué)號(hào),;Student.姓名,Course.課程名,Grade.課程成績;

FROMgxglxt!departmentINNERJOINgxglxt!classzc;INNERJOINgxglxt!student;INNERJOINgxglxt!grade;INNERJOINgxglxt!course;ONGrade.課程代號(hào)=Course.課程代號(hào);ONStudent.學(xué)號(hào)=Grade.學(xué)號(hào);ONClasszc.班級(jí)代號(hào)=Student.班級(jí)代號(hào);ONDepartment.系部代號(hào)=Classzc.系部代號(hào);WHEREClasszc.系部代號(hào)="04";.AND.Grade.開課學(xué)期="第1學(xué)期";

ORDERBYStudent.學(xué)號(hào);INTOCURSOR視圖12020/12/272VisualFoxPro6.0程序設(shè)計(jì)用SELECT—SQL命令完成上節(jié)的設(shè)計(jì)任務(wù):2020/12運(yùn)行該SELECT語句后,選擇【顯示】|【瀏覽“視圖1”】屏幕顯示如圖:返回2020/12/273VisualFoxPro6.0程序設(shè)計(jì)運(yùn)行該SELECT語句后,選擇【顯示】|【瀏覽“視圖6.3.3創(chuàng)建遠(yuǎn)程視圖

1、用視圖向?qū)?chuàng)建遠(yuǎn)程視圖創(chuàng)建使用遠(yuǎn)程數(shù)據(jù)(ODBC)的視圖,必須存在一個(gè)數(shù)據(jù)庫來保存視圖,同時(shí)還需要存在數(shù)據(jù)源或命名連接。如果沒有打開數(shù)據(jù)庫,系統(tǒng)將提示打開數(shù)據(jù)庫或創(chuàng)建數(shù)據(jù)庫。在運(yùn)行“遠(yuǎn)程視圖向?qū)А敝埃梢栽凇斑x項(xiàng)”對(duì)話框的“遠(yuǎn)程數(shù)據(jù)”選項(xiàng)卡上設(shè)置遠(yuǎn)程視圖和連接的默認(rèn)選項(xiàng)。也可以在“連接設(shè)計(jì)器”中創(chuàng)建連接。如果要利用遠(yuǎn)程視圖向?qū)?chuàng)建遠(yuǎn)程視圖,則選擇【文件】|【新建】命令,在彈出的新建對(duì)話框中選中遠(yuǎn)程視圖,然后單擊【向?qū)А堪粹o。就會(huì)進(jìn)入遠(yuǎn)程視圖向?qū)?duì)話框中?;蛘咴跀?shù)據(jù)庫設(shè)計(jì)器工具欄中單擊【新建遠(yuǎn)程視圖】按鈕,選擇使用向?qū)А?020/12/274VisualFoxPro6.0程序設(shè)計(jì)6.3.3創(chuàng)建遠(yuǎn)程視圖1、用視圖向?qū)?chuàng)建遠(yuǎn)程視圖創(chuàng)建遠(yuǎn)程視圖主要有以下步驟:1、

數(shù)據(jù)源選取2、字段選取3、為表建立關(guān)系4、包含記錄5、排序記錄6、篩選記錄7、完成在第一步數(shù)據(jù)源選取中,可以在可用的數(shù)據(jù)源列表框中選擇一種ODBC數(shù)據(jù)源或者一個(gè)已經(jīng)建立的連接。如果選擇的是一種未連接任何數(shù)據(jù)源的ODBC數(shù)據(jù)源,系統(tǒng)將顯示一個(gè)“確認(rèn)連接”對(duì)話框,從中選擇一個(gè)數(shù)據(jù)源。當(dāng)選擇的VFPTables或VFP2020/12/275VisualFoxPro6.0程序設(shè)計(jì)創(chuàng)建遠(yuǎn)程視圖主要有以下步驟:在第一步數(shù)據(jù)源選取中,可以在可用Databases時(shí),會(huì)打開建立數(shù)據(jù)源對(duì)話框。在此對(duì)話框中為數(shù)據(jù)庫選擇一種類型,同時(shí)在Path中輸入遠(yuǎn)程數(shù)據(jù)源的文件名或者使用【Browse】按鈕選擇一個(gè)文件作為遠(yuǎn)程數(shù)據(jù)源。選擇數(shù)據(jù)源以后,向?qū)Ь蜁?huì)進(jìn)入下一步,以后的步驟與本地視圖及創(chuàng)建查詢沒有太大的差別,在此不再贅述。2020/12/276VisualFoxPro6.0程序設(shè)計(jì)Databases時(shí),會(huì)打開建立數(shù)據(jù)源對(duì)話框。在此對(duì)話框中為2、利用視圖設(shè)計(jì)器創(chuàng)建遠(yuǎn)程視圖創(chuàng)建新的遠(yuǎn)程視圖首先必須要有同數(shù)據(jù)源的連接。在數(shù)據(jù)庫設(shè)計(jì)器中單擊鼠標(biāo)右鍵選擇【新建遠(yuǎn)程視圖】或者在【文件】下的【新建】命令,在新建對(duì)話框中選擇遠(yuǎn)程視圖,并單擊【新建文件】按鈕。此時(shí)會(huì)顯示選擇連接或數(shù)據(jù)源對(duì)話框,在此對(duì)話框中選擇連接或者可用的數(shù)據(jù)源。如圖。2020/12/277VisualFoxPro6.0程序設(shè)計(jì)2、利用視圖設(shè)計(jì)器創(chuàng)建遠(yuǎn)程視圖2020/12/277Visu如果已經(jīng)存在定義的連接,該對(duì)話框中就顯示所定義的連接。如果要定義新的連接,可單擊【新建】按鈕,出現(xiàn)圖示的“連接設(shè)計(jì)器”。2020/12/278VisualFoxPro6.0程序設(shè)計(jì)如果已經(jīng)存在定義的連接,該對(duì)話框中就顯示所定義的連接。如果要在數(shù)據(jù)源下面的下拉選項(xiàng)框中選擇VisualFoxProDatabase項(xiàng),其它項(xiàng)均采用系統(tǒng)默認(rèn)設(shè)置,然后選擇【驗(yàn)證連接】按鈕。如果為這個(gè)連接指定了一個(gè)數(shù)據(jù)庫,則會(huì)出現(xiàn)“連接成功”的提示信息,否則,將出現(xiàn)如圖所示的連接配置(ConfigureConnection)對(duì)話框。在該對(duì)話框中選擇【Browse】后將出現(xiàn)圖示的“選擇數(shù)據(jù)庫”(SelectDatabase)對(duì)話框。2020/12/279VisualFoxPro6.0程序設(shè)計(jì)在數(shù)據(jù)源下面的下拉選項(xiàng)框中選擇VisualFoxP在此對(duì)話框中可以選擇本地存在的數(shù)據(jù)庫或網(wǎng)上鄰居中設(shè)置為共享的數(shù)據(jù)庫。然后選擇【打開】,就會(huì)在“連接配置ConfigureConnection”對(duì)話框中“Path”后的文本框中加入所添加的數(shù)據(jù)庫文件名及其所在的路徑,如“\\092\FOXPRO上機(jī)操作\Visualfp.dbc”。然后按【OK】,系統(tǒng)會(huì)告訴“連接成功”。然后再在“連接設(shè)計(jì)器”中單擊【確定】,接著彈出“保存對(duì)話框”,默認(rèn)的連接名為“連接1”,可以采用默認(rèn)的連接名,也可以重命名連接名,再單擊【確定】。2020/12/280VisualFoxPro6.0程序設(shè)計(jì)在此對(duì)話框中可以選擇本地存在的數(shù)據(jù)庫或網(wǎng)上鄰居中設(shè)置為共享的在保存連接后,“遠(yuǎn)程視圖設(shè)計(jì)器”進(jìn)入“打開”對(duì)話框。在視圖設(shè)計(jì)器中對(duì)加入的表創(chuàng)建遠(yuǎn)程視圖的操作與建立本地視圖的操作一樣,此處不再贅述。2020/12/281VisualFoxPro6.0程序設(shè)計(jì)在保存連接后,“遠(yuǎn)程視圖設(shè)計(jì)器”進(jìn)入“打開”對(duì)話框。3、控制如何檢查更新沖突如果在一個(gè)多用戶環(huán)境中工作,服務(wù)器上的數(shù)據(jù)也可以被別的用戶訪問,也許別的用戶也在試圖更新遠(yuǎn)程服務(wù)器上的記錄,為了讓VFP檢查用視圖操作的數(shù)據(jù)在更新之前是否被別的用戶修改過,可使用更新條件選項(xiàng)卡上的選項(xiàng)。在更新條件選項(xiàng)卡中,SQLWHERE子句包括框中的選項(xiàng)可以幫助管理遇到多用戶訪問同一數(shù)據(jù)時(shí)應(yīng)如何更新記錄。在允許更新之前,VFP先檢查遠(yuǎn)程數(shù)據(jù)源表中的指定字段,看看它們?cè)谟涗洷惶崛〉揭晥D中后有沒有改變,如果數(shù)據(jù)源中的這些記錄被修改,就不允許更新操作。在“更新條件”選項(xiàng)卡中可以設(shè)置SQLWHERE子句。這些選項(xiàng)決定哪些字段包含在UPDATE或DELETE語句的WHERE子句中,VFP正是利用這些語句將在視圖中修改或刪除的記錄發(fā)送到遠(yuǎn)程數(shù)據(jù)源或源表中,WHERE子句就是用來檢查自從提取記錄用于視圖中后,服務(wù)器上的數(shù)據(jù)是否已改變。2020/12/282VisualFoxPro6.0程序設(shè)計(jì)3、控制如何檢查更新沖突2020/12/282Visua關(guān)鍵字段:當(dāng)源表中的關(guān)鍵字段被改變時(shí),使更新失敗。關(guān)鍵字和可更新字段:當(dāng)遠(yuǎn)程表中任何標(biāo)記為可更新的字段被改變時(shí),使更新失敗。關(guān)鍵字和已修改字段:當(dāng)在本地改變的任一字段在源表中已被改變時(shí),使更新失敗。關(guān)鍵字和時(shí)間戳:當(dāng)遠(yuǎn)程表上記錄的時(shí)間戳在首次檢索之后被改變時(shí),使更新失敗(僅當(dāng)遠(yuǎn)程表有時(shí)間戳列時(shí)有效)。4、定制視圖同本地視圖一樣,可以在遠(yuǎn)程視圖中包含表達(dá)式,設(shè)置提示輸入值,也可以設(shè)置高級(jí)選項(xiàng)來協(xié)調(diào)與服務(wù)器交換數(shù)據(jù)的方式(1)控制更新方法若要控制關(guān)鍵字段的信息實(shí)際上在服務(wù)器上更新的方式,可使用視圖設(shè)計(jì)器中更新條件選項(xiàng)卡中“使用更新”中的選項(xiàng)。如圖2020/12/283VisualFoxPro6.0程序設(shè)計(jì)關(guān)鍵字段:當(dāng)源表中的關(guān)鍵字段被改變時(shí),使更新失敗。2020/當(dāng)記錄中的關(guān)鍵字更新時(shí),這些選項(xiàng)決定發(fā)送到服務(wù)器或源表中的更新語句使用什么SQL命令??芍付ㄏ葎h除記錄,然后使用在視圖中輸入的新值取代原值(SQLDELETE然后INSERT),也可指定使用服務(wù)器支持的SQLUPDATE函數(shù)來改變服務(wù)器的記錄。(2)在遠(yuǎn)程視圖中添加表達(dá)式若要在視圖中添加表達(dá)式,可在“篩選”選項(xiàng)卡中,從“字段名”框中選擇“表達(dá)式”。當(dāng)視圖基于遠(yuǎn)程數(shù)據(jù)源時(shí),在“表達(dá)式設(shè)計(jì)器”中顯示的函數(shù)反映了服務(wù)器所支持的函數(shù)??梢圆榭捶?wù)器文檔中列出的該服務(wù)器所支持的函數(shù)列表,VFP不對(duì)構(gòu)造的表達(dá)式作語法分析,而是將它們發(fā)送到遠(yuǎn)程服務(wù)器上。2020/12/284VisualFoxPro6.0程序設(shè)計(jì)當(dāng)記錄中的關(guān)鍵字更新時(shí),這些選項(xiàng)決定發(fā)送到服務(wù)器或源表中的更5、建立連接使用遠(yuǎn)程視圖,無需將所有記錄下載到本地計(jì)算機(jī)上即可提取遠(yuǎn)程ODBC服務(wù)器上的數(shù)據(jù)子集??梢栽诒镜貦C(jī)上操作這些選定的記錄,然后把更改或添加的值返回到遠(yuǎn)程數(shù)據(jù)源中。有兩種連接遠(yuǎn)程數(shù)據(jù)源的方法,可以直接訪問在機(jī)器上注冊(cè)的ODBC數(shù)據(jù)源,也可以用連接設(shè)計(jì)器設(shè)計(jì)自定義連接。在安裝VFP時(shí),選擇VFP的“完全”或“自定義”安裝選項(xiàng),就可以把ODBC安裝在系統(tǒng)中。如果想為服務(wù)器創(chuàng)建定制的連接,可以使用連接設(shè)計(jì)器,創(chuàng)建的連接將作為數(shù)據(jù)庫的一部分保存起來,并含有如何訪問特定數(shù)據(jù)源的信息。使用連接設(shè)計(jì)器能夠創(chuàng)建并修改命名連接。因?yàn)檫B接是作為數(shù)據(jù)庫的一部分存儲(chǔ)的,所以僅在有打開的數(shù)據(jù)庫時(shí)才能使用連接設(shè)計(jì)器。連接設(shè)計(jì)器對(duì)話框中有如下選項(xiàng):(1)指定的數(shù)據(jù)源2020/12/285VisualFoxPro6.0程序設(shè)計(jì)5、建立連接2020/12/285VisualFoxP■數(shù)據(jù)源、用戶標(biāo)識(shí)、密碼指定VFP顯示以下三個(gè)框:●數(shù)據(jù)源:允許從已安裝的ODBC數(shù)據(jù)源列表中選擇一個(gè)數(shù)據(jù)源?!裼脩魳?biāo)識(shí):如果數(shù)據(jù)源需要用戶名稱或標(biāo)識(shí),允許鍵入?!衩艽a:如果數(shù)據(jù)源需要密碼,允許鍵入密碼?!駭?shù)據(jù)庫:可以選擇一個(gè)數(shù)據(jù)庫,作為所選數(shù)據(jù)源連接的目標(biāo)?!鲞B接串:指定VFP顯示連接串文本框,可在其中鍵入連接串。選擇對(duì)話按鈕,顯示選擇連接或數(shù)據(jù)源對(duì)話框,如圖所示??梢赃x擇現(xiàn)有文件或機(jī)器數(shù)據(jù)源?!觥掘?yàn)證連接】:可以對(duì)那些剛輸入了內(nèi)容的連接進(jìn)行檢查。如果連接成功,則顯示對(duì)話框提示此消息;如果連接失敗,則出現(xiàn)錯(cuò)誤信息。如果沒有對(duì)話指定內(nèi)容,則顯示選擇2020/12/286VisualFoxPro6.0程序設(shè)計(jì)■數(shù)據(jù)源、用戶標(biāo)識(shí)、密碼指定VFP顯示以下三個(gè)框:可以選擇現(xiàn)數(shù)據(jù)庫對(duì)話框,從中選擇數(shù)據(jù)源。前文已作介紹。■【新建數(shù)據(jù)源】:顯示“DataSources”對(duì)話框,可以在其中添加、刪除或配置數(shù)據(jù)源。前文已作介紹。(2)顯示ODBC登錄提示●未指定登錄信息時(shí)顯示:如果在命名連接定義中未存儲(chǔ)用戶標(biāo)識(shí)和密碼,則VFP用“ODBC數(shù)據(jù)源注冊(cè)”對(duì)話框提示用戶?!窨傦@示:指定VFP總是使用“ODBC數(shù)據(jù)源注冊(cè)”對(duì)話框提示用戶,該框允許用戶使用與存儲(chǔ)在命名連接中不同的注冊(cè)ID和密碼?!駨牟伙@示:指定VFP從不提示用戶。此選項(xiàng)確保更高的安全性。(3)數(shù)據(jù)處理此選項(xiàng)與用戶用DBSETPROP()函數(shù)設(shè)置的連接屬性相對(duì)應(yīng)?!霎惒綀?zhí)行:指定異步連接。此選項(xiàng)與Asynchronous連接屬性相對(duì)應(yīng)?!鲲@示警告信息:指定顯示不可捕獲警告。此選項(xiàng)與Disp2020/12/287VisualFoxPro6.0程序設(shè)計(jì)數(shù)據(jù)庫對(duì)話框,從中選擇數(shù)據(jù)源。前文已作介紹。2020/12/warning連接屬性相對(duì)應(yīng)?!雠幚恚褐付ㄒ耘幚矸绞竭M(jìn)行連接操作。此選項(xiàng)與BatchMode連接屬性相對(duì)應(yīng)。■自動(dòng)事務(wù)處理:指定自動(dòng)執(zhí)行事務(wù)處理。此選項(xiàng)與Transactions連接屬性相對(duì)應(yīng)?!霭笮。寒?dāng)和遠(yuǎn)程數(shù)據(jù)位置之間傳送信息時(shí),可以指定傳送信息網(wǎng)絡(luò)包的大小(以字節(jié)為單位)。在下拉列表中選擇或鍵入一個(gè)值。(4)超時(shí)間隔這些選項(xiàng)設(shè)置連接屬性的值,也可用DBSETPROP()函數(shù)設(shè)置?!鲞B接(秒):以秒為單位指定連接超時(shí)時(shí)間間隔。此選項(xiàng)與ConnectTimeout連接屬性相對(duì)應(yīng)?!霾樵儯耄阂悦霝閱挝恢付ú樵兂瑫r(shí)時(shí)間間隔。此選取項(xiàng)與QueryTimeout連接屬性相對(duì)應(yīng)?!隹臻e(分鐘):以分鐘為單位指定空閑超時(shí)時(shí)間間隔。在指定的時(shí)間間隔后,活動(dòng)連接變?yōu)椴换顒?dòng)。此選項(xiàng)與IdleTimeout連接屬性相對(duì)應(yīng)。■等待時(shí)間(毫秒):以毫秒為單位指定在VFP確定SQL語句是否執(zhí)行完畢之前經(jīng)過的時(shí)間。此選項(xiàng)與WaitTime連接屬性相對(duì)應(yīng)。返回2020/12/288VisualFoxPro6.0程序設(shè)計(jì)warning連接屬性相對(duì)應(yīng)。返回2020/12/288Vi6.4數(shù)據(jù)庫視圖的操作6.4.1使用視圖退出6.4.2、顯示視圖結(jié)構(gòu)6.4.3、重新命名視圖6.4.4刪除視圖6.4.5創(chuàng)建視圖索引6.4.6創(chuàng)建參數(shù)化視圖返回2020/12/289VisualFoxPro6.0程序設(shè)計(jì)6.4數(shù)據(jù)庫視圖的操作6.4.1使用視圖退6.4.1使用視圖

建立視圖后,不但可以用它來顯示和更新數(shù)據(jù),而且還可以通過調(diào)整它的屬性來提高性能。處理視圖類似處理表,可以:■使用USE命令并指定視圖名來打開一個(gè)視圖?!鍪褂肬SE命令關(guān)閉視圖。■在【瀏覽】窗口中顯示視圖。■在【查看】窗口中顯示已打開的視圖的別名?!鰧⒁晥D作為數(shù)據(jù)源,供表單或表格控件使用。若要使用一個(gè)視圖,可采取如下方法:■在項(xiàng)目管理器中先選擇一

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論