<style id="uedzd"></style>
  • <style id="uedzd"></style>
  • <dfn id="uedzd"></dfn>
  • <dfn id="uedzd"></dfn>
    1. <ruby id="uedzd"></ruby>
      <ruby id="uedzd"></ruby>
    2. 教學(xué)設(shè)計(jì)
      您當(dāng)前的位置: 首頁>教學(xué)設(shè)計(jì)

      8.1 查詢和統(tǒng)計(jì)

      發(fā)布時(shí)間: 2019-01-27      信息來源:       閱讀次數(shù):

      8.1 查詢和統(tǒng)計(jì)

      目的與要求:

      通過本次課的學(xué)習(xí),掌握數(shù)據(jù)表查詢和數(shù)據(jù)統(tǒng)計(jì)。

      教學(xué)內(nèi)容與時(shí)間安排、教學(xué)方法:

      教學(xué)安排:

      查詢                                     40分鐘

      統(tǒng)計(jì)                                    40分鐘

      教學(xué)方法:

      CAI、圖形、表格

      教學(xué)重點(diǎn)及如何突出重點(diǎn)、難點(diǎn)及如何突破難點(diǎn):

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

      表查詢、統(tǒng)計(jì)

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

      表的查詢

      基本內(nèi)容

      教學(xué)
      手段

      課堂設(shè)計(jì)
      和時(shí)間安排

      5.3查詢

      對(duì)建立的數(shù)據(jù)表,VFP提供了兩種查詢的方法:順序查詢和索引查詢

      一、順序查詢(也稱條件定位查詢)

      【格式】LOCATE  [范圍] [FOR〈條件〉] [WHILE〈條件〉]

      【功能】在當(dāng)前表文件中按照記錄的物理順序,由上到下依次查找在指定范圍內(nèi)的滿足條件的第一條記錄(因此可以對(duì)查找表不建立索引),若找到(即查找成功),則將記錄指針定位到該記錄,可用DISP命令或BROWSE命令進(jìn)行顯示。此時(shí)FOUND()=.T. (查找成功),若FOUND()=.F. (查找不成功)  

      說明:

      1)若省略范圍,系統(tǒng)默認(rèn)為ALL,此時(shí),若查不到,記錄指針定位于最后一個(gè)記錄的后邊(即文件尾),EOF()=.T. ;FOUND()=.F.

      2)若指定范圍(除ALL外):查不到時(shí),記錄指針定位到指定范圍的最后一條記錄上EOF()=.F.;FOUND()=.F.  

      3)若在查找前執(zhí)行了“SET  EXACT ON”命令,用LOCATE查找字符串時(shí)一定要將字符串寫的和庫(kù)中查找的數(shù)據(jù)一致,即不能模糊查找

      4)當(dāng)找到一條符合條件的記錄時(shí),可用DISPLAY命令進(jìn)行顯示該記錄

      二、繼續(xù)查找命令

      【格式】CONTINUE  

      【功能】繼續(xù)執(zhí)行LOCATE命令的查找,找到后,將記錄指針定位到LOCATE命令中指定條件的下一個(gè)記錄

      說明:

      1)使用該命令前,必須使用一次LOCATE命令,即所謂的LOCATE和CONTINUE匹配使用問題

      2)CONTINUE命令可多次使用,直到超出查找范圍或遇到文件尾為止

      3)本命令查找是否成功,可用FOUND()函數(shù)檢測(cè),.T.——成功;.F.——失敗

      本命令查找是否成功,可用eof()函數(shù)檢測(cè),.F.——成功;.T.——失敗

      【例】在student.dbf表中查找年齡大于18的所有記錄

      USE  STUDENT

      LOCATE  FOR 年齡>18

      DISP 姓名, 年齡

      CONTINUE

      DISP 姓名, 年齡

      CONTINUE

      ?EOF()

      ?FOUND()

      三、索引查詢

      索引查詢是在索引文件中進(jìn)行查詢的一種方法。VFP提供了兩條查詢命令:FIND和SEEK命令。

      1. FIND查找命令

      【格式】FIND〈常量〉

      功能:查找打開索引文件的數(shù)據(jù)表中,是否有與命令中的〈常量〉相一致的關(guān)鍵字值的第一個(gè)記錄,找到后,把記錄指針指向該記錄號(hào),便停止查找,如果沒找到“則給出有關(guān)沒有找到”的信息,此時(shí),記錄指針指向尾記錄的下面(即記錄總和值+1),函數(shù)EOF()=.T.,F(xiàn)OUND()=.F.

      【說明】

      1)  當(dāng)庫(kù)中有多個(gè)索引關(guān)鍵字的值與命令中字符串相一致的記錄時(shí),F(xiàn)IND只找相一致的第一個(gè),可使用DISPLAY命令將該記錄顯示出來

      2) FIND命令只能查找C型和N型索引關(guān)鍵字段的值,不能查找日期型、邏輯型和MEMO型關(guān)鍵字的值

      3) FIND命令查找字符串(字符常量)時(shí),如果無前導(dǎo)空格時(shí),可以不用限界符(單引號(hào)、雙引號(hào)或方括號(hào))括起來,如果字符串有前導(dǎo)空格時(shí),應(yīng)使用限界符(單引號(hào)、雙引號(hào)或方括號(hào))括起來

      如:查找姓名的值:

      王海   用      FIND "  王海"

      張洋    用      FIND    張洋

      4) 查找的字符串可以是關(guān)鍵字的全部,也可以是最左邊的一部分字符(稱模糊查詢)

      例:FIND  李

      5) 查找的常數(shù)為N型關(guān)鍵字的值時(shí),命令中的數(shù)據(jù)一定按確切的值寫。如:128.28不能寫成:FIND  128.00

      6)  FIND可以查找復(fù)合索引關(guān)鍵字的值,可寫成字符串或字符串表達(dá)式的形式,但給出的字符串的寬度一定要與庫(kù)中的寬度相一致,否則找不到

      【例】打開student1.dbf表文件,按姓名和高考成績(jī)建立索引(.idx)其中:姓名字段寬度=8,高考成績(jī)寬度=6, 1位小數(shù)。 查找姓名為"王琪",高考成績(jī)?yōu)?10分的記錄.

      use student1

      INDEX ON 姓名+STR(高考成績(jī),6,1)  TO  xmcj

      FIND "王琪   610" 或FIND  "王琪   "+"   610"

      5) FIND 不能直接查找內(nèi)存變量的值,對(duì)于C型內(nèi)存變量,要用宏代換函數(shù)代換出其值,對(duì)N型變量,應(yīng)將其轉(zhuǎn)換成C型后,再用宏代換函數(shù)代換出其值后查找

      【例】FIND 查找示例

      USE  D:\MYVFP\STUDENT

      INDEX ON 姓名 TO  D:\MYVFP\xm

      FIND  周慶國(guó)    

      ? found()  &&函數(shù)返回值為.T.時(shí),表示查找成功.

      DISP

      2.SEEK查找命令

      格式: SEEK   <表達(dá)式>

      SEEK命令的作用和使用方法與FIND基本一致,但SEEK功能更強(qiáng),它們的區(qū)別:

      1)FIND只能查找C型和N型的索引關(guān)鍵字的值;SEEK表達(dá)式>可以查找:N、C、L、D型索引關(guān)鍵字的值。

      2) FIND查找C型索引關(guān)鍵字的值時(shí),可用或不用限界符('、"、[ ])括起來或不括起來;SEEK查找字符型索引關(guān)鍵字的值時(shí),必須用單引號(hào)或雙引號(hào)或方括號(hào)限界符括起來

      3)  FIND命令不能直接查找字符型內(nèi)存變量的值,需使用宏代換函數(shù),對(duì)數(shù)值型內(nèi)存變量值需用轉(zhuǎn)換成字符串后,再用宏代換代換后查找。如:高考成績(jī)=570,應(yīng)高考成績(jī)=STR(高考成績(jī),6,1), FIND &高考成績(jī);SEEK可以直接查找內(nèi)存變量的值,如:SEEK  高考成績(jī)

      說明:

      1)不管是FIND還是SEEK查找,找到后,記錄指針定位到該記錄,可用DISPLAY或BROWSE命令顯示出找到的記錄內(nèi)容,若數(shù)據(jù)庫(kù)中還有符合條件的記錄,可以用SKIP 命令繼續(xù)定位到符合條件的記錄,再用DISP或BROWSE顯示其內(nèi)容,若一個(gè)也沒找到,記錄指針定位到索引文件尾部

      2)SEEK 和FIND查詢后,可使用FOUND()函數(shù)檢測(cè)查找是否成功

      【例】 SEEK查找示例  

      SET DEFAULT  TO D:\MYVFP

      USE   STUDENT1   INDEX  XM,GK,XMCJ,RQ

      SEEK  "   秦飛"

      DISP

      SET  ORDER TO   2

      SEEK  610

      DISP

      GK=586.6

      SEEK  GK   &&直接查找數(shù)值型內(nèi)存變量的值,不用&函數(shù)

      DISP

      -----------本節(jié)課結(jié)束-----------

      5.4 計(jì)算與統(tǒng)計(jì)命令

      計(jì)算和統(tǒng)計(jì)是數(shù)據(jù)庫(kù)應(yīng)用的重要內(nèi)容,VFP具有多項(xiàng)計(jì)算統(tǒng)計(jì)功能,,如按指定條件統(tǒng)計(jì)數(shù)據(jù)表中記錄的個(gè)數(shù),對(duì)指定數(shù)值字段的全部或部分值求和或求平均計(jì)算,以及按要求對(duì)其中的某些數(shù)據(jù)做綜合匯總等。本節(jié)主要介紹VFP提供的“記錄個(gè)數(shù)的統(tǒng)計(jì)、求和求平均值、匯總求和及綜合統(tǒng)計(jì)命令的使用。

      1. 統(tǒng)計(jì)命令

      【格式】COUNT  [<范圍>] [FOR <條件表達(dá)式1>]  [WHILE <條件表達(dá)式2>][TO <內(nèi)存變量名表>]

      【功能】計(jì)算當(dāng)前表中指定范圍內(nèi)符合條件的記錄數(shù)。

      【說明】

      FOR <條件表達(dá)式1>或WHILE <條件表達(dá)式2>項(xiàng):表示對(duì)符合條件的記錄進(jìn)行統(tǒng)計(jì)個(gè)數(shù),省略,統(tǒng)計(jì)整個(gè)表中記錄的個(gè)數(shù)。

      省略范圍和條件短語時(shí),則對(duì)表中所有記錄進(jìn)行統(tǒng)計(jì)。

      TO <內(nèi)存變量名表>項(xiàng):選,表示將統(tǒng)計(jì)的結(jié)果依次存入變量中。

      省略TO <內(nèi)存變量名表>項(xiàng),只將統(tǒng)計(jì)的結(jié)果顯示在屏幕上。

      【例】統(tǒng)計(jì)STUDENT.DBF表中年齡大于18歲的記錄。

      SET DEFAULT TO  D:\myvfp

      USE STUDENT

      COUNT ALL FOR 年齡>18  &&統(tǒng)計(jì)結(jié)果顯示在狀態(tài)欄上。

      2. 求和及求平均值

      【格式】SUM|AVERAGE  [<數(shù)值表達(dá)式表>] [<范圍>][FOR  <條件表達(dá)式1>] [WHILE <條件表達(dá)式2>]

      [TO <內(nèi)存變量名表>|ARRAY  <數(shù)組名>]

      【功能】對(duì)<數(shù)值表達(dá)式表>的各個(gè)表達(dá)式求和(SUM)或者求平均值(AVERAGE)。

      【說明】

      <范圍>:有四種情況:RECORD<n>,NEXT <N>,REST,ALL

      <數(shù)值表達(dá)式表>中各表達(dá)式的和或均值可依次存入<內(nèi)存變量表>或數(shù)組中,內(nèi)存變量的數(shù)目要與表達(dá)式表的數(shù)量相同,其間用逗號(hào)分隔。如果省略表達(dá)式表,則對(duì)當(dāng)前表的所有數(shù)值型字段求和(或求平均值)。

      缺省范圍和條件短語,則對(duì)所有數(shù)值字段進(jìn)行列向求和或求平均值。

      3. 綜合計(jì)算

      綜合計(jì)算,指通過調(diào)用函數(shù)計(jì)算某個(gè)字段或某些字段的計(jì)數(shù)值、累加值、平均值、最大值和最小值等。

      【格式】calculate  [<表達(dá)式表>][<范圍>][FOR  <條件表達(dá)式1>][WHILE <條件表達(dá)式2>][TO <內(nèi)存變量名表>|ARRAY <數(shù)組名>]

      【功能】分別計(jì)算<表達(dá)式表>中各個(gè)表達(dá)式的值。

      【說明】表達(dá)式常用的函數(shù)分別為別有:計(jì)數(shù)值函數(shù)cnt()、累加值函數(shù)sum()、平均值函數(shù)avg()、最大值函數(shù)max()和最小值函數(shù)min()。除cnt()函數(shù)外,其余四個(gè)函數(shù)的括號(hào)內(nèi)都需指定字段名或表達(dá)式。

      1)〈范圍〉有四種情況:同SUM命令

      2)〈條件〉:選對(duì)符合條件的記錄的字段組成的表達(dá)式作統(tǒng)計(jì)計(jì)算

      3) 范圍和條件都省略時(shí)對(duì)所有記錄

      4)〈表達(dá)式〉必選項(xiàng),由下列函數(shù)組成:

        CNT():無參數(shù),用于計(jì)算數(shù)據(jù)庫(kù)中記錄的個(gè)數(shù);

        MAX(〈表達(dá)式〉):返回〈表達(dá)式〉中的最大值,〈表達(dá)式〉的內(nèi)容可以是數(shù)值型、字符型、日期型、邏輯型字段;

        MIN(〈表達(dá)式〉):返回〈表達(dá)式〉中的最小值,〈表達(dá)式〉可以是數(shù)值型、字符型、日期型、邏輯型字段;

        AVG(〈數(shù)值表達(dá)式〉):計(jì)算數(shù)值表達(dá)式的平均值

        SUM(〈數(shù)值表達(dá)式〉):計(jì)算數(shù)值表達(dá)式的和值

      5)  命令中使用上述函數(shù)時(shí),若不選〈條件〉和〈范圍〉項(xiàng)時(shí),則對(duì)數(shù)據(jù)庫(kù)中的全部記錄進(jìn)行操作,否則,對(duì)范圍內(nèi)符合條件的記錄進(jìn)行操作

      6)  TO〈內(nèi)存變量表〉子句:選將各函數(shù)求出的表達(dá)式的值依次賦值給各個(gè)內(nèi)存變量,省略TO〈內(nèi)存變量〉統(tǒng)計(jì)計(jì)算的結(jié)果不保存。

      【例】要計(jì)算表student.dbf的記錄數(shù),統(tǒng)計(jì)所有學(xué)生的最小年齡和平均年齡。

      use student

      calculate  cnt(),min(年齡),avg(年齡) TO JS,ZXNL,PJNL

      4. 分類匯總

      【格式】TOTAL  TO 〈匯總表文件名〉 [范圍] ON〈關(guān)鍵字〉[FIELDS〈數(shù)值表達(dá)式〉] [FOR〈條件〉] [WHILE 〈條件〉]

      【功能】對(duì)當(dāng)前表文件中的數(shù)值字段進(jìn)行分類匯總,并產(chǎn)生一個(gè)新的匯總表文件(.dbf)

      【說明】

      1)  TO 〈匯總表文件名〉:表示匯總結(jié)果的新表文件名

      2)  ON〈關(guān)鍵字〉:表示分類匯總的表文件必須按〈關(guān)鍵字〉字段排序或索引(按哪個(gè)字段分類,就需按哪個(gè)字段排序或索引)

      3)  范圍:選表示分類匯總表記錄的范圍

      4)  FOR〈條件〉:用來指定一個(gè)條件,表示只有對(duì)符合條件的記錄進(jìn)行分類匯總

      5)  WHILE〈條件〉:表示表中的記錄一直被分類匯總,直到WHILE中規(guī)定的條件為假,即執(zhí)行到第一個(gè)條件為假的記錄,便停止操作

      6)  若條件、范圍子句都不選,則對(duì)全部記錄

      7)  TOTAL匯總時(shí),每遇到一個(gè)新〈關(guān)鍵字〉的值(即分類的類別)改變,就將具有該值的第一條記錄存入?yún)R總表文件,然后對(duì)該值的記錄指定的N型字段匯總,匯總結(jié)果填入?yún)R總表中相應(yīng)字段內(nèi),即把具有該關(guān)鍵字值的第一個(gè)記錄存入〈匯總表〉文件中。

      【例】對(duì)STUDENT。DBF表按性別字段分類,對(duì)高考成績(jī)匯總,產(chǎn)生新的匯總表文件為XBGKHZ.DBF, 要求把匯總表保存到D:\MYVFP文件夾中.

        USE D:\MYVFP\STUDENT

        INDEX ON 性別 TO D:\MYVFP\XBSY

        LIST

        TOTAL ON 性別 TO   D:\MYVFP\XBGKHZ  FIELDS 高考成績(jī)

        USE   D:\MYVFP\XBGKHZ

        LIST

      -----------本節(jié)課結(jié)束-----------

      講述

      順序查詢
      10分鐘

      繼續(xù)查找命令5分鐘

       

      Find查找命令10分鐘

       

      Seek查找命令15分鐘

      統(tǒng)計(jì)命令
      5分鐘

      求和及平均值8分鐘

       

      綜合計(jì)算
      5分鐘

      分類匯總
      15分鐘

       


      日韩无码第一页,一区_97资源人妻碰碰碰_有码无码人妻Av_午夜亚洲国产理论片2020网站 亚洲无码片AV一级 岛国av无码专区免费看
      <style id="uedzd"></style>
    3. <style id="uedzd"></style>
    4. <dfn id="uedzd"></dfn>
    5. <dfn id="uedzd"></dfn>
      1. <ruby id="uedzd"></ruby>
        <ruby id="uedzd"></ruby>