小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

第6章? 如何獲取數(shù)據(jù)庫(kù)中的數(shù)據(jù)

 悟靜 2009-06-16

第6章  如何獲取數(shù)據(jù)庫(kù)中的數(shù)據(jù)

教學(xué)內(nèi)容:

   6.1  案例引入——從商品信息管理數(shù)據(jù)庫(kù)中獲取數(shù)據(jù)

   6.2  查詢商品信息管理數(shù)據(jù)庫(kù)

   6.3  應(yīng)用SELECT—SQL命令進(jìn)行查詢

   6.4  視圖方法查看商品信息管理數(shù)據(jù)庫(kù)

教學(xué)時(shí)間:

   第九、十周

教學(xué)方法:

   演示文稿演示教學(xué)和實(shí)際操作演示教學(xué)相結(jié)合

教學(xué)目的:

   本章介紹數(shù)據(jù)庫(kù)及自由表一個(gè)重要應(yīng)用——查詢和視圖。查詢和視圖是根據(jù)用戶的需要從數(shù)據(jù)庫(kù)或自由表中按一定要求選擇出部分?jǐn)?shù)據(jù)及計(jì)算統(tǒng)計(jì)組成一個(gè)虛擬數(shù)據(jù)表。查詢(Query)是從數(shù)據(jù)庫(kù)或自由表中檢索或統(tǒng)計(jì)出所需數(shù)據(jù)。視圖(View)除具有查詢所有的檢索、統(tǒng)計(jì)功能外,還可以改變視圖中記錄值以及源數(shù)據(jù)庫(kù)或自由表的值。

教學(xué)重點(diǎn)難點(diǎn):

   1、建立、使用、修改查詢

   2、應(yīng)用SELECT—SQL命令進(jìn)行查詢

   3、建立、使用、修改視圖

教學(xué)過(guò)程:

   Visual FoxPro 提供了查詢和視圖的工具: 查詢?cè)O(shè)計(jì)器和視圖設(shè)計(jì)器。通過(guò)查詢?cè)O(shè)計(jì)器和視圖設(shè)計(jì)器進(jìn)行設(shè)計(jì),使用戶很方便地從數(shù)據(jù)庫(kù)或自由表中檢索及統(tǒng)計(jì)出所需要的數(shù)據(jù)。

   查詢(Query)是從數(shù)據(jù)庫(kù)或自由表中檢索或統(tǒng)計(jì)出所需數(shù)據(jù)。視圖(View)除具有查詢所有的檢索、統(tǒng)計(jì)功能外,還可以改變視圖中記錄值以及源數(shù)據(jù)庫(kù)或自由表的值。

6.1  案例引入——從商品信息管理數(shù)據(jù)庫(kù)中獲取數(shù)據(jù)

   建立數(shù)據(jù)庫(kù)表或自由表后,在數(shù)據(jù)表中保存了大量數(shù)據(jù),如何靈活使用這些數(shù)據(jù),是充分利用數(shù)據(jù)資源、提高管理水平的一個(gè)重要問(wèn)題。在實(shí)際應(yīng)用中用戶常常需要根據(jù)要求選擇其中一部分?jǐn)?shù)據(jù)構(gòu)成所需的新的數(shù)據(jù)組合。如員工表yg.dbf,表中有6個(gè)字段: 員工編號(hào)ygbh、姓名xm、性別xb、基本工資jbgz、職務(wù)zw和密碼mm。員工表中的部分記錄內(nèi)容顯示在表6-1中。

   <參見(jiàn)教材P1676--1>

   利用員工表yg.dbf中的記錄數(shù)據(jù),選擇其中的部分?jǐn)?shù)據(jù)構(gòu)成各種不同的表。如選擇員工編號(hào)ygbh、員工姓名ygxm、性別xb、職務(wù)zw等字段列出表6-2所示數(shù)據(jù)。

   <參見(jiàn)教材P1686--2>

   又如選擇列出所有女職工的數(shù)據(jù)表6-3。

   <參見(jiàn)教材P1686--3>

   還可以用多個(gè)表中的數(shù)據(jù)構(gòu)成新的表,使用員工表yg.dbf和銷售情況表xsqk.dbf構(gòu)成員工的銷售情況表ygxsqk.dbf,如表6-4所示。表中選擇了員工表的員工編號(hào)yg.ygbh、姓名字段yg.xm,選擇了銷售情況表的商品編號(hào)xsqk.spbh、銷售數(shù)量xsqk.xssl和總金額xsqk.zje等字段。多表之間的數(shù)據(jù)通過(guò)表之間的關(guān)系聯(lián)接。如列出員工的銷售情況,計(jì)算出每個(gè)員工的銷售總金額作為一輸出項(xiàng)。

   <參見(jiàn)教材P1696--4>

   從上面幾個(gè)表格的例子可知,開(kāi)發(fā)人員可以靈活使用數(shù)據(jù)庫(kù)中各表的數(shù)據(jù)組成不同需要的數(shù)據(jù)表,除了選擇字段還可以設(shè)置條件,如選擇性別是的記錄;也可以進(jìn)行統(tǒng)計(jì)計(jì)算,如計(jì)算出每位職工銷售商品的總的金額等。Visual FoxPro 為用戶提供了從數(shù)據(jù)表中按一定的條件獲取部分?jǐn)?shù)據(jù)的工具,有查詢視圖兩種。查詢視圖都是對(duì)數(shù)據(jù)表進(jìn)行檢索及統(tǒng)計(jì)出所需的數(shù)據(jù)。用視圖構(gòu)成的表可以視為一數(shù)據(jù)表保存在數(shù)據(jù)庫(kù)中,可對(duì)源數(shù)據(jù)表記錄進(jìn)行修改或直接被作為數(shù)據(jù)表引用。而用查詢構(gòu)成的表不能直接對(duì)源表進(jìn)行操作。查詢視圖對(duì)多個(gè)相關(guān)的數(shù)據(jù)表進(jìn)行檢索統(tǒng)計(jì)時(shí)顯得特別方便。查詢是通過(guò)查詢?cè)O(shè)計(jì)器、視圖通過(guò)視圖設(shè)計(jì)器進(jìn)行設(shè)計(jì)操作,在后面的幾節(jié)中將詳細(xì)介紹查詢視圖的操作方法。

6.2  查詢商品信息管理數(shù)據(jù)庫(kù)

   查詢?cè)O(shè)計(jì)器對(duì)數(shù)據(jù)表進(jìn)行各種查詢操作,獲得用戶所需要的不同結(jié)果。本節(jié)中通過(guò)對(duì)商品信息管理數(shù)據(jù)庫(kù)進(jìn)行查詢來(lái)介紹查詢?cè)O(shè)計(jì)器的操作。

 6.2.1  單表查詢日銷售商品情況

   對(duì)單個(gè)數(shù)據(jù)表進(jìn)行查詢,這里以商品信息管理數(shù)據(jù)庫(kù)中的銷售情況表xsqk.dbf獲得某一天的商品銷售情況為例,查詢?nèi)珍N售情況。所要選取的字段有:商品編號(hào)spbh、銷售數(shù)量xssl、總金額zje。 獲得某日商品銷售情況的操作如下:

   1. 打開(kāi)查詢?cè)O(shè)計(jì)器

 
 

     從項(xiàng)目管理器打開(kāi)查詢?cè)O(shè)計(jì)器。打開(kāi)項(xiàng)目管理器,在數(shù)據(jù)選項(xiàng)欄列表中選擇查詢項(xiàng)。再單擊新建按鈕,出現(xiàn)新建查詢對(duì)話框。在對(duì)話框中選擇新建查詢即打開(kāi)查詢?cè)O(shè)計(jì)器。如圖6-1所示。隨查詢?cè)O(shè)計(jì)器打開(kāi)的有查詢菜單和查詢?cè)O(shè)計(jì)器工具欄,如圖6-2所示。

 
 
 

   2. 添加數(shù)據(jù)表

     打開(kāi)查詢?cè)O(shè)計(jì)器后,一般將出現(xiàn)添加表或視圖對(duì)話框,如未出現(xiàn)添加表或視圖對(duì)話框時(shí),可選擇查詢?cè)O(shè)計(jì)器工具欄或執(zhí)行查詢菜單中的添加表命令打開(kāi)。添加表或視圖對(duì)話框如圖6-3所示。在對(duì)話框內(nèi)的數(shù)據(jù)庫(kù)欄和數(shù)據(jù)庫(kù)中的表欄中選擇所需的數(shù)據(jù)庫(kù)sp和銷售情況表xsqk.dbf。選擇了數(shù)據(jù)表xsqk.dbf后,單擊添加按鈕。將所需的表添加到查詢?cè)O(shè)計(jì)器,再單擊關(guān)閉按鈕,進(jìn)入查詢?cè)O(shè)計(jì)器。

                     6-3  “添加表或視圖對(duì)話框

   3. 選擇所需的輸出字段

     查詢?cè)O(shè)計(jì)器的下半部有多個(gè)選項(xiàng)卡,選擇字段選項(xiàng)卡。字段選項(xiàng)卡上包含了可用字段列表、選定字段列表和將字段從可用字段列表調(diào)入選定字段列表中的添加全部添加按鈕,以及將選定輸出的字段從選定字段列表中釋放回可用字段列表中的移去全部移去按鈕。可用字段列表中列出了可供選用的數(shù)據(jù)表字段,每個(gè)字段前面標(biāo)出了字段所屬的數(shù)據(jù)表。在查詢?cè)O(shè)計(jì)器可用字段列表中分別選擇商品編號(hào)xsqk.spbh、銷售數(shù)量xsqk.xssl、總金額xsqk.zje等字段,每選定一個(gè)字段后單擊添加按鈕,則將選定的字段一一添加到選定字段列表中。

   4. 設(shè)置篩選日期的條件

   案例中要求選擇某日的銷售情況,篩選條件通過(guò)篩選選項(xiàng)卡進(jìn)行設(shè)置,如圖6-4所示。在此選項(xiàng)卡中建立銷售日期xsqk.xsrq”字段的篩選關(guān)系: xsqk.xsrq=日期。如選擇20031029日的銷售情況。表達(dá)式則為:

   xsqk.xsrq={^2003/10/29}

   篩選選項(xiàng)卡中設(shè)置篩選條件的方法是: 表達(dá)式等號(hào)左邊的內(nèi)容列在選項(xiàng)卡的字段名欄中,單擊字段名右邊的下拉箭頭,出現(xiàn)所有的可選字段和一個(gè)<表達(dá)式…>項(xiàng)。

   如果表達(dá)式左邊選用的是字段,可直接在列表中單擊選用。如果還要構(gòu)成一定的表達(dá)式關(guān)系,則可選擇<表達(dá)式…>項(xiàng)。本例中的xsqk.xsrq可直接從字段名欄中選出。表達(dá)式等號(hào)右邊的內(nèi)容列在實(shí)例欄中。在條件欄中選擇“=”關(guān)系符號(hào)。

   5. 運(yùn)行查詢結(jié)果

   單擊工具欄中的運(yùn)行按鈕或選擇查詢菜單中的運(yùn)行查詢命令,以默認(rèn)的瀏覽狀態(tài)顯示出日銷售情況表,如圖6-5所示。

 6.2.2  多表查詢日銷售商品情況

 
 
 

   上面的查詢?nèi)珍N售商品情況是應(yīng)用一個(gè)數(shù)據(jù)表進(jìn)行查詢的,如果希望銷售商品情況表表達(dá)得更完善,這里可增加一個(gè)商品信息表spxx.dbf參與查詢,從中獲得商品名稱.spxx.spmc字段,使查詢結(jié)果更加直觀,如圖6-6所示?,F(xiàn)介紹多表的查詢操作。

  1. 打開(kāi)查詢?cè)O(shè)計(jì)器

   單擊文件菜單中的新建命令,在新建對(duì)話框中選擇查詢選項(xiàng),單擊新建文件按鈕,打開(kāi)查詢?cè)O(shè)計(jì)器。

  2. 添加數(shù)據(jù)表

   按工具欄添加表按鈕,打開(kāi)添加表或視圖對(duì)話框,在數(shù)據(jù)庫(kù)欄中選擇數(shù)據(jù)庫(kù)sp。從數(shù)據(jù)庫(kù)中的表欄中分別選擇商品信息表spxx.dbf和銷售情況表xsqk.dbf添加到查詢?cè)O(shè)計(jì)器中。

  3. 建立兩表的聯(lián)接關(guān)系

   查詢?cè)O(shè)計(jì)器中選擇聯(lián)接選項(xiàng)卡,建立商品信息表spxx和銷售情況表xsqk兩表的聯(lián)接關(guān)系: spxx.spbh=xsqk.spbh,如圖6-7所示。如果兩表在數(shù)據(jù)庫(kù)中已建立了永久關(guān)聯(lián)的關(guān)系,聯(lián)接選項(xiàng)卡中會(huì)自動(dòng)建立起聯(lián)接關(guān)系。

  4. 選擇輸出字段

   選擇字段選項(xiàng)卡。可用字段列表中列出了商品信息表spxx.dbf和銷售情況表xsqk.dbf兩表的全部字段。在其中分別選擇商品信息表spxx.dbf的商品編號(hào)spxx.spbh、商品名稱spxx.spmc字段和銷售情況表xsqk.dbf的銷售數(shù)量xsqk.xssl、總金額xsqk.zje字段添加到選定字段列表中。

  5. 設(shè)置篩選日期的條件

   篩選選項(xiàng)卡中建立銷售日期xsqk.xsrq字段的日篩選關(guān)系。同樣選擇表達(dá)式:

       xsqk.xsrq={^2003/10/29}

  6. 運(yùn)行查詢結(jié)果

   單擊工具欄中的運(yùn)行按鈕或選擇查詢菜單中的運(yùn)行查詢命令,出現(xiàn)如圖6-6所示的日商品銷售查詢情況表。

 6.2.3  查詢員工銷售業(yè)績(jī)情況

   通過(guò)查詢每個(gè)員工的銷售情況,表現(xiàn)每個(gè)員工的工作業(yè)績(jī)。本例中以月為時(shí)間單位查詢員工在某一月的銷售情況,需要用到銷售情況表xsqk.dbf和員工表yg.dbf。查詢操作如下

   (1) 打開(kāi)查詢?cè)O(shè)計(jì)器,添加銷售情況表xsqk.dbf和員工表yg.dbf。

   (2) 選擇輸出字段。選擇的字段應(yīng)該有: 員工編號(hào)xsqk.ygbh、姓名yg.xm、銷售金額小計(jì)。其中銷售金額小計(jì)是對(duì)每一個(gè)員工的當(dāng)月銷售總值進(jìn)行統(tǒng)計(jì)。

   銷售金額小計(jì)的設(shè)置: 銷售金額小計(jì)是按員工編號(hào)xsqk.ygbh對(duì)銷售總金額xsqk.zje字段進(jìn)行求和,求和計(jì)算表達(dá)式為SUM(xsqk.zje),并按員工編號(hào)分組計(jì)算。銷售金額小計(jì)的設(shè)置是使用查詢?cè)O(shè)計(jì)器字段選項(xiàng)卡中的函數(shù)和表達(dá)式生成。具體操作為

      單擊函數(shù)和表達(dá)式欄右邊的按鈕,出現(xiàn)表達(dá)式生成器對(duì)話框。

      在對(duì)話框的表達(dá)式欄中生成表達(dá)式: SUM(xsqk.zje)  AS  “銷售金額小計(jì)。 SUM()求和符號(hào)從表達(dá)式生成器的函數(shù)數(shù)據(jù)欄中選擇獲得,在函數(shù)數(shù)學(xué)欄中尋找到“SUM()求和符號(hào),雙擊該求和符號(hào),符號(hào)立即顯示到表達(dá)式欄中。

      來(lái)源于表欄中選擇銷售情況表xsqk。在字段欄中選擇總金額xsqk.zje字段并雙擊,xsqk.zje(總金額)字段顯示在表達(dá)式欄中的SUM()的括號(hào)中間。

      AS引出該字段的標(biāo)題銷售金額小計(jì),完成表達(dá)式SUM(xsqk.zje)  AS  “銷售金額小計(jì)的設(shè)置。

      表達(dá)式生成器確定按鈕,退出表達(dá)式生成器。表達(dá)式SUM(xsqk.zje)  AS  “銷售金額小計(jì)顯示在函數(shù)和表達(dá)式欄中。

      單擊添加按鈕將表達(dá)式添加到選定字段欄中。

 
 
 

   (3) 分組統(tǒng)計(jì)的控制。銷售金額小計(jì)項(xiàng)是對(duì)每一個(gè)員工的銷售情況求和。這里按員工編號(hào)分組對(duì)每個(gè)員工的銷售情況進(jìn)行統(tǒng)計(jì)。分組統(tǒng)計(jì)通過(guò)查詢?cè)O(shè)計(jì)器的分組依據(jù)選項(xiàng)卡進(jìn)行設(shè)置。在可用字段欄中選擇員工編號(hào)xsqk.ygbh添加到分組字段中,如圖6-8所示。根據(jù)分組依據(jù)的設(shè)置,則可分別按照員工編號(hào)對(duì)總金額字段進(jìn)行分組求和統(tǒng)計(jì)出每個(gè)員工的銷售金額小計(jì)值。

   (4) 設(shè)置篩選月份條件。案例中要求的統(tǒng)計(jì)某月的銷售情況通過(guò)篩選選項(xiàng)卡進(jìn)行。在此項(xiàng)中獲得銷售日期xsqk.xsrq字段的年份和月份篩選關(guān)系:

     YEAR(xsqk.xsrq)= AND MONTH(xsqk.xsrq)=月份

   例如這里選擇2003年及9月份,表達(dá)式則為:

     YEAR(xsqk.xsrq)=2003  AND MONTH(xsqk.xsrq)=9

   篩選選項(xiàng)卡中獲得表達(dá)式的方法是: 等號(hào)左邊的內(nèi)容置于篩選選項(xiàng)卡中的字段名欄中,單擊字段名欄右邊的下拉箭頭,出現(xiàn)所有可選字段和一個(gè)<表達(dá)式…>項(xiàng)。如果表達(dá)式左邊選用的是字段,可直接在列表中單擊選擇。如果還要構(gòu)成一定的表達(dá)式關(guān)系,則可選擇<表達(dá)式…>項(xiàng)進(jìn)行設(shè)計(jì)。本例中的YEAR(xsqk.xsrq)MONTH(xsqk.xsrq)都須通過(guò)<表達(dá)式…> 項(xiàng)進(jìn)行設(shè)置。等號(hào)右邊的內(nèi)容在實(shí)例欄中輸入。關(guān)系符等于號(hào)在條件欄中選擇。第一個(gè)表達(dá)式YEAR(xsqk.xsrq) =2003設(shè)置在第1行,第2個(gè)表達(dá)式MONTHxsqk.xsrq=9設(shè)置在第2行,兩個(gè)表達(dá)式之間的關(guān)系在第1行表達(dá)式后的邏輯項(xiàng)中選擇。篩選選項(xiàng)卡顯示在圖6-9所示。

   5 運(yùn)行查詢結(jié)果。單擊工具欄中的運(yùn)行按鈕,運(yùn)行上面設(shè)置的查詢,得到每個(gè)員工在9月份中的銷售情況表,如圖6-10所示。

 6.2.4  “查詢?cè)O(shè)計(jì)器的各功能設(shè)計(jì)方法

   掌握了查詢的作用和基本操作后,我們來(lái)全面了解一下查詢?cè)O(shè)計(jì)器的各種功能的設(shè)計(jì)方法。

  1.  打開(kāi)查詢?cè)O(shè)計(jì)器的方法

    文件菜單中的新建命令打開(kāi)查詢?cè)O(shè)計(jì)器。單擊文件菜單中的新建命令,在出現(xiàn)新建對(duì)話框中選擇查詢,并單擊新建文件按鈕,打開(kāi)查詢?cè)O(shè)計(jì)器。

    從項(xiàng)目管理器打開(kāi)查詢?cè)O(shè)計(jì)器。打開(kāi)項(xiàng)目管理器,如圖6-11所示。在數(shù)據(jù)選項(xiàng)欄列表中選擇查詢項(xiàng)。再單擊新建按鈕,出現(xiàn)新建查詢對(duì)話框。在對(duì)話框中選擇新建查詢即打開(kāi)查詢?cè)O(shè)計(jì)器。

   打開(kāi)查詢管理器后的同時(shí)在菜單欄上出現(xiàn)查詢菜單,在查詢?cè)O(shè)計(jì)器窗口出現(xiàn)查詢?cè)O(shè)計(jì)器工具欄。如果查詢?cè)O(shè)計(jì)器工具欄未出現(xiàn),可選擇顯示菜單中的工具欄命令,從工具欄對(duì)話框中選擇查詢?cè)O(shè)計(jì)器打開(kāi)查詢?cè)O(shè)計(jì)器工具欄。

  2. 添加或移除數(shù)據(jù)庫(kù)表或自由表

   選擇查詢菜單中的添加表或單擊查詢?cè)O(shè)計(jì)器工具欄中的添加表按鈕,調(diào)出圖6-3添加表或視圖對(duì)話框。在添加表或視圖對(duì)話框中選擇所要添加的數(shù)據(jù)庫(kù)和數(shù)據(jù)表,按確定按鈕,將選定的表添加到查詢?cè)O(shè)計(jì)器中。要添加多個(gè)數(shù)據(jù)表時(shí),則重復(fù)進(jìn)行上述操作。如果所需要的表在數(shù)據(jù)表欄中未列出,可按其他按鈕,從打開(kāi)對(duì)話框中尋找所需的表。所需添加的表加到查詢?cè)O(shè)計(jì)器中后,按關(guān)閉按鈕,退出添加表對(duì)話框,完成添加表的操作。

   查詢?cè)O(shè)計(jì)器中移除數(shù)據(jù)表的方法是: 先選定要移去的表,再按查詢菜單中的移去表命令或查詢?cè)O(shè)計(jì)器工具欄的移去表按鈕,即可移去選擇的表。

  3. 選擇查詢輸出字段

   選擇查詢?cè)O(shè)計(jì)器字段選項(xiàng)卡,該選項(xiàng)卡上的可用字段列表框中列出了查詢?cè)O(shè)計(jì)器中數(shù)據(jù)表的全部字段,從中單擊選擇要輸出的字段。選擇所需要的字段后單擊添加按鈕,將選定的字段添加到選定字段中。全部添加可將可用字段列表中的所有字段同時(shí)添加到選定字段中。移去按鈕將選定字段列表框中選擇的字段移回到可用字段列表框中。全部移去按鈕將選定字段列表中的全部字段移回到可用字段列表框中。

   利用函數(shù)和表達(dá)式欄構(gòu)成一定的表達(dá)式作為一個(gè)字段,用AS引導(dǎo)該表達(dá)式的標(biāo)題。單擊添加按鈕將表達(dá)式添加到選定字段欄中。

  4.  建立多表聯(lián)接關(guān)系

   如果使用多個(gè)相關(guān)的數(shù)據(jù)表須建立聯(lián)接關(guān)系,建立聯(lián)接關(guān)系的方法是: 單擊聯(lián)接選項(xiàng)卡,如圖6-12。在聯(lián)接選項(xiàng)卡的字段名中選擇第一個(gè)數(shù)據(jù)表的一個(gè)字段,在中選擇另一個(gè)數(shù)據(jù)表與第一個(gè)數(shù)據(jù)表所選的字段相關(guān)聯(lián)的字段。

   選項(xiàng)中的條件是確定所選兩表的字段以什么條件關(guān)聯(lián)。關(guān)聯(lián)的條件有多種,關(guān)聯(lián)條件在表6-5中列出。選項(xiàng)卡中的表示與所選擇的條件相反。

   選項(xiàng)中類型確定關(guān)聯(lián)的關(guān)系類型,關(guān)聯(lián)的類型有內(nèi)聯(lián)接(Inner  Join)、左聯(lián)接(Left  Outer  Join)、右聯(lián)接(Right  Outer  Join)和完全聯(lián)接(Full  Join)四種。四種聯(lián)接類型的關(guān)系列在表6-6中。

  5. 確定查詢條件

   選擇查詢的數(shù)據(jù)需要滿足一定的條件時(shí),在查詢?cè)O(shè)計(jì)器中使用篩選選項(xiàng)卡。篩選選項(xiàng)卡如圖6-13所示。查詢條件根據(jù)字段滿足的條件來(lái)確定,在篩選卡中設(shè)置字段符合的條件。字段名中選擇所設(shè)計(jì)的字段,實(shí)例中輸入滿足的條件值??蛇x擇的條件與表6-5中列出的條件相同。

  6. 設(shè)置查詢的排序

   當(dāng)需要對(duì)查詢結(jié)果按某一字段進(jìn)行排序時(shí),選擇查詢?cè)O(shè)計(jì)器排序依據(jù)選項(xiàng)卡。排序依據(jù)選項(xiàng)卡如圖6-14所示。在此選擇卡中,選定字段列表框中列出可選擇的字段,其字段是前面選定的輸出字段。在選定字段列表中選擇需要排序的字段,按添加按鈕將其添加到排序條件列表中。同時(shí)在排序選項(xiàng)欄中確定排序的字段是升序還是降序。

  7. 確定查詢的分組

   在查詢時(shí)有時(shí)需要對(duì)記錄的某些數(shù)據(jù)進(jìn)行分組統(tǒng)計(jì)計(jì)算,如對(duì)銷售出的商品按相同的商品進(jìn)行銷售量的統(tǒng)計(jì)。對(duì)此使用分組依據(jù)選項(xiàng)卡。分組依據(jù)選項(xiàng)卡在如圖6-15中顯示。

  8. 其他項(xiàng)目的設(shè)定

   應(yīng)用查詢?cè)O(shè)計(jì)器雜項(xiàng)選項(xiàng)卡對(duì)查詢結(jié)果排除重復(fù)記錄、選擇查詢范圍等操作。雜項(xiàng)選項(xiàng)卡如圖6-16所示。

   (1) 查詢結(jié)果排除重復(fù)數(shù)據(jù)的記錄

     當(dāng)記錄中的某一字段有相同記錄時(shí),查詢使用無(wú)重復(fù)記錄選項(xiàng)可以使查詢結(jié)果排除該字段的重復(fù)記錄,只顯示排在最前面的一個(gè)記錄。

   (2) 設(shè)置查詢的記錄范圍

     使用查詢雜項(xiàng)選項(xiàng)卡中的列在前面的記錄選項(xiàng),可以選擇查詢范圍。查詢的范圍有下面幾種情況:

      全部: 查詢?nèi)坑涗洝?/font>

      部分記錄: 查詢記錄中前n個(gè)記錄。在記錄個(gè)數(shù)選項(xiàng)中設(shè)定記錄的前面n個(gè)記錄。

      n%個(gè)記錄: 按百分比選擇記錄的范圍,選擇n值后,再選定百分比項(xiàng)確定選擇記錄的百分比。

   選擇后兩種情況時(shí),需要先對(duì)記錄進(jìn)行排序。

  9. 查詢結(jié)果的輸出方向

   查詢?cè)O(shè)置完成后,其查詢結(jié)果可有多個(gè)去向。查詢結(jié)果主要去向有: 瀏覽、臨時(shí)表、表、圖形、屏幕、報(bào)表、標(biāo)簽。

   查詢輸出去向的設(shè)置通過(guò)查詢工具欄中的查詢?nèi)ハ?/font>按鈕或查詢菜單中的查詢?nèi)ハ?/font>命令。單擊查詢?nèi)ハ?/font>按鈕或命令后出現(xiàn)查詢?nèi)ハ?/font>對(duì)話框,如圖6-17所示。在對(duì)話框中選擇查詢輸出結(jié)果的去向后,按確定完成設(shè)置。

   設(shè)置查詢結(jié)果去向后執(zhí)行查詢,將以設(shè)定的去向產(chǎn)生查詢結(jié)果,如設(shè)置了查詢結(jié)果去向?yàn)?/font>,則查詢的輸出結(jié)果存入指定的數(shù)據(jù)表中,而不顯示在瀏覽框中。

  10. 運(yùn)行查詢

   使用查詢?cè)O(shè)計(jì)器完成查詢?cè)O(shè)置后,用查詢菜單中的運(yùn)行查詢命令或常用工具欄的運(yùn)行按鈕來(lái)運(yùn)行查詢結(jié)果。

   查詢文件的擴(kuò)展名為.qpr,編譯后的查詢文件擴(kuò)展名為.qpx

   使用命令執(zhí)行查詢,使用  DO  查詢文件名.qpr 命令進(jìn)行查詢。

 6.2.5  部門月銷售情況交叉表的設(shè)計(jì)

   月銷售情況表的記錄如表6-7中所示,表中反映了各銷售部門每個(gè)月的銷售情況,從表中查看部門各月份銷售情況時(shí)不夠直觀,Visual FoxPro 提供了一種更直觀查看這類表的設(shè)計(jì)方法: 交叉表設(shè)計(jì)。交叉表將兩個(gè)字段的值分作為表格的行標(biāo)題和列標(biāo)題,如將月份字段的值作為行標(biāo)題、部門字段的值作為列標(biāo)題。另一個(gè)字段作為前兩個(gè)字段交叉單元的值,查詢結(jié)果構(gòu)成一種三維表,如表6-7所示。

   設(shè)計(jì)交叉表應(yīng)用交叉表向?qū)?/font>工具,交叉表向?qū)?/font>設(shè)計(jì)方法如下:

      選擇文件菜單中的新建命令,打開(kāi)新建對(duì)話框。在對(duì)話框中選擇查詢項(xiàng),并單擊向?qū)?/font>按鈕,打開(kāi)向?qū)нx取對(duì)話框。在向?qū)нx取對(duì)話框中選擇交叉表向?qū)?/font>,即打開(kāi)交叉表向?qū)?/font>。

      字段選擇。在交叉表設(shè)計(jì)步驟1中選擇數(shù)據(jù)表和設(shè)計(jì)交叉表所需的字段,如字段選擇 部門、月份和銷售額。

      定義布局。交叉表設(shè)計(jì)步驟2中設(shè)計(jì)查詢表的行標(biāo)題、列標(biāo)題和數(shù)據(jù)欄內(nèi)容,如圖6-18所示。將部門字段拖到框中,把月份字段拖到框中,銷售額拖到數(shù)據(jù)框中。

      加入總結(jié)信息。交叉表設(shè)計(jì)步驟3是加入總結(jié)信息,總結(jié)信息為查詢?cè)黾右粋€(gè)統(tǒng)計(jì)計(jì)算列,對(duì)查詢的數(shù)據(jù)進(jìn)行總結(jié)計(jì)算??偨Y(jié)計(jì)算的類型分別有: 求和、計(jì)數(shù)、平均值、最大值、最小值等。匯總分類有數(shù)據(jù)求和、包含數(shù)據(jù)的單元格數(shù)目、占整張表的總計(jì)的百分比、不統(tǒng)計(jì)等各項(xiàng)。加入總結(jié)信息設(shè)計(jì)對(duì)話框如圖6-19所示。計(jì)算各部門的銷售總金額時(shí)總結(jié)項(xiàng)選擇求和,分類匯總項(xiàng)選擇數(shù)據(jù)求和

      完成設(shè)計(jì)。在保存交叉表查詢、保存并運(yùn)行交叉表查詢和保存交叉表查詢并在查詢?cè)O(shè)計(jì)器中修改該查詢中選擇一項(xiàng),完成交叉表設(shè)計(jì)。部門月銷售情況交叉表的運(yùn)行結(jié)果如圖6-20所示。

6.3  應(yīng)用SELECT—SQL命令進(jìn)行查詢

   使用查詢?cè)O(shè)計(jì)器工具對(duì)數(shù)據(jù)表進(jìn)行的查詢也可以使用SELECT—SQL命令實(shí)現(xiàn)。實(shí)質(zhì)上使用查詢?cè)O(shè)計(jì)器的查詢?cè)O(shè)計(jì)最終也是生成一組SELECT—SQL命令。

 6.3.1  SELECT—SQL查詢命令

   SELECT—SQL查詢命令的格式如下:

   SELECT  ALL / DISTINCT TOP  nExpr  PERCENT]]

   Alias.Select-Item  AS  Column-Name

   ,Alias.Select-Item  AS  Column-Name

   FROM  FORCE][DatabaseName! table  lacal-Alias

   INNER/LEFT/OUTER/RIGHTOUTER/FULLOUTER

   JOIN  DatabaseName!Table  Local-Alias  ON  JoinCondition [[INTO  Destination /TO  FILE  FileName 

   ADDITIVE/TO  PRINTER PROMPT/TO  SCREEN]]

   PREFERENCE  PreferenceName

   NOCONSOLE PLAIN][NOWAIT

   WHERE  JoinCondition  AND  JoinCondition… AND/OR 

   FilterCondition  AND /OR  FilterCondition….]]]

   GROUP  BY  GroupColumn  ,GroupColumn…]]

   HAVING  FilterCondition  UNION

   ALL  SELECTCommand

   ORDER  BY  Order-Item ASC/DESE  ,Order-Item ASC/DESC]]

   SELECT—SQL命令可以分解為多個(gè)部分,每一部分分別對(duì)應(yīng)查詢?cè)O(shè)計(jì)器的一種操作。SELECT—SQL命令主要分為下列各部分:

  1. 指定輸出字段

   SELECT  ALL / DISTINCT  TOP  nExpr  PERCENT]]

   Alias.Select-Item  AS  Column-Name

   ,Alias.Select-Item  AS  Column-Name

   命令中的參數(shù):

   Alias.Select-Item 指定查詢結(jié)果的輸出字段、常量或表達(dá)式。Alias表示數(shù)據(jù)表別名。如果選擇一個(gè)數(shù)據(jù)表的全部字段可用“*”表示。

   AS  Column-Name]: 設(shè)置查詢輸出字段或表達(dá)式項(xiàng)的標(biāo)題。

   ALL / DISTINCT]: 確定有無(wú)重復(fù)記錄。ALL表示所有記錄,ALL可以省略。DISTINCT表示當(dāng)有重復(fù)記錄時(shí)只輸出重復(fù)記錄中第一個(gè)記錄。

   TOP  nExpr  PERCENT]]: 確定記錄范圍。TOP  nExpr表示記錄數(shù),TOP  nExpr  PERCENT表示記錄的百分?jǐn)?shù)。

  2. 指定查詢的數(shù)據(jù)表

   FROM  DatabaseName!  table  lacal-Alias

     table 指定查詢的數(shù)據(jù)表。

   DatabaseName!]: 當(dāng)數(shù)據(jù)源是數(shù)據(jù)庫(kù)表時(shí)的數(shù)據(jù)庫(kù)名。

   lacal-Alias]: 本地表的別名。

   如數(shù)據(jù)表取自sp數(shù)據(jù)庫(kù)的xsqk表表示為: FROM  sp!xsqk。

   例: 顯示sp數(shù)據(jù)庫(kù)中xsqk表的所有記錄,輸出商品編號(hào)spbh和銷售數(shù)量xssl字段。

     SELECT  xsqk.spbh, xsqk.xssl  FROM  sp! xsqk

  3. 確定多表間的聯(lián)接

   INNER / LEFT OUTER / RIGHTOUTER / FULLOUTER

   JOIN  DatabaseName!Table  Local-Alias   ON  JoinCondition

   命令中的參數(shù):

   INNER/LEFT OUTER/RIGHT OUTER/FULLOUTER]: 確定是內(nèi)聯(lián)接、左聯(lián)接、右聯(lián)接還是完全聯(lián)接。

   INNER  OUTER 內(nèi)聯(lián)接

   LEFT   OUTER 左聯(lián)接

   RIGHT  OUTER 右聯(lián)接

   FULL   OUTER 完全聯(lián)接。

   DatabaseName!Table 指定被聯(lián)接的數(shù)據(jù)庫(kù)和數(shù)據(jù)表名。

   JoinCondition 確定聯(lián)接條件。

   例: 查詢數(shù)據(jù)庫(kù)源spspxx表和xsqk表。其中spxx表和xsqk表以內(nèi)聯(lián)接方式聯(lián)接。

     FROM  sp!spxx  INNER  JOIN  sp!xsqk  ON  spxx.spbh= xsqk.spbh

  4. 確定查詢輸出去向

   [[INTO  Destination / TO  FILE  FileName  ADDITIVE / TO  PRINTER PROMPT / TO  SCREEN]]

   命令中的參數(shù):

   INTO  DestinationDestination代表下列輸出去向:

      ARRAY  ArrayName 將查詢結(jié)果保存到內(nèi)存變量數(shù)組中。ArrayName表示內(nèi)存變量名。

      CURSOR  CursorName 將查詢結(jié)果保存到臨時(shí)表中。CursorName表示臨時(shí)表名。

      DBF  TableName / TABLE  TableName 將查詢結(jié)果保存到一數(shù)據(jù)表中。TableName是數(shù)據(jù)表名。

     TO  FILE  FileName  ADDITIVE / TO  PRINTER PROMPT / TO  SCREEN]: 輸出到文件、打印機(jī)或屏幕。

     ADDITIVE表示數(shù)據(jù)輸入到文件時(shí)不刪除原有數(shù)據(jù),而是從數(shù)據(jù)后面增加記錄。如果沒(méi)有ADDITIVE,則數(shù)據(jù)輸入到文件中時(shí)不保留原數(shù)據(jù),原數(shù)據(jù)被新數(shù)據(jù)覆蓋。

  5. 篩選源表記錄條件

   WHERE  JoinCondition  AND  JoinCondition….][AND/OR  FilterCondition  AND /OR  FilterCondition….]]]

   命令中的參數(shù):

   FilterCondition 篩選條件。

   JoinCondition 多表查詢時(shí)的聯(lián)接條件,作用同JOIN  ON  JoinCondition語(yǔ)句中的JoinCondition。

   例如: 篩選員工表yg.dbf中性別為的子命令: WHERE  yg.xb = ″男″

  6. 定義記錄的分組

   GROUP  BY  GroupColumn  ,GroupColumn…]]

   GroupColumn 分組的列或字段。

   例如: 以員工表中的員工編號(hào)分組的子命令: GROUP  BY  yg.ygbh

  7. 指定分組滿足條件

   HAVING  FilterCondition  UNION  ALL  SELECTCommand

   指定包含在查詢結(jié)果中的組必須滿足的篩選條件。

  8. 指定輸出記錄的排序順序

   ORDER  BY  Order—Item  ASC/DESE  ,Order-Item ASC/DESC]]

   Order—Item 排序的字段等項(xiàng)目

   ASC 升序

   DESE 降序

   例如: 以銷售情況表中銷售數(shù)量xssl字段以降序排序命令:

      ORDER  BY  xsqk.xssl  DESC

 6.3.2  SELECT—SQL查詢命令應(yīng)用舉例

   SELECT—SQL查詢命令比較復(fù)雜,下面通過(guò)一些例子介紹SELECT—SQL查詢命令的應(yīng)用。

  1. 單表查詢

   【例6-1】查詢銷售商品管理數(shù)據(jù)庫(kù)sp.dbc中商品信息表spxx.dbf的商品編號(hào)spbh、商品名稱spmc和銷售單價(jià)xsdj。

     SELECT  spxx.spbh, spxx.spmc, spxx.xsdj   FROM  sp!spxx

   【例6-2】查詢商品信息表spxx.dbf銷售單價(jià)大于1000元的商品,輸出商品編號(hào)spbh、商品名稱spmc和銷售單價(jià)xsdj等字段。

     SELECT spxx.spbh, spxx.spmc, spxx.xsdj  FROM sp!spxx ;

     WHERE  spxx.xsdj > 1000

   【例6-3】按商品編號(hào)順序從小到大查詢商品信息表spxx.dbf的商品編號(hào)spbh、商品名稱spmc和銷售單價(jià)xsdj。

     SELECT spxx.spbh, spxx.spmc, spxx.xsdj ;

     FROM  sp!spxx   ORDER  BY  spxx.spbh

  【例6-4】將庫(kù)存表kc.dbf的查詢輸出到庫(kù)存情況表kcqk.dbf中。查詢的字段為: 商品編號(hào)spbh、進(jìn)貨日期jhrq和庫(kù)存數(shù)量kcsl。

     SELECT kc.spbh, kc.jhrq, kc.kcsl   FROM  sp!kc;

     INTO TABLE kcqk.dbf

  2. 多表查詢

   【例6-5】查詢銷售商品管理數(shù)據(jù)庫(kù)sp.dbc的員工表yg.dbf和銷售情況表xsqk.dbf的員工編號(hào)yg.ygbh、員工姓名yg.xm、銷售金額xsqk.zje和銷售日期xsqk.xsrq等字段。

     SELECT yg.ygbh, yg.xm, xsqk.zje, xsqk.xsrq ;

     FROM  sp!yg  INNER  JOIN  sp!xsqk ;

     ON  yg.ygbh = xsqk.ygbh

  【例6-6】查詢某一日銷售情況表xsqk.dbf和商品信息表spxx.dbf的商品銷售情況,輸出字段有: 商品編號(hào)xsqk.spbh、商品名稱spxx.spmc、銷售單價(jià)spxx.xsdj、銷售數(shù)量xsqk.xssl、總金額xsqk.zje和銷售日期xsqk.xsrq等字段。

     SELECT xsqk.spbh, spxx.spmc, spxx.xsdj, xsqk.xssl, xsqk.zje, xsqk.xsrq;

     FROM  sp!spxx  INNER JOIN  sp!xsqk  ON  spxx.spbh = xsqk.spbh;

     WHERE xsqk.xsrq = {^2003/10/29}

  3. 包含計(jì)算字段的查詢

   【例6-7】查詢銷售情況表xsqk.dbf中各種銷售商品的總金額小計(jì),輸出為商品編號(hào)spbh、以商品編號(hào)分組統(tǒng)計(jì)的總金額小計(jì)。

     SELECT   xsqk.spbh , SUM(xsqk.zje)  AS  銷售金額小計(jì)   FROM  sp!xsqk;

     GROUP BY  xsqk.spbh

   【例6-8】查詢銷售情況表xsqk.dbf中同一種銷售商品成交價(jià)最高的商品交易情況。輸出字段有: 成交編號(hào)xsqk.cjbh、商品編號(hào)xsqk.spbh、以商品編號(hào)分組查找的同商品交易中最高成交金額的記錄。

     SELECT xsqk.cjbh, xsqk.spbh, MAX(xsqk.zje)  AS  交易最高價(jià) 

     FROM  sp!xsqk;

     GROUP BY  xsqk.spbh

6.4 用視圖方法查看商品信息管理數(shù)據(jù)庫(kù)

   在數(shù)據(jù)庫(kù)中,可以建立與查詢相同功能的視圖,通過(guò)視圖從數(shù)據(jù)表中查詢所需的數(shù)據(jù)信息,組成新的數(shù)據(jù)集合表存放于數(shù)據(jù)庫(kù)中,所以視圖也稱為虛表視圖查詢很相似,在數(shù)據(jù)表的基礎(chǔ)上,構(gòu)成一組檢索和計(jì)算結(jié)果。支持視圖的數(shù)據(jù)表稱為源數(shù)據(jù)表,也稱為基表。查詢不能改變?cè)磾?shù)據(jù)表中數(shù)據(jù),而與查詢不同的是,通過(guò)視圖可以改變?cè)磾?shù)據(jù)表中的記錄值。

   視圖是在數(shù)據(jù)庫(kù)設(shè)計(jì)器中建立的。視圖分為本地視圖遠(yuǎn)程視圖。本地視圖使用Visual FoxPro SQL語(yǔ)法從數(shù)據(jù)表或視圖中選擇信息;遠(yuǎn)程視圖使用遠(yuǎn)程SQL語(yǔ)法從遠(yuǎn)程ODBC數(shù)據(jù)源表中選擇信息。這里主要介紹本地視圖的設(shè)計(jì)方法。

 6.4.1  建立員工銷售業(yè)績(jī)情況視圖

   用建立視圖的方法來(lái)構(gòu)成每一員工某月的銷售情況。銷售情況表(xsqk.dbf)和員工表(yg.dbf)作為源數(shù)據(jù)源。建立員工銷售視圖的操作如下:

   1. 打開(kāi)視圖設(shè)計(jì)器

 
 
 

   視圖是在數(shù)據(jù)庫(kù)設(shè)計(jì)器中建立的,所以首先打開(kāi)數(shù)據(jù)庫(kù):

   打開(kāi)sp商品信息管理數(shù)據(jù)庫(kù)。

    選擇數(shù)據(jù)庫(kù)設(shè)計(jì)器工具欄中的新建本地視圖按鈕或數(shù)據(jù)庫(kù)菜單中的新建本地視圖命令,出現(xiàn)新建本地視圖對(duì)話框,單擊對(duì)話框中的新建視圖打開(kāi)視圖設(shè)計(jì)器

   視圖設(shè)計(jì)器與查詢?cè)O(shè)計(jì)器的結(jié)構(gòu)基本相同,視圖設(shè)計(jì)器如圖6-21所示。打開(kāi)視圖設(shè)計(jì)器同時(shí)出現(xiàn)視圖設(shè)計(jì)器工具欄和查詢菜單,供設(shè)計(jì)視圖時(shí)使用。視圖的設(shè)計(jì)方法也與查詢的設(shè)計(jì)方法基本一致。

  2. 添加數(shù)據(jù)表

   單擊視圖設(shè)計(jì)器工具欄的添加表按鈕或查詢菜單中的添加表命令,打開(kāi)添加表或視圖對(duì)話框,添加銷售情況表xsqk.dbf和員工表yg.dbf。

  3. 選擇輸出字段

   字段選項(xiàng)卡中的可用字段欄中選擇員工編號(hào)xsqk.ygbh、姓名yg.xm、銷售總值SUM(xsqk.zje)等字段。添加到選定字段欄中。銷售總量通過(guò)函數(shù)和表達(dá)式欄設(shè)置。

  4. 分組統(tǒng)計(jì)

   按員工編號(hào)xsqk.ygbh分組進(jìn)行統(tǒng)計(jì)的設(shè)計(jì)是通過(guò)視圖設(shè)計(jì)器的分組依據(jù)選項(xiàng)卡。在可用字段欄中選擇員工編號(hào)xsqk.ygbh添加到分組字段欄中,根據(jù)分組依據(jù)的設(shè)置,求總金額的和按照員工編號(hào)分組進(jìn)行統(tǒng)計(jì)。

  5. 月份的篩選

   單擊篩選選項(xiàng)卡,建立表達(dá)式關(guān)系: YEAR(xsqk.xsrq) =2003(年)和MONTHxsqk.xsrq=9(月份)。單擊字段名欄右邊的下拉箭頭,出現(xiàn)所有的可選字段和一個(gè)表達(dá)式項(xiàng)。選擇表達(dá)式項(xiàng),在表達(dá)式生成器中組成YEAR(xsqk.xsrq),在實(shí)例欄輸入要設(shè)置的年份2003,在條件欄中選擇等于號(hào)。MONTHxsqk.xsrq=9表達(dá)式的設(shè)計(jì)以同樣的方法設(shè)計(jì)。

  6. 運(yùn)行視圖

   單擊工具欄中的運(yùn)行按鈕或查詢菜單中的運(yùn)行查詢命令,運(yùn)行上面設(shè)置的視圖,得到每個(gè)員工某個(gè)月份的銷售總值表,如圖6-22所示。與查詢的結(jié)果表6-10比較兩個(gè)結(jié)果是相同的。

  7. 更新視圖與源數(shù)據(jù)表數(shù)據(jù)

 
 
 

   在默認(rèn)情況下,是不能更新視圖與源數(shù)據(jù)表中的記錄的。為了能更新視圖與源數(shù)據(jù)表,可通過(guò)設(shè)置更新條件選項(xiàng)卡上的參數(shù)來(lái)確定。操作方法如下:

    選擇更新條件選項(xiàng)卡,如圖6-23顯示。

    選擇可更新的表在下拉列表中選擇需要更新的數(shù)據(jù)表。如員工表yg.dbf。

    設(shè)置關(guān)鍵字字段名列表中列出了可使用的字段,單擊關(guān)鍵字段員工編號(hào)yg.ygbh鑰匙下面的位置,出現(xiàn)一個(gè)符號(hào),設(shè)定該字段為關(guān)鍵字。關(guān)鍵字應(yīng)該在數(shù)據(jù)表的主關(guān)鍵字段或候補(bǔ)關(guān)鍵字段中選擇。設(shè)置關(guān)鍵字后,如果要重新設(shè)置關(guān)鍵字,可單擊重置關(guān)鍵字按鈕后再重新設(shè)置關(guān)鍵字。

    設(shè)置可更新字段在要更新的字段即員工姓名yg.xm前面單擊可更新列(筆形標(biāo)志),確定字段可修改。如果要使表中的所有字段可更新,將全部字段設(shè)置成可更新的??捎?/font>全部更新按鈕設(shè)置,但用全部更新不影響關(guān)鍵字。因?yàn)橐话悴粫?huì)直接修改關(guān)鍵字段。

    更新源數(shù)據(jù)表設(shè)置了可更新字段后可以對(duì)視圖進(jìn)行更改,但還不能對(duì)源數(shù)據(jù)表直接更新。如需通過(guò)視圖對(duì)源數(shù)據(jù)源表進(jìn)行更改時(shí),要進(jìn)一步選擇設(shè)置發(fā)送SQL更新項(xiàng)。

    設(shè)置“SQL  WHERE  子句包括項(xiàng)如果在一個(gè)多用戶環(huán)境中工作,用戶使用的數(shù)據(jù)表也可以被別的用戶訪問(wèn)或修改。為了檢查數(shù)據(jù)表是否被其他用戶修改過(guò),對(duì)“SQL  WHERE  子句包括進(jìn)行設(shè)置。各選項(xiàng)的功能為:

     關(guān)鍵字: 當(dāng)源表中的關(guān)鍵字段被修改時(shí),更新失敗。

     關(guān)鍵字和可更新字段: 當(dāng)遠(yuǎn)程表中可更新的字段被改變時(shí),更新失敗。

     關(guān)鍵字和已修改字段: 當(dāng)在本地改變的字段在源表中被改變時(shí),更新失敗。

     關(guān)鍵字和時(shí)間戳: 當(dāng)遠(yuǎn)程表上記錄的時(shí)間戳在首次檢索之后被改變時(shí),更新失敗。

    設(shè)置使用更新項(xiàng)確定視圖更新源表記錄時(shí)使用的方法。第一項(xiàng)“SQL  DELETE  然后  INSERT”是選刪除原始記錄,再插入新記錄。另一項(xiàng)“SQL  UPDATE”是直接更新已經(jīng)存在的記錄。

 6.4.2  創(chuàng)建供貨商參數(shù)化視圖

   參數(shù)化視圖是根據(jù)某個(gè)參數(shù)的不同值分別查詢對(duì)應(yīng)的有關(guān)數(shù)據(jù),這種視圖稱為參數(shù)化視圖,如供貨商表ghs.dbf按供貨商的編號(hào)分別查看出對(duì)應(yīng)每一編號(hào)的供貨商情況。變化的參數(shù)是供貨商編號(hào)ghs.ghsbh字段。如采用前面介紹的視圖設(shè)計(jì)方法,對(duì)每個(gè)供貨商編號(hào),將建立起一個(gè)視圖。表中有多個(gè)供貨商,就必須建立多個(gè)相對(duì)應(yīng)的視圖。而參數(shù)化視圖則可根據(jù)改變供貨商編號(hào)獲得不同的視圖結(jié)果,操作和使用十分方便。供貨商參數(shù)化視圖的設(shè)計(jì)方法如下:

    打開(kāi)視圖設(shè)計(jì)器,添加數(shù)據(jù)表,選擇輸出的字段。操作方法同前面的介紹。

    篩選選項(xiàng)卡中建立一個(gè)篩選關(guān)系: 字段名 = ?<提示符>。

   如: ghs.ghsbh =?供貨商編號(hào),見(jiàn)圖6-24。

    查詢菜單中選擇視圖參數(shù),出現(xiàn)視圖參數(shù)對(duì)話框,在其中定義參數(shù)名和參數(shù)類型,在參數(shù)名項(xiàng)中輸入供貨商編號(hào),在類型項(xiàng)中選擇字符型,如圖6-25所示。

    運(yùn)行視圖。參數(shù)化視圖設(shè)置完成后,每當(dāng)運(yùn)行該視圖時(shí),會(huì)先出現(xiàn)提示輸入?yún)?shù)對(duì)話框,如圖6-26所示,在對(duì)話框中輸入相應(yīng)的供貨商編號(hào)ghsbh字段的參數(shù)值后,查詢對(duì)應(yīng)的視圖。

   用參數(shù)化視圖可不需建立多個(gè)視圖的情況下獲得各個(gè)與參數(shù)相對(duì)應(yīng)的視圖。

   視圖建立后,對(duì)視圖的使用可以視為一個(gè)數(shù)據(jù)庫(kù)表,很多情況下對(duì)視圖的操作與對(duì)數(shù)據(jù)庫(kù)表的操作方法相同。如打開(kāi)視圖、修改視圖和關(guān)閉視圖等操作。在程序中,打開(kāi)視圖和關(guān)閉視圖的命令與打開(kāi)數(shù)據(jù)庫(kù)表與關(guān)閉數(shù)據(jù)庫(kù)表的命令相同。打開(kāi)視圖時(shí)系統(tǒng)在其他工作區(qū)自動(dòng)打開(kāi)該視圖的源數(shù)據(jù)表,但關(guān)閉視圖后,視圖的源數(shù)據(jù)表不能隨視圖的關(guān)閉而自動(dòng)關(guān)閉,必須另外用命令關(guān)閉數(shù)據(jù)表。

   打開(kāi)sp數(shù)據(jù)庫(kù)的員工銷售情況視圖的命令為:

     OPEN  DATABASE   sp

     USE  員工銷售情況

   在打開(kāi)員工銷售情況視圖的同時(shí),系統(tǒng)自動(dòng)打開(kāi)員工銷售情況視圖的源數(shù)據(jù)表kc.dbf

課后總結(jié):

  本章介紹數(shù)據(jù)庫(kù)及自由表一個(gè)重要應(yīng)用——查詢和視圖。查詢和視圖是根據(jù)用戶的需要從數(shù)據(jù)庫(kù)或自由表中按一定要求選擇出部分?jǐn)?shù)據(jù)及計(jì)算統(tǒng)計(jì)組成一個(gè)虛擬數(shù)據(jù)表。

  Visual FoxPro 提供了查詢和視圖的工具: 查詢?cè)O(shè)計(jì)器和視圖設(shè)計(jì)器。通過(guò)查詢?cè)O(shè)計(jì)器和視圖設(shè)計(jì)器進(jìn)行設(shè)計(jì),使用戶很方便地從數(shù)據(jù)庫(kù)或自由表中檢索及統(tǒng)計(jì)出所需要的數(shù)據(jù)。

  查詢(Query)是從數(shù)據(jù)庫(kù)或自由表中檢索或統(tǒng)計(jì)出所需數(shù)據(jù)。視圖(View)除具有查詢所有的檢索、統(tǒng)計(jì)功能外,還可以改變視圖中記錄值以及源數(shù)據(jù)庫(kù)或自由表的值。

作業(yè):

   第五章習(xí)題       第五章上機(jī)實(shí)驗(yàn)題(書(shū)寫相應(yīng)實(shí)驗(yàn)報(bào)告)

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多