




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
學習要點1、查詢向導和查詢設計器的使用方法;2、單表查詢和交叉表查詢;3、查詢設計器中各選項卡的功能和使用方法;4、本地視圖和遠程視圖;5、視圖向導和視圖設計器的使用方法;6、使用視圖。第6章查詢與視圖第6章查詢與視圖6.1用查詢向導設計查詢6.2用查詢設計器設計查詢6.3創建視圖6.4數據庫視圖的操作小結返回退出6.5利用視圖處理自由數據6.1用查詢向導設計查詢6.1.1設計單表查詢6.1.2建立交叉表返回退出6.1.1設計單表查詢
查詢向導可以引導用戶快速設計一個查詢。下面將示例使用查詢向導設計一個簡單的單表查詢:從GXGLXT數據庫的Student表中查詢系部代號為“04”且是99級的所有學生的信息。操作過程如下:首先從“項目管理器”開始,選擇【數據】卡片中的“查詢”,然后單擊【新建】按鈕,則出現設計查詢的方式選擇對話框。單擊選擇GXGLXT數據庫中的Student表,并將該表中的所有字段添加到“選定字段”列表框中。單擊查詢向導——字段選取從中選擇Student.系部代號0在此輸入值4取默認值從中選擇“包含”在此輸入值98單擊單擊【預覽】按鈕可以顯示查詢結果。根據要求,設置條件如上圖。其中,雖然表中沒有年級字段,但可通過“學號”得到年級(學號的前二位為年級)。
查詢向導——篩選記錄選擇排序字段單擊【添加】選擇排序方式調整排序順序移動按鈕單擊查詢向導——記錄排序查詢向導——限制記錄限制查詢結果中所包含的記錄數說明:查詢結果中所包含的記錄數限制共有四種方式:1、“部分類型”中選擇“所占記錄百分比”,“數量”中選擇“所有記錄”,查詢結果集中包含全部記錄。2、“部分類型”中選擇“所占記錄百分比”,“數量”中選擇“部分值”,再在“微調框”中設置數值,查詢結果集中包含指定數值百分數的記錄。3、“部分類型”中選擇“記錄號”,“數量”中選擇“所有記錄”,查詢結果集中包含全部記錄。4、“部分類型”中選擇“記錄號”,“數量”中選擇“部分值”,再在“微調框”中設置數值,查詢結果集中包含指定數值的記錄數。單擊取默認值,查詢結果集中包含全部記錄查詢向導——完成將查詢以文件的形式(.QPR)保存到一個指定的目錄中。將查詢保存到一個指定的目錄中并運行該文件。
利用查詢向導設計的查詢功能有限,可以使用查詢設計器修改它。單擊,可以查看查詢結果集中的全部數據打開幫助文件取消所建立的查詢返回到向導的上一步結束向導,完成查詢設計。單擊保存設計的查詢目錄選擇下拉列表框文件名輸入文本框文件類型選擇下位列表框在“文件名輸入文本框”中輸入“Stud_query”后,單擊【保存】按鈕,結束查詢設計過程。在項目管理器中的“數據”選項中的查詢項下產生了一個查詢文件返回6.1.2建立交叉表
如果在上文所述的建立查詢的第一步選擇“交叉表向導”,則可以建立交叉表。下面通過示例來介紹如何建立交叉表。用Grade表中的數據建立一個交叉表,以顯示每個學生所有課程的總成績。Grade表中的部分數據如:前面的設計過程同以上內容,但是在第二步需要確定交叉表的行和列。交叉表設計向導——字段選取選擇數據庫和表選定字段單擊單個字段選定按鈕全部字段選定按鈕單個字段撤消按鈕說明:在這一步先在“數據庫和表”一選擇一個數據庫,再選擇用以建立交叉表的數據表,然后再從可用字段列表框中選擇要用的字段,交叉表只用三個字段,這一步可多選字段。全部字段撤消按鈕單擊交叉表向導——定義布局說明:(1)行,將要加入到交叉表中的第一個字段名,本示例中選擇字段“學號”;(2)列,將要加入到交叉表中的從第二個字段開始的若干個字段的字段名,注意這些從源表中選擇的數據不能超過254個。本示例中選擇字段“課程代號”;(3)數據,對應行和列的運算結果,本示例中選擇“課程成績”。按提示操作:從可用字段列表框中將“學號”字段拖入“行”框,將“課程代號”拖入“列”框,將“課程成績”拖入“數據”框。單擊交叉表查詢向導——加入總結信息說明:這一步的操作,決定在生成的交叉表中要加入的一個字段的內容。(1)求和:求出對應行和列的數據字段的和;(2)計數:求出對應行和列的數據字段的數目;(3)平均值:求出對應行和列的數據字段的平均值;(4)最大值:求出對應行和列的數據字段的最大值;(5)最小值:求出對應行和列的數據字段的最小值。
本示例中選擇“求和”運算。如果不想加入總結信息,可以在“分類匯總”中選擇“無”。單擊交叉表向導——完成將交叉表查詢以文件的形式(.QPR)保存到一個指定的目錄中。將交叉表查詢保存到一個指定的目錄中并運行該文件。
將交叉表查詢保存到一個指定的目錄中并打開“查詢設計器”修改它。對于值為空的記錄是否以.NULL.填充
說明:系統默認值是“保存交叉表查詢”和“顯示NULL值”。選擇“保存并運行交叉表查詢”后單擊交叉表保存及運行結果按上一步的操作完成后,進行到“另存為…”對話框中,將該查詢取名為Grad_Query,然后保存在默認的目錄中。保存后,系統進入到數據查詢過程,稍候系統將查詢結果顯示出來。如:從中可以看到,凡是沒有數據的欄,就被.NULL.值填充,且有許多數據丟失。交叉表可以用數據過濾處理,在下一節中介紹。返回6.2用查詢設計器設計查詢6.2.1確定各表間的聯接關系
退出6.2.2選定查詢字段
6.2.3篩選記錄
6.2.4查詢結果排序
6.2.5建立分組查詢
6.2.6雜項的設置
6.2.7定向輸出查詢結果
6.2.8運行查詢返回6.2用查詢設計器設計查詢
前面學習了如何使用VFP6中文版提供的查詢向導快速的設計一個查詢。但是在實際應用中,查詢向導設計的查詢往往不能滿足需求。這時還可以采用查詢設計器方便靈活的設計各種查詢,也可以先用查詢向導設計一個簡單的查詢,再在查詢向導中打開并修改它。將上一節建立的Grad_Query交叉表查詢,用“查詢設計器”進行修改,使用之包含盡可能少的空欄。可以通過以下所提供的多種方法之一來打開查詢設計器:■從“項目管理器”啟動查詢設計器1、在“項目管理器”中選擇“數據”選項卡,再選取“查詢”項,再單擊【新建】,進入查詢設計方式選擇對話框后單擊【新建查詢】,則啟動“查詢設計器”。2、在“項目管理器”中選擇“數據”選項卡,從“查詢”項中選擇一個已存在的查詢文件,再單擊【修改】,也啟動“查詢設計器”。■從【文件】菜單啟動查詢設計器選擇系統菜單中的【文件】|【新建】命令,在“新建”對話框中選中“文件類型”下的“查詢”單選項,再單擊右邊的【新建文件】按鈕,也可啟動“查詢設計器”;■使用CREATEQUERY命令也可啟動“查詢設計器”現采用新建方式啟動“查詢設計器”查詢設計器下部分的窗口中有幾個選項卡,其含義簡介如下:(1)“字段”:用來選定包含在查詢結果中的字段;(2)“排序依據”:用來決定查詢結果輸出中記錄或行的排列順序;(3)“聯接”:用來確定各數據表或視圖之間的聯接關系;(4)“篩選”:相當于命令SETFILTERTO,利用過濾的方法查找一個特定的數據子集;(5)“分組依據”:所謂分組就是將一組類似的記錄壓縮成一個結果記錄,這樣就可以完成基于一組的計算。要設計一個查詢文件,首先必須明確查詢的目的是什么,即想要得到哪些數據,并以什么方式存在;或者想要得到滿足某些條件的特定記錄,或者想要知道某些記錄的字段值組合成的表達式按某一方式輸出。明確了輸出的數據后,就可以開始設計查詢了,一般要通過以下幾個步驟進行:(1)啟動查詢設計器;(2)選擇出現在查詢結果中的字段;(3)設置選擇條件來查找可給出所需結果的記錄;(4)設置排序或分組選項來組織查詢結果;(5)選擇查詢結果的輸出類型:表、報表、瀏覽等;(6)運行查詢。返回6.2.1確定各表間的聯接關系
下面將通過一個示例來介紹創建一個含有多個表中信息的查詢。例如在GXGLXT數據庫中有三個表:Student、Grade、Courses,現在想知道學號前四位是9904和9804的所有學生考試的成績。當在多個表或視圖間進行查詢時,需要指出這些表或視圖間的聯接關系。如前面所述,啟動查詢設計器,在“添加表和視圖”對話框中從“數據庫”中選擇GXGLXT庫,在“數據庫中的表”中選擇Student表,單擊【添加】按鈕,再選擇Grade表,再單擊【添加】,此時系統自動彈出一個“聯接條件”,詢問是否根據兩表中都有的“學號”字段建立內部聯接,單擊“確定”,兩表間就有了一條連線,代表它們之間的聯接。然后再添加Courses表,最后關閉對話框。在“查詢設計器”中選擇“聯接”選項卡,如圖:在VFP6中表間的聯接有四種類型,分別是:(1)InnerJoin:內部聯接,指定只有滿足聯接條件的記錄包含在結果中,此類型是默認的,也是最常用的;(2)RightOuterJoin:右聯接,指定滿足聯接條件的記錄,以及滿足聯接條件右側的表中記錄(即使不匹配聯接條件)都包含在結果中;(3)LeftOuterJoin:左聯接,指定滿足聯接條件的記錄,以及滿足聯接條件左側的表中記錄(即使不匹配聯接條件)都包含在結果中;(4)FullJoin:完全聯接,指定所有滿足和不滿足聯接條件的記錄都包含在結果中。如果想修改各表間的聯接,雙擊查詢設計器上部窗口表之間的連線,系統將彈出“連接條件”對話框;或者通過打開查詢設計器下部的“聯接”選項卡進行。一般不應隨便更改連接條件,不然會與實際數據間的關系不符。“條件”列表中包含如下幾項:(1)=:指字段值與實例相等;(2)LIKE:表示“字段名”欄中給出的字段值與“實例”欄中給出的文本值之間執行不完全匹配,它主要針對字符類型。例如,如設置查詢條件為“Student.學號LIKE9904”,那么諸如“學號”字段前四位為9904的記錄都滿足該條件;(3)==:表示在“字段名”欄中給出的字段值與“實例”欄中給出的文本值之間執行完全匹配檢查,它也主要是針對字符類型的。(4)>:即為“字段名”欄中給出的字段的值應大于“實例”欄中給出的值;(5)>=:即為“字段名”欄中給出的字段的值應大于或等于“實例”欄中給出的值;(6)<:即為“字段名”欄中給出的字段的值應小于“實例”欄中給出的值;(7)<=:即為“字段名”欄中給出的字段的值應小于或等于“實例”欄中給出的值;(8)IsNull:指定字段必須包含Null值;(9)Between:即為輸出字段的值應大于或等于“實例”欄中的最小值,而小于或等于“實例”欄中的最大值;(10)IN(在…之中):即為輸出字段的值必須是“實例”欄中所給出值中的一個,在“實例”欄中給出的各值之間以逗號分隔。此外,“聯接”選項卡中的“否”列用于指定.NOT.條件,“邏輯”列用于設置各聯接條件和篩選條件之間的邏輯關系(無、.AND.和.OR.),“大小寫”列用于指定是否區分大小寫。下方的“插入”和“移去”按鈕分別用于增加或移去查詢條件。最后,在設置篩選條件時,我們應注意如下幾點:(1)備注字段和通用字段不能用于設置查詢條件;(2)邏輯值的前后必須使用句點號,如.T.;(3)只有當字符串與查詢的表中字段名相同時,要用引號將字符串括起來,否則不需要用引號將字符串括起來;(4)日期不必用花括號括起來。返回6.2.2選定查詢字段
根據建立查詢的目的,選擇查詢結果中應包含的字段。操作方法與用向導設計查詢的方法相同。在本示例中先在“查詢設計器”中選擇“字段”選項卡,然后從可用字段列表框中選擇:Student.學號、Student.姓名、Courses.課程名稱、Grade.課程成績,如圖。選擇一個字段單擊【添加】選定的字段列表重復操作添加Student.姓名、Courses.課程名稱、Grade.課程成績返回6.2.3篩選記錄
選擇表中符合條件的一部分記錄而不是全部記錄是查詢的重要任務。此例要求從所有學生的成績信息中選出“學號”前四位為“9904”和“9804”的所有學生的成績,可以利用查詢設計器中的“篩選”選項卡。“篩選”選項卡可確定用于選擇記錄的字段和比較準則,以及輸入與該字段進行比較的示例值。選擇篩選字段設置篩選條件輸入篩選實例設置條件邏輯是否區分大小寫在字段名下的下拉選擇框中選擇“Grade.開課學期”,在“條件”下的下拉選擇框中選擇“=”,在“實例”下的文本框中輸入“第1學期”,返回在“邏輯”下的下拉選擇框中選擇“AND”,然后再在字段名下的下拉選擇框中選擇“Student.學號”,在“條件”下的下拉選擇框中選擇“In”,在“實例”下的文本框中輸入“9904,9804”(請注意中間的“,”是En狀態下輸入的)。6.2.4查詢結果排序
排序決定了查詢輸出結果中記錄或行的先后順序,我們可以通過“排序依據”選項卡設置查詢的排序次序,方法同在用查詢向導設計查詢介紹的一樣,首先從“選定字段”框中選定要使用的字段,返回并把它們移到“排序條件”框中,然后利用“排序選項”(從中選擇升序或降序)來設置排序條件。本例中設置Student.學號,升序為排序依據。選擇一個字段單擊【添加】選定的字段列表如果還需要添加用于排序的字段,可以重復以上的操作步驟。返回6.2.5建立分組查詢
所謂分組就是將一組類似的記錄壓縮成一個結果記錄,這樣就可完成基于一組記錄的計算。分組在與某些累計功能聯合使用時效果最好,例如SUM(),COUNT(),AVG()等。如果不想壓縮結果記錄,則不必設置它。在此例中不設分組查詢。如果想求各門課程的平均成績,可以用“課程名稱”進行分類查詢。選擇一個字段單擊【添加】選定的字段列表操作步驟如下:(1)在查詢設計器的“字段”選項卡中,單擊“函數和表達式”右邊的按鈕,出現“表達式”生成器;(2)在“數學”下拉式列表框中雙擊AVG(expN),在“來源于表”下拉框中選擇Grade表,在“字段”列表框中雙擊“課程成績”,單擊【確定】。即在“函數和表達式”框中自動生成了“AVG(Grade.課程成績)”這個表達式,用以計算Grade表中課程成績的平均值。(3)單擊“添加”按鈕,該表達式被添加到“選定字段”列表框中。將來查詢結果中就會有一列數據求平均值;(4)單擊“分組依據”選項卡,進入“分組依據”窗口,在“可用字段”中選擇Grade.課程名稱,再單擊【添加】按鈕,該字段即成為分組字段。運行查詢后的結果返回6.2.6雜項的設置
經過以上五個步驟,基本上已生成了一個比較全面的查詢。接下來還可以通過查詢設計器中的“雜項”選項卡做最后處理。單擊“雜項”選項卡,可以看到其間包括“無重復記錄”、“交叉數據表”、“全部”、“百分比”這四個復選框和一個微調按鈕。選中“無重復記錄”復選框表示對于查詢結果如果存在重復記錄,則只取相同記錄中的一個。選中此項,在查詢生成器的SQL語句中會自動加上限定詞Distinct,表示去掉重復記錄。當輸出的字段只有三項時,“交叉數據表”復選框為可選狀態,否則為不可選狀態。選中“交叉數據表”復選框表示將查詢的結果以交叉表的形式傳遞給其它報表或表。三項查詢字段分別表示X軸、Y軸和圖形的單元值。如,在本示例中,將前面已加入到“選定字段”中的Student.學號字段移去,并按Student.姓名、Courses.課程名稱和Grade.課程成績的順序調整字段在“選定字段”列表框中的順序,然后在“雜項”選項卡中選中“交叉數據表”,同時將“分組依據”中的“Grade.課程代號”取消,其它設置不變。從圖中可以看到“交叉數據表”成為了可選。現選中“交叉數據表”項,如圖:設置返回6.2.7定向輸出查詢結果
查詢檢索的信息,可以輸出到不同的目的地,以用作不同的用途。如果沒有選定輸出的目的地,查詢結果將顯示在瀏覽窗口中。查詢輸出目的可以是瀏覽窗口、臨時表、表、圖形、屏幕、報表、標簽等。選擇結果的去向方法如下:單擊“查詢設計器工具”中的【查詢去向】按鈕,或者從【查詢】菜單中選擇【查詢去向】,可看到如圖所示的“查詢去向”對話框。對話框中的按鈕含義如下:【瀏覽】:在瀏覽窗口中顯示查詢結果,這是查詢缺省設置;【臨時表】:將查詢結果存儲在一個臨時只讀表中。多次查詢的結果可放在不同的表內。該表可用于瀏覽數據,制作報表等,直到用戶關閉它們;【表】:將查詢的結果保存在一個命名的表(.DBF)中,此時查詢的結果是真正的存放到磁盤上的,多次查詢的結果可放在不同的表內;【圖形】:使查詢結果可用于MicrosoftGraph(包含在VFP6中的一個獨立的應用程序)中制作圖表;【屏幕】:在VFP6主窗口或當前活動輸出窗口中顯示查詢結果;【報表】:將輸出送到一個報表文件(.FRX)中;【標簽】:將輸出送到一個標簽文件(.LBX)中。選定一個去向,按一定的步驟設置一些屬性,然后單擊【確定】按鈕,系統就將按意圖放置查詢結果。假設本例將查詢結果保存到臨時表中,取臨時表名為“查詢1”。返回6.2.8運行查詢
在完成了查詢的設計工作并指定了結果輸出去向后,可通過以下五種方式之一運行查詢:■在查詢設計器區域內單擊右鍵,在彈出菜單中選擇“運行查詢”;■在“項目管理器”中選定查詢的名稱,然后選定“運行”按鈕;■在“查詢”菜單中選擇“運行查詢”:■在命令窗口中鍵入DO查詢名.qpr。■單擊系統常用菜單上的“運行”按鈕。本例中按前述步驟設置后,單擊系統菜單上的“運行”按鈕運行交叉表查詢,并將查詢結果保存到臨時表“查詢1”中,然后再在瀏覽窗口中單擊【顯示】|【瀏覽“查詢1”】,結果如右表。返回6.3創建視圖
6.3.1創建本地視圖6.3.2創建遠程視圖返回退出6.3.1創建本地視圖
視圖可以通過向導和設計器兩種方法來創建。1、利用向導創建本地視圖用本地視圖向導創建本地視圖,可采取以下方式:方式一:(1)在主窗口下打開【工具】菜單,選擇【向導】菜單命令。(2)再選擇【全部】菜單,出現【向導選取】對話框,如圖單擊滑動按鈕選擇“本地視圖向導”單擊【確定】進入到“本地視圖向導‘步驟1——字段選取’”方式二:(1)在主窗口下打開【文件】菜單,選擇【新建】菜單命令。(2)選擇“視圖”,再單擊【向導】,將彈出【本地視圖向導】對話框。(3)然后按照向導屏幕上的指示操作。方式三:(1)在項目管理器中選定數據庫。(2)選定本地視圖,單擊【新建】按鈕。(3)單擊【視圖向導】按鈕(4)然后按照向導屏幕上的指示操作。方式四:(1)打開數據庫設計器,打開【數據庫】菜單。(2)選擇【新建本地視圖】,再單擊【視圖向導】按鈕。(3)然后按照向導屏幕上的指示操作。本地視圖向導:步驟1——字段選取說明:按照上述幾種方式,可以快速建立本地視圖,但要強調的是,在項目管理器中創建或使用視圖時,項目管理器會自動打開數據庫。如果要使用項目以外的表或視圖,則必須先打開數據庫或事先確認數據庫在作用范圍內。本地視圖向導對話框如圖,可以看到,創建視圖大體要經過以下步驟:(1)字段選取。選擇數據庫,數據庫中的表和表中的字段。如果當前已經打開了一個數據庫,則第一步的對話框中顯示的是創建當前數據庫的視圖,也可以選擇其它的數據庫。(2)關聯表。建立數據庫中表與表之間的關系。(3)包含記錄。指定包含表中的全部記錄還是僅匹配的記錄。(4)篩選記錄。選定符合條件的記錄。(5)排序記錄。為選定的記錄按照某一字段進行排序。(6)限定記錄。定制顯示一定數量的記錄。(7)完成視圖。選擇保存視圖后瀏覽還是修改。例:創建包含Grade表和Courses表的本地視圖“視圖1”。選擇表Grade單擊全部添加按鈕選擇Courses表單擊單個添加按鈕,添加課程名、學時數、學分數字段選擇完成后,單擊【下一步】,步驟2——為表建立關系。本地視圖向導:步驟2——為表建立關系父表字段選擇下拉選擇框子表字段選擇下拉選擇框說明:在這一步要建立用來建立本地視圖的表間的關系。1、先在父表字段選擇下拉選擇框中選擇要用來建立關系的主關鍵字;2、再在子表字段選擇下拉選擇框中選擇用來建立關系的子表關鍵字;3、單擊【添加】,將設定關系添加到關系列表框中。上面的字段符合要求,單擊【添加】關系設置完成后單擊【下一步】進入到步驟2a——字段選取對話框。本地視圖向導:步驟2a——字段選取生成的本地視圖中只包含表中關系相匹配的記錄,對應于關系中的內聯接的設置結果。生成的本地視圖中包含Grade表中的全部記錄和子表中關鍵字段相匹配的記錄,對應于關系中的左聯接的設置結果。生成的本地視圖中包含Courses表中全部記錄和父表中關鍵字段相匹配的記錄,對應于關系中的右聯接的設置結果。生成的本地視圖中包含表中所有的記錄,對應于關系中的完全聯接的設置結果。本例中選用默認值:僅包含匹配的行。然后單擊【下一步】,進入步驟3——篩選記錄。本地視圖向導:步驟3——篩選記錄說明:本地視圖向導的篩選記錄與查詢向導的篩選記錄的方式類似。在本例中不篩選記錄。單擊【下一步】,進入到本地視圖向導的步驟4——排序記錄。本地視圖向導:步驟4——排序記錄
說明:在這一步中設置在本地視圖的記錄順序。本例中可先按“學號”排序,學號相同的再按“課程代號”排序。操作方法與建立查詢的記錄排序方法相同。先在“可用字段”列表框中選擇“學號”,然后單擊【添加】,再選擇“課程代號”,再單擊【添加】如上圖。排序字段及順序設置后單擊【下一步】,進入本地視圖向導:步驟4a——限制記錄。本地視圖向導:步驟4a——限制記錄限制記錄的方法與建立查詢的限制記錄的方法完全相同。在本例中仍保持在本地視圖中包含所有的記錄,因而取默認值,直接單擊【下一步】,進入本地視圖向導:步驟5——完成。在第5步中的操作方法也與建立查詢的方法相同,現選擇“保存本地視圖并瀏覽”,然后單擊【完成】。彈出“視圖名”對話框。在“視圖名”文本框中輸入“視圖1”。輸入視圖名后單擊【確認】按鈕,系統顯示所建立的本地視圖的結果。本地視圖向導結束。2、利用視圖設計器創建本地視圖通過本地視圖向導建立數據庫視圖雖然方便,快捷,但這僅對入門者如此,何況用視圖向導建立數據庫視圖最終還要依賴視圖設計器。因此,傾向獨立進行開發的程序員來說,僅僅學會使用向導是遠遠不夠的,還應學會使用視圖設計器的強大功能來創建視圖。(1)
進入視圖設計器進入視圖設計器的方法與進入查詢設計器的方法基本相同,下面以新建視圖的方式進入視圖設計器。啟動視圖設計器方法新建一個視圖可按以下步驟進入視圖設計器:■選擇【文件】|【新建】命令,單擊“視圖”單選框,再單擊【新建文件】按鈕。■在數據庫設計器中,選擇【數據庫】|【新建本地視圖】或單擊數據庫設計器的快捷菜單中的【新建本地視圖】|【新視圖】按鈕。■在項目管理器中,單擊“數據”選項卡,在列表框中選定“本地視圖”,再單擊【新建】按鈕,單擊【新建視圖】按鈕。修改一個視圖可按以下步驟進入視圖設計器:■在數據庫設計器窗口中,單擊選定需要修改的視圖,選擇【數據庫】|【修改】命令。■在數據庫設計器窗口中,右擊需要修改的視圖,在出現的快捷菜單中選擇【修改】命令。■在項目管理器中,單擊【數據】選項卡,在列表框中選定需要修改的視圖,單擊【修改】按鈕。“視圖設計器”工具欄說明添加表移去表添加聯接顯示SQL窗口最大化上部窗格添加表:顯示“添加表或視圖”對話框,從而可以向設計器窗口添加一個表或視圖移去表:從設計器窗口的上窗格中移去選定的表。添加聯接:在視圖中的兩個表之間創建聯接條件顯示/隱藏SQL窗口:顯示或隱藏建立當前視圖的SQL語句最大化/最小化上部窗口:放大或縮小視圖設計器的上窗格(2)從表中選擇所需字段在進行本地視圖設計器之前,先建立Classzc表和Department表,表結構和數據如下:通過上述方式之一打開視圖設計器,在進入設計器之前,需要選定數據庫和表,現選定GXGLXT數據庫,如右圖:從中選定表Classzc并單擊【添加】按鈕,然后單擊【關閉】按鈕,啟動視圖設計器。視圖設計器進入視圖設計器后,第一步先需要選定字段,選定字段可直接通過字段選項卡進行。其操作方法與查詢設計器中選擇字段的方法相同。從“可用字段”列表框里選定Classzc.班級簡稱字段,單擊【添加】按鈕或雙擊該字段,則Classzc.班級簡稱字段將會出現在右邊的“選定字段”列表框中。本次建立的視圖里,還需要選定Classzc.學習性質、Classzc.學制二個字段。它們選定的方法與選定Classzc.班級簡稱字段一樣。如果需選定字段是“可用字段”列表框中的所有字段,可以單擊【全部添加】按鈕,這樣就把所有字段添加到了“選定字段”列表框中去了,可以通過【移去】按鈕將其移出來。如果需要全部移出,可以利用【全部移去】按鈕快速移出。要將表中的字段添加到“選定字段”列表框中,除了上述方法外,還可以將鼠標指向視圖設計器上部窗口中的表窗口中的字段上,按住鼠標左鍵或右鍵拖動一個字段到“選定字段”列表框,該字段就被加入到了“選定字段”列表框中。還可以通過雙擊字段名將其加入到“選定字段”列表框。表窗口中的*代表表中的全部字段,它也是可以拖動或雙擊的。若要從“選定字段”列表框中移去字段,也可以使用鼠標拖動或雙擊。“字段”選項卡還有一個【屬性】按鈕和一個“函數和表達式”文本框。只要“選定字段”列表框中有一個值,【屬性】命令按鈕就成為可選的了。選擇【屬性】后,出現圖:屬性設置可分為五種類型:字段有效性、顯示、匹配字段到類、數據匹配和注釋。其中字段有效性、顯示、匹配字段到類和注釋在第3章中介紹數據表設計時已經作過說明,視圖設計和數據表設計在字段屬性上基本類似。“函數和表達式”文本框及其按鈕:“函數和表達式”文本框用于輸入一個函數和表達式,具體操作只需單擊“函數和表達式”文本框后的對話按鈕,在隨后出現的表達式生成器中書寫函數或表達式。此選項的功能是為了生成一個虛擬的字段。后面的創建步驟與本章前述的用查詢設計器設計查詢相似,在此不一一闡述。(3)建立多表關聯前面主要是針對單一的本地表建立視圖,雖然很容易,但它的實際功能不大。因為在實際開發中,系統的數據庫很復雜,表的關聯性很強,用戶關心的往往是一些復雜的數據,因此需要建立多表視圖。從定義上講,多表視圖指的是:視圖中的字段來源于兩個或兩個以上的表。但是,在視圖中表間的關系既不像數據庫中的關系是永久的,也不像表中的關系是暫時的,它不靠索引字段進行聯接,而是通過定義一個聯接表達式來進行聯接,表間的關系是松散的。可以按如下辦法建立表間的聯接:■在視圖設計器中單擊“聯接”選項卡即可設置多表間的關聯。■在“添加表或視圖”對話框中,選定表后,單擊【添加】按鈕,當視圖設計器中的表在兩個及以上時,視圖設計器就會為選定的表建立關聯。說明:用以上的方法建立多表關聯,必須有多個表添加到了視圖設計器中。后續的操作方法與設計多表查詢相似,除不同點外,相同的部分這里不再講述。下面我們來建立表Department、Classzc、Student、Courses和Grade五表之間的關聯的視圖,起名為視圖3。(4)與設計多表查詢不相同的部分——更新條件視圖的最大特點在于能用視圖更新數據,這也是建立視圖與建立查詢的主要區別,也是視圖的重點所在。視圖設計器中的“更新條件”選項卡可以用來設置允許視圖更新表字段的條件。“更新條件”選項卡選項包括如下內容:■“表”:指定視圖所使用的哪些表可以修改。選擇這個下拉列表框中的選項,可以確定哪些表中的字段可以在“字段名”列表框中,以便設置更新條件。此列表中所顯示的表都包含了“字段”選項卡“選定字段”列表中的字段。■【重置關鍵字】:這個按鈕作用是從每個表中選擇主關鍵字字段作為視圖的關鍵字字段。每個主關鍵字字段是在“字段名”列表中的、在鑰匙符號下面打一個對鉤的字段,關鍵字字段可可用來使視圖中的修改與表中的原始記錄相匹配。■【全部更新】:可以從字段名文本框中看到一些字段前的鉛筆符號下打了一個對鉤,這表明這些字段可以更新。在這個按鈕中可以選擇除了關鍵字字段以外的所有字段來進行更新,并在“字段名”列表的鉛筆符號下打一個對鉤。■“發送SQL更新”:指定是否將視圖記錄中的修改傳送給原始表。如果選擇了這個復選框,將把在視圖中對記錄字段的修改返回到源表中。■“字段名”列表框:顯示了從“表”列表框中所選的表中的字段、并用來輸出這些字段,不過這些字段都是可以更新的。在字段文本框中共有下列3種方式字段:●關鍵字段(使用鑰匙符號作標記),指定該字段是否為關鍵字段。●可更新字段(使用鉛筆符號作標記),指定該字段是否為可更新字段。●字段名,顯示可標志為關鍵字字段或可更新字段的輸出字段名。
■“SQLWHERE子句包括”:●“關鍵字段”:如果在原始表中有一個關鍵字字段被改變,設置WHERE子句來檢測沖突,對于由另一用戶對表中原始記錄的其他字段所做修改不進行比較。●“關鍵字和可更新字段”:設置WHERE子句來檢測由某一用戶修改了任何可更新的字段的沖突。●“關鍵字和已修改字段”:如果從視圖首次檢索(默認)以后,關鍵字字段或原始表記錄的已修改字段中,某個字段做過修改,設置WHERE子句來檢測沖突。●“關鍵字段和時間戳”:如果自原始表記錄的時間戳首次檢索以后,它被修改過,設置WHERE子句來檢測沖突。只有當遠程表有時間戳列時,此選項才有效。■“使用更新”:此單選按鈕組用于指定字段如何在后端服務器上進行更新。●“SQLDELETE然后INSERT”:指定先刪除原始表記錄后,再創建一個新的在視圖中被修改的記錄。●“SQLUPDATE”:指定用視圖字段中的內容來修改原始表中的字段。具體說明如何設置更新條件詳見6.5在視圖中更新數據。返回6.3.2創建遠程視圖
1、用視圖向導創建遠程視圖創建使用遠程數據(ODBC)的視圖,必須存在一個數據庫來保存視圖,同時還需要存在數據源或命名連接。如果沒有打開數據庫,系統將提示打開數據庫或創建數據庫。在運行“遠程視圖向導”之前,可以在“選項”對話框的“遠程數據”選項卡上設置遠程視圖和連接的默認選項。也可以在“連接設計器”中創建連接。如果要利用遠程視圖向導創建遠程視圖,則選擇【文件】|【新建】命令,在彈出的新建對話框中選中遠程視圖,然后單擊【向導】按鈕。就會進入遠程視圖向導對話框中。或者在數據庫設計器工具欄中單擊【新建遠程視圖】按鈕,選擇使用向導。創建遠程視圖主要有以下步驟:1、
數據源選取2、
字段選取3、
為表建立關系4、
包含記錄5、
排序記錄6、
篩選記錄7、
完成在第一步數據源選取中,可以在可用的數據源列表框中選擇一種ODBC數據源或者一個已經建立的連接。如果選擇的是一種未連接任何數據源的ODBC數據源,系統將顯示一個“確認連接”對話框,從中選擇一個數據源。當選擇的VFPTables或VFPDatabases時,會打開建立數據源對話框。在此對話框中為數據庫選擇一種類型,同時在Path中輸入遠程數據源的文件名或者使用【Browse】按鈕選擇一個文件作為遠程數據源。選擇數據源以后,向導就會進入下一步,以后的步驟與本地視圖及創建查詢沒有太大的差別,在此不再贅述。2、利用視圖設計器創建遠程視圖創建新的遠程視圖首先必須要有同數據源的連接。在數據庫設計器中單擊鼠標右鍵選擇【新建遠程視圖】或者在【文件】下的【新建】命令,在新建對話框中選擇遠程視圖,并單擊【新建文件】按鈕。此時會顯示選擇連接或數據源對話框,在此對話框中選擇連接或者可用的數據源。如圖。如果已經存在定義的連接,該對話框中就顯示所定義的連接。如果要定義新的連接,可單擊【新建】按鈕,出現圖示的“連接設計器”。在數據源下面的下拉選項框中選擇VisualFoxProDatabase項,其它項均采用系統默認設置,然后選擇【驗證連接】按鈕。如果為這個連接指定了一個數據庫,則會出現“連接成功”的提示信息,否則,將出現如圖所示的連接配置(ConfigureConnection)對話框。在該對話框中選擇【Browse】后將出現圖示的“選擇數據庫”(SelectDatabase)對話框。在此對話框中可以選擇本地存在的數據庫或網上鄰居中設置為共享的數據庫。然后選擇【打開】,就會在“連接配置ConfigureConnection”對話框中“Path”后的文本框中加入所添加的數據庫文件名及其所在的路徑,如“\\092\FOXPRO上機操作\Visualfp.dbc”。然后按【OK】,系統會告訴“連接成功”。然后再在“連接設計器”中單擊【確定】,接著彈出“保存對話框”,默認的連接名為“連接1”,可以采用默認的連接名,也可以重命名連接名,再單擊【確定】。在保存連接后,“遠程視圖設計器”進入“打開”對話框。在視圖設計器中對加入的表創建遠程視圖的操作與建立本地視圖的操作一樣,此處不再贅述。3、
控制如何檢查更新沖突如果在一個多用戶環境中工作,服務器上的數據也可以被別的用戶訪問,也許別的用戶也在試圖更新遠程服務器上的記錄,為了讓VFP檢查用視圖操作的數據在更新之前是否被別的用戶修改過,可使用更新條件選項卡上的選項。在更新條件選項卡中,SQLWHERE子句包括框中的選項可以幫助管理遇到多用戶訪問同一數據時應如何更新記錄。在允許更新之前,VFP先檢查遠程數據源表中的指定字段,看看它們在記錄被提取到視圖中后有沒有改變,如果數據源中的這些記錄被修改,就不允許更新操作。在“更新條件”選項卡中可以設置SQLWHERE子句。這些選項決定哪些字段包含在UPDATE或DELETE語句的WHERE子句中,VFP正是利用這些語句將在視圖中修改或刪除的記錄發送到遠程數據源或源表中,WHERE子句就是用來檢查自從提取記錄用于視圖中后,服務器上的數據是否已改變。關鍵字段:當源表中的關鍵字段被改變時,使更新失敗。關鍵字和可更新字段:當遠程表中任何標記為可更新的字段被改變時,使更新失敗。關鍵字和已修改字段:當在本地改變的任一字段在源表中已被改變時,使更新失敗。關鍵字和時間戳:當遠程表上記錄的時間戳在首次檢索之后被改變時,使更新失敗(僅當遠程表有時間戳列時有效)。4、定制視圖同本地視圖一樣,可以在遠程視圖中包含表達式,設置提示輸入值,也可以設置高級選項來協調與服務器交換數據的方式(1)控制更新方法若要控制關鍵字段的信息實際上在服務器上更新的方式,可使用視圖設計器中更新條件選項卡中“使用更新”中的選項。如圖當記錄中的關鍵字更新時,這些選項決定發送到服務器或源表中的更新語句使用什么SQL命令。可指定先刪除記錄,然后使用在視圖中輸入的新值取代原值(SQLDELETE然后INSERT),也可指定使用服務器支持的SQLUPDATE函數來改變服務器的記錄。(2)在遠程視圖中添加表達式若要在視圖中添加表達式,可在“篩選”選項卡中,從“字段名”框中選擇“表達式”。當視圖基于遠程數據源時,在“表達式設計器”中顯示的函數反映了服務器所支持的函數。可以查看服務器文檔中列出的該服務器所支持的函數列表,VFP不對構造的表達式作語法分析,而是將它們發送到遠程服務器上。5、
建立連接使用遠程視圖,無需將所有記錄下載到本地計算機上即可提取遠程ODBC服務器上的數據子集。可以在本地機上操作這些選定的記錄,然后把更改或添加的值返回到遠程數據源中。有兩種連接遠程數據源的方法,可以直接訪問在機器上注冊的ODBC數據源,也可以用連接設計器設計自定義連接。在安裝VFP時,選擇VFP的“完全”或“自定義”安裝選項,就可以把ODBC安裝在系統中。如果想為服務器創建定制的連接,可以使用連接設計器,創建的連接將作為數據庫的一部分保存起來,并含有如何訪問特定數據源的信息。使用連接設計器能夠創建并修改命名連接。因為連接是作為數據庫的一部分存儲的,所以僅在有打開的數據庫時才能使用連接設計器。連接設計器對話框中有如下選項:(1)指定的數據源■數據源、用戶標識、密碼指定VFP顯示以下三個框:●數據源:允許從已安裝的ODBC數據源列表中選擇一個數據源。●用戶標識:如果數據源需要用戶名稱或標識,允許鍵入。●密碼:如果數據源需要密碼,允許鍵入密碼。●數據庫:可以選擇一個數據庫,作為所選數據源連接的目標。■連接串:指定VFP顯示連接串文本框,可在其中鍵入連接串。選擇對話按鈕,顯示選擇連接或數據源對話框,如圖所示。可以選擇現有文件或機器數據源。■【驗證連接】:可以對那些剛輸入了內容的連接進行檢查。如果連接成功,則顯示對話框提示此消息;如果連接失敗,則出現錯誤信息。如果沒有對話指定內容,則顯示選擇數據庫對話框,從中選擇數據源。前文已作介紹。■【新建數據源】:顯示“DataSources”對話框,可以在其中添加、刪除或配置數據源。前文已作介紹。(2)顯示ODBC登錄提示●未指定登錄信息時顯示:如果在命名連接定義中未存儲用戶標識和密碼,則VFP用“ODBC數據源注冊”對話框提示用戶。●總顯示:指定VFP總是使用“ODBC數據源注冊”對話框提示用戶,該框允許用戶使用與存儲在命名連接中不同的注冊ID和密碼。●從不顯示:指定VFP從不提示用戶。此選項確保更高的安全性。(3)數據處理此選項與用戶用DBSETPROP()函數設置的連接屬性相對應。■異步執行:指定異步連接。此選項與Asynchronous連接屬性相對應。■顯示警告信息:指定顯示不可捕獲警告。此選項與Dispwarning連接屬性相對應。■批處理:指定以批處理方式進行連接操作。此選項與BatchMode連接屬性相對應。■自動事務處理:指定自動執行事務處理。此選項與Transactions連接屬性相對應。■包大小:當和遠程數據位置之間傳送信息時,可以指定傳送信息網絡包的大小(以字節為單位)。在下拉列表中選擇或鍵入一個值。(4)超時間隔這些選項設置連接屬性的值,也可用DBSETPROP()函數設置。■連接(秒):以秒為單位指定連接超時時間間隔。此選項與ConnectTimeout連接屬性相對應。■查詢(秒):以秒為單位指定查詢超時時間間隔。此選取項與QueryTimeout連接屬性相對應。■空閑(分鐘):以分鐘為單位指定空閑超時時間間隔。在指定的時間間隔后,活動連接變為不活動。此選項與IdleTimeout連接屬性相對應。■等待時間(毫秒):以毫秒為單位指定在VFP確定SQL語句是否執行完畢之前經過的時間。此選項與WaitTime連接屬性相對應。返回6.4數據庫視圖的操作6.4.1使用視圖退出6.4.2、顯示視圖結構6.4.3、重新命名視圖6.4.4刪除視圖6.4.5創建視圖索引6.4.6創建參數化視圖返回6.4.7利用視圖更新數據6.4.1使用視圖
建立視圖后,不但可以用它來顯示和更新數據,而且還可以通過調整它的屬性來提高性能。處理視圖類似處理表,可以:■使用USE命令并指定視圖名來打開一個視圖。■使用USE命令關閉視圖。■在【瀏覽】窗口中顯示視圖。■在【查看】窗口中顯示已打開的視圖的別名。■將視圖作為數據源,供表單或表格控件使用。若要使用一個視圖,可采取如下方法:■在項目管理器中先選擇一個數據庫,再選擇視圖名,然后單擊【瀏覽】按鈕,在【瀏覽】窗口中顯示視圖。■使用編程的方式訪問視圖。下面的代碼在【瀏覽】窗口中顯示存放在c:\gxglxt目錄下gxglxt數據庫中的視圖1:opendatabasec:\gxglxt\gxglxtuse視圖1browse在使用一個視圖時,視圖將作為臨時表在自己的工作區打開。如果此視圖基于本地表,則VFP6會在另一個工作區同時打開基表。如果沒有打開任何表,或先執行CloseAll命令后再執行以上命令,則視圖1在工作區1打開,而其基表則在工作區2打開。要查看基表,可以通過選擇系統菜單上的【窗口】|【數據工作期】打開“數據工作期”窗口。但有一個例外,如果視圖是基于遠程表,則基表將不在工作區中打開。而只在【查看】窗口中顯示遠程視圖的名稱。返回有時用戶只想了解視圖的結構,而不關心視圖中的數據。這樣可以使用帶NODATA子句的USE命令來快速顯示視圖的結構。例如:opendatabasec:\gxglxt\gxglxtuse視圖1nodatain0Select視圖1browse通過運行上面的命令語句,將在【瀏覽】窗口中看到沒有記錄的視圖1。因為使用NODATA子句時,VFP6為視圖1創建一個永遠返回.F.值的WHERE子句,而數據源上沒有記錄匹配WHERE子句的條件,所以沒有記錄被選擇。6.4.2、顯示視圖結構返回6.4.3、重新命名視圖
建立一個視圖以后,還可以為其重新命名視圖,進行視圖的重新命名,可以使用項目管理器或用RENAMEVIEW命令。■在項目管理器中先選擇一數據庫,再右擊要重新命名的視圖。單擊【重命名】按鈕,出現一對話框后即可為視圖輸入新的名稱。■使用RENAMEVIEW命令。例如,下面的代碼將視圖2重新命名為視圖1:renameview視圖1to視圖2說明:在重新命名視圖之前,必須打開包含要命名視圖的數據庫。6.4.4刪除視圖
視圖同表一樣也是可以刪除的,刪除視圖可以使用項目管理器或使用DELETEVIEW命令。■在項目管理器中選擇一個數據庫,再選擇要刪除的視圖,然后用鼠標右擊,單擊【移去】按鈕,即可刪除所選的視圖。返回■使用DELETEVIEW命令。例如,如果要刪除數據庫xsglxt中的視圖2,可以鍵入以下的命令語句:deleteview視圖2說明:在刪除視圖之前,必須打開包含要刪除視圖的數據庫并設置其為當前數據庫。
6.4.5創建視圖索引
同為表建立索引一樣,也可以為視圖建立索引。但與表不同的是,在視圖上創建的本地索引不能永久保存,它們隨著視圖的關閉而消失。為視圖建立本地索引,可以使用INDEXON命令。關于該命令的參數,在創建表的索引時已有介紹。另有一點需要注意的是,在決定是否在視圖上建立索引時,要考慮視圖結果集合的大小。對于一個大的結果集合來說,索引要花費很長的時間,并可能降低視圖的性能。因此,要根據實際情況處理。返回6.4.6創建參數化視圖
VFP可以創建具有提示輸入值來查詢信息的視圖,稱為參數化視圖,這樣的視圖具有更大的靈活性和更強的適應性。可避免每取一部分記錄值就要建立視圖的情況。可用以下方法創建參數化視圖:(1)打開視圖設計器,從【查詢】菜單中選擇【視圖參數】命令,此時系統彈出視圖參數對話框,如圖(2)在視圖參數對話框中輸入參數名及其數據類型。此例中建立一個名為“系部代號”的視圖參數,此視圖參數可以任意取,但數據類型要和所要查詢的記錄類型一致。參數名可以是字母字符、數字和單引號的任意組合。(3)按下確定按鈕,就為此視圖建立了一個視圖參數了。下面設計一個帶參數的視圖(視圖4):(1)打開“視圖設計器”,選定表Classzc、Student、Course和Grade四個表,并選取.Classzc.系部代號、Classzc.班級名稱、Student.學號、Student.姓名、Course.課程名、Grade.開課學期、Grade.課程成績這7個字段名作為輸出字段。(2)在“篩選”選項卡中的“字段名”下拉列表框中選擇Classzc.系部代號,在“條件”列表框中選定“=”,在“實例”文本框中輸入“?系部代號”。這個問號表示引用一個表達式所需要的參數。問號后的文字標識了這個參數的名稱。同時還可以設定如“Grade.開課學期=‘?開課學期’”。(3)選擇【查詢】|【視圖參數】,進入“視圖參數”對話框,在“參數名”文本框中輸入參數名稱“系部代號”,在“類型”下拉列表框中選定參數的類型為“字符型”,同樣還輸入“開課學期”、“字符型”,然后單擊【確定】按鈕。(4)通過選擇【查詢】|【運行查詢】命令,或通過單擊鼠標右鍵再選擇【運行查詢】命令,系統彈出如圖所示的視圖參數對話框。在此對話框中可以輸入將要查詢的參數的某一具體數值,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 深入分析項目管理考試知識的相互關聯性試題及答案
- 注冊會計師考試2025年實務操作考查試題及答案
- 新冠病毒檢測的微生物檢驗試題及答案
- 理財師在家庭理財中的角色試題及答案
- 行政管理師考試自我檢測方法分享試題及答案
- 2025年特許金融分析師外匯風險管理試題及答案
- 2025年證券從業資格證考試思路分析試題及答案
- 寧夏固原市本年度(2025)小學一年級數學部編版摸底考試((上下)學期)試卷及答案
- 2025年證券從業資格考試核心知識試題及答案
- 初中英語課題申報書
- 大學物理(一)智慧樹知到答案章節測試2023年湖南大學
- 道德與法治項目化學習案例
- GB/T 311.2-2013絕緣配合第2部分:使用導則
- C語言期末考試試題南昌航空大學
- 取消訂單協議模板(5篇)
- 東風天錦5180勾臂式垃圾車的改裝設計
- 浦發銀行個人信用報告異議申請表
- 施工進度計劃網絡圖-練習題知識講解
- 防孤島測試報告
- 按摩常用英語
- midas NFX使用指南(八)
評論
0/150
提交評論