2011年全國計(jì)算機(jī)等級考試二級VFP完全筆記(16)

字號:

2011年全國計(jì)算機(jī)等級考試二級VFP完全筆記(16)

    六、視圖與查詢
    (一)視圖文件(.vue)
    1.定義:視圖是一個(gè)定制的虛擬表,可以是本地的、遠(yuǎn)程的或帶參數(shù)的;它是操作表的一種手段,不存于磁盤。
    2.數(shù)據(jù)源:數(shù)據(jù)庫表、自由表或其他視圖等。
    3.作用:通過視圖可查詢表也可更新表。
    4.特點(diǎn):它依賴表,不能獨(dú)立存在,且只有在包含視圖的數(shù)據(jù)庫打開時(shí)才能使用。
    5.分類:根據(jù)創(chuàng)建視圖的數(shù)據(jù)來源分為兩類
    1)本地視圖:使用當(dāng)前數(shù)據(jù)庫的表建立的視圖
    2)遠(yuǎn)程視圖:使用當(dāng)前數(shù)據(jù)庫之外的數(shù)據(jù)源創(chuàng)建的試圖
    6.建立視圖的方法:
    1)根據(jù)視圖設(shè)計(jì)器
    & 文件—新建—文件類型:視圖—新建文件—打開視圖設(shè)計(jì)器—保存
    & 打開項(xiàng)目管理器—數(shù)據(jù)選項(xiàng)卡—展開數(shù)據(jù)庫至本地視圖—新建—打開視圖設(shè)計(jì)器—保存
    & 打開數(shù)據(jù)庫設(shè)計(jì)器—右擊/數(shù)據(jù)庫菜單—新建本地視圖—打開視圖設(shè)計(jì)器—保存
    & 命令:create view
    2)根據(jù)表的查詢定義視圖
    & 格式為:create view 視圖文件名 as select語句
    即把select語句查詢出的信息作為視圖文件的內(nèi)容
    7.視圖中的虛字段:即通過算術(shù)表達(dá)式或函數(shù)計(jì)算出來的字段,并不存于表中。
    8.刪除視圖文件:
    & 數(shù)據(jù)庫設(shè)計(jì)器中—右擊視圖名—刪除—移去
    & 命令:drop view 視圖文件名
    注意:視圖可像基本表一樣使用,適用于基本表的命令基本都可用于視圖,但視圖不支持modify structure命令
    9.視圖參數(shù):在篩選處寫為?X即可
    10.視圖的更新功能:即更新視圖文件中的內(nèi)容后,建立此視圖文件的基本表的內(nèi)容也會有相應(yīng)的更新。
    方法:必須先設(shè)定更新條件,鑰匙圖標(biāo)下選定關(guān)鍵字,鉛筆圖標(biāo)下選定可更新的字段,再選中發(fā)送SQL更新選項(xiàng),保存后即可實(shí)現(xiàn)相應(yīng)的更新。
    (二)查詢文件(.qpr)
    1.定義:查詢是預(yù)先定義好的一個(gè)select語句,在不同的需要場合可以直接或反復(fù)使用,它是從指定的表或視圖中提取滿足條件的記錄,然后按照想得到的輸出類型定向輸出查詢結(jié)果,保存于磁盤,是一個(gè)文本文件??傊?,它是vf支持的一種數(shù)據(jù)對象,或是為方便檢索數(shù)據(jù)提供的一種工具或方法。
    2.數(shù)據(jù)源:數(shù)據(jù)庫表、自由表或視圖
    3.作用:數(shù)據(jù)查詢
    4.建立查詢的方法:
    & 文件—新建—文件類型:查詢—新建文件—打開查詢設(shè)計(jì)器—保存
    & 打開項(xiàng)目管理器—數(shù)據(jù)選項(xiàng)卡—查詢—新建—打開查詢設(shè)計(jì)器—保存
    & 命令:create query
    注意:當(dāng)一個(gè)查詢是基于多個(gè)表時(shí),這些表必須是有聯(lián)系的,查詢設(shè)計(jì)器會自動根據(jù)聯(lián)系提取聯(lián)接條件,但它只能建立一些比較規(guī)則的查詢,而復(fù)雜的查詢則無法完成。
    5.查詢設(shè)計(jì)器中各選項(xiàng)卡與select語句的對應(yīng)關(guān)系:
    ² 選擇了創(chuàng)建查詢的表或視圖——from短語
    ² 字段選項(xiàng)卡——select短語,指定需要查詢的數(shù)據(jù)
    ² 聯(lián)接選項(xiàng)卡——join on短語,用于編輯聯(lián)接條件
    ² 篩選選項(xiàng)卡——where短語,用于指定查詢的條件
    ² 排序依據(jù)選項(xiàng)卡——order by短語,用于指定排序的字段和排序方式
    ² 分組依據(jù)選項(xiàng)卡——group by短語和having短語,用于指定分組的依據(jù)
    ² 雜項(xiàng)選項(xiàng)卡——可以指定是否要重復(fù)記錄(對應(yīng)于distinct短語)
    還可指定列在前面的記錄(對應(yīng)于top短語)
    6.執(zhí)行查詢文件的方法:
    & 打開項(xiàng)目管理器—數(shù)據(jù)選項(xiàng)卡—展開至相應(yīng)查詢文件—單擊“運(yùn)行“
    & 常用工具欄—運(yùn)行(有感嘆號標(biāo)志)
    & 程序—運(yùn)行—選中查詢文件—運(yùn)行
    & 打開查詢設(shè)計(jì)器—運(yùn)行查詢
    & 命令:do 查詢文件名.qpr(查詢文件的擴(kuò)展名不可以省略)
    7.查詢?nèi)ハ颍?在查詢菜單下)
    方法:查詢菜單—單擊查詢?nèi)ハ颉蜷_查詢?nèi)ハ颉x擇查詢結(jié)果的去向
    ² 瀏覽—在“瀏覽”(browse)窗口中顯示查詢結(jié)果(默認(rèn)的輸出方向)
    ² 臨時(shí)表—將查詢結(jié)果存儲在一個(gè)命名的臨時(shí)只讀表中
    ² 表—將查詢結(jié)果保存在一個(gè)命名的表中
    ² 圖形—使查詢結(jié)果可用于MS graph中
    ² 屏幕—在vf主窗口或當(dāng)前活動輸出窗口顯示查詢結(jié)果
    ² 報(bào)表—將查詢結(jié)果輸出到一個(gè)報(bào)表文件(.frx)
    ² 標(biāo)簽—將查詢結(jié)果輸出到一個(gè)標(biāo)簽文件(.lbx)
    (三)視圖文件與查詢文件的區(qū)別:
    1.查詢設(shè)計(jì)器的結(jié)果將以qpr為擴(kuò)展名的文件保存于磁盤中
    視圖設(shè)計(jì)器的結(jié)果則保存在數(shù)據(jù)庫中
    2.視圖文件可以更新,而查詢不可以
    3.查詢中有查詢?nèi)ハ虻膯栴},而視圖中則沒有
    [NextPage
    七、程序設(shè)計(jì)基礎(chǔ)
    (一)程序的概念
    1.定義:程序是能夠完成一定任務(wù)的命令的有序集合,存放在以.prg為擴(kuò)展名的程序文件中。
    2.特點(diǎn)(即與命令窗口相比的優(yōu)點(diǎn)):
    1)可以利用編輯器,方便地輸入、修改和保存程序;
    2)可以用多種方式、多次運(yùn)行程序,即程序的調(diào)試;
    3)程序之間可以相互調(diào)用。
    3.關(guān)于程序的幾點(diǎn)說明:
    1)命令注釋:程序中可插入注釋行,以提高程序的可讀性。
    單獨(dú)的注釋行以note或*開頭
    命令行后的注釋以&&開頭
    注意:注釋為非執(zhí)行代碼,不會影響程序的功能。
    2)set talk on/off命令:可設(shè)置執(zhí)行狀態(tài)的信息是否在vf主窗口、狀態(tài)欄或用戶自定義的窗口顯示。
    3)命令分行:程序中每條命令都以回車鍵結(jié)尾,一行只能寫一條命令。若命令需要分行書寫,應(yīng)在一行終了時(shí)鍵入續(xù)行符“;”,再按回車鍵。
    (二)程序文件
    1.定義:又叫命令文件,其默認(rèn)的擴(kuò)展名是.prg。
    2.程序文件的建立:
    1)打開項(xiàng)目管理器—代碼選項(xiàng)卡—程序—新建—打開編輯窗口—編寫程序—保存
    2)文件—新建—文件類型:程序—新建文件—打開編輯窗口—編寫程序—保存
    3)命令:modify command 程序文件名(若文件存在則打開,不存在則新建一個(gè)新文件)
    3.程序文件的執(zhí)行:
    1)程序菜單—運(yùn)行—選擇運(yùn)行程序文件—運(yùn)行
    2)常用工具欄—運(yùn)行(即!標(biāo)志)
    3)命令:do 程序文件名
    注意:程序文件被執(zhí)行的過程中,還應(yīng)了解以下幾個(gè)命令:
    cancel—終止程序運(yùn)行,清除所有的私有變量,返回命令窗口
    do—轉(zhuǎn)去執(zhí)行另一個(gè)程序
    return—結(jié)束當(dāng)前程序的執(zhí)行,返回到調(diào)用它的上級程序,若無上級程序則返回到命令窗口
    quit—退出vf系統(tǒng),返回到操作系統(tǒng)
    4.編程步驟:
    1)建立程序文件—編寫代碼—保存—執(zhí)行
    2)一個(gè)完整的編程所應(yīng)包含的部分:
    ² 輸入數(shù)據(jù)(一個(gè)或多個(gè)數(shù)據(jù))
    ² 對所有輸入數(shù)據(jù)的處理、加工
    ² 輸出數(shù)據(jù)(有零個(gè)或多個(gè)數(shù)據(jù))
    5.程序中的輸入輸出命令:
    1)格式一:inpute 字符表達(dá)式 to 內(nèi)存變量
    功能:等待用戶從鍵盤輸入任意合法表達(dá)式,以回車鍵結(jié)束輸入時(shí)系統(tǒng)將表達(dá)式的值存入指定的內(nèi)存變量,程序繼續(xù)運(yùn)行。
    注意:
    ² 若果選用字符表達(dá)式,那么系統(tǒng)首先顯示該表達(dá)式的值,作為提示信息
    ² 輸入的數(shù)據(jù)可以試常量、變量,也可以是一般的表達(dá)式,不能無數(shù)據(jù)
    ² 輸入字符串時(shí)必須加定界符,輸入邏輯型變量時(shí)要用圓點(diǎn)定界符,輸入日期時(shí)間型常量時(shí)要用花括號
    2)格式二:accept 字符表達(dá)式 to 內(nèi)存變量
    功能:等待用戶從鍵盤輸入字符串,以回車鍵結(jié)束輸入時(shí)系統(tǒng)將該字符串存入指定的內(nèi)存變量,程序繼續(xù)運(yùn)行。
    注意:
    ² 若果選用字符表達(dá)式,那么系統(tǒng)首先顯示該表達(dá)式的值,作為提示信息
    ² 該命令只能接受字符串,在輸入時(shí)不用加定界符,否則系統(tǒng)會把定界符作為字符串本身的一部分
    ² 若不輸入任何內(nèi)容直接按回車鍵,系統(tǒng)會把空串賦給制定的內(nèi)存變量
    3)格式三:wait 字符表達(dá)式 to 內(nèi)存變量[window [at 行,列]][nowait][noclear][timeout 數(shù)值表達(dá)式]
    (三)程序的基本結(jié)構(gòu)
    1.定義:是指程序中命令或語句執(zhí)行的流程結(jié)構(gòu)。
    共有順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)三種。
    2.順序結(jié)構(gòu):是最簡單的程序結(jié)構(gòu),按命令在程序中出現(xiàn)先后次序依次執(zhí)行,最為常用。
    3.選擇結(jié)構(gòu):
    1)定義:根據(jù)條件成立與否,選擇執(zhí)行相關(guān)語句的結(jié)構(gòu)。
    2)類型:if條件語句和do case分支語句
    & if條件語句:
    ①無else子句時(shí):
    if 條件表達(dá)式 如果條件為真,執(zhí)行if下面的命令語句序列
    命令語句序列 如果條件為假,則執(zhí)行endif后面的語句
    endif if-endif必須成對出現(xiàn)
    ②有else子句時(shí):
    if 條件表達(dá)式 如果條件為真,執(zhí)行if下面的命令語句序列1,然后到endif后面的語句
    命令語句序列1 如果條件為假,執(zhí)行else后的命令語句序列2,然后到endif后面的語句
    else if-else-endif必須成對出現(xiàn)
    命令語句序列2
    endif
    注意:有else子句時(shí)還可能出現(xiàn)嵌套,在if-else或者else-endif之間都有可能出現(xiàn)新的if-else-endif語句。
    & do case分支語句
    do case
    case 條件1 如果條件1為真,則執(zhí)行命令語句序列1,然后執(zhí)行endcase后的語句
    命令語句序列1 如果條件1為假,則轉(zhuǎn)去判斷條件2
    case 條件2 如果條件2為真,則執(zhí)行命令語句序列2,然后執(zhí)行endcase后的語句
    命令語句序列2 如果條件2為假,則轉(zhuǎn)去判斷條件3
    …… 依次類推,判斷完所有的條件
    otherwise 如果上述所有條件都為假,那么執(zhí)行otherwise后的語句n后轉(zhuǎn)向endcase后的語句
    命令語句序列n
    endcase
    4.循環(huán)結(jié)構(gòu):
    1)定義:也稱為重復(fù)結(jié)構(gòu),是指程序在執(zhí)行的過程中,其中的某段代碼被重復(fù)執(zhí)行若干次,其中被重復(fù)執(zhí)行的代碼段通常稱為循環(huán)體。
    2)類型:do while – enddo語句、for – endfor語句和scan – endscan語句
    & do while – enddo語句
    ①無loop/exit時(shí):
    do while 條件 當(dāng)條件為真時(shí),執(zhí)行循環(huán)體,到enddo時(shí),返回do while
    語句序列1(循環(huán)體) 處繼續(xù)判斷條件是否為真,以確定是否還執(zhí)行循環(huán)體
    enddo 若條件為假,則結(jié)束該循環(huán),執(zhí)行enddo后面的語句
    注意:若第一次判斷條件為假,則循環(huán)體一次都不被執(zhí)行,直接轉(zhuǎn)至執(zhí)行enddo后的語句;
    do while-enddo必須成對出現(xiàn)
    若do while處條件始終為真,則該循環(huán)為死循環(huán)
    ②有l(wèi)oop/exit時(shí):
    do while 條件 當(dāng)條件為真時(shí),執(zhí)行語句序列1,遇到loop時(shí),結(jié)束本次執(zhí)
    語句序列1 行,也不執(zhí)行l(wèi)oop后的語句序列2,而是直接轉(zhuǎn)回do while
    [loop] 處重新判斷條件的真假;若遇到exit時(shí),則結(jié)束該語句的執(zhí)
    語句序列2 行,其后的語句序列3也不被執(zhí)行,而是轉(zhuǎn)去執(zhí)行enddo后面
    [exit] 的語句
    語句序列3
    enddo
    注意:若第一次判斷條件為假,則其后的所有語句一次都不被執(zhí)行,直接轉(zhuǎn)至執(zhí)行enddo后的語句
    通常loop或exit可單獨(dú)出現(xiàn),也可同時(shí)出現(xiàn)。同時(shí)出現(xiàn)時(shí)經(jīng)常用在循環(huán)體內(nèi)嵌套的選擇語句之中,根據(jù)條件來決定是執(zhí)行l(wèi)oop回去,還是執(zhí)行exit出去,以防止出現(xiàn)矛盾現(xiàn)象
    do while-enddo必須成對出現(xiàn)
    若do while處條件始終為真,則該循環(huán)為死循環(huán)
    ③兩個(gè)重要的推論:
    推論一:完成對表中所有滿足條件的記錄循環(huán)操作的目的
    locate for 條件(即定位表達(dá)式) 使指針定位于當(dāng)前表中滿足條件的第一條記錄上
    do while found() 若found()函數(shù)返回值為真,則執(zhí)行其后的語句序列
    語句序列 遇到continue時(shí),返回do while處重新判斷found()函數(shù)的值是否為真
    continue 為真就繼續(xù)執(zhí)行語句序列,若found函數(shù)的值為假,則轉(zhuǎn)去執(zhí)行enddo后的語句
    enddo
    推論二:完成對表中每條記錄逐條操作的目的
    go top 使指針指向當(dāng)前表中的首記錄
    do while not eof() 若不在文件尾為真,則執(zhí)行語句序列,遇到skip時(shí)
    語句序列 表中指針向下跳一下,而此程序則返回到do while處
    skip n(n默認(rèn)為1) 繼續(xù)判斷not eof()是否為真,為真就繼續(xù)執(zhí)行語句序列
    enddo 若not eof()為假,則轉(zhuǎn)去執(zhí)行enddo后的語句
    & for – endfor語句:用于某個(gè)值域范圍內(nèi)的循環(huán)
    for 循環(huán)變量=初值 to 終值 [step 步長n] 先把初值賦給循環(huán)變量,然后判斷循環(huán)條件
    循環(huán)體 是否成立;成立則執(zhí)行循環(huán)體,然后給循環(huán)變量增加一個(gè)步長值并再次判斷循環(huán)條件是否成立endfor 以確定是否再次執(zhí)行循環(huán)體。若循環(huán)條件不成立,則結(jié)束該循環(huán),轉(zhuǎn)去執(zhí)行endfor后的語句
    注意:若步長n為正值,循環(huán)條件為:循環(huán)變量<=終值;若步長n為負(fù)數(shù),循環(huán)條件為:循環(huán)變量>=終值;n的默認(rèn)值為1可省略
    & scan – endscan語句:
    scan [范圍] [for 條件1] [while 條件2] 若條件為真,則執(zhí)行循環(huán)體
    語句序列(循環(huán)體) 遇到endscan時(shí)返回scan for條件處繼續(xù)判斷條件是否為真
    endscan 為真繼續(xù)執(zhí)行循環(huán)體,若條件為假,則轉(zhuǎn)去執(zhí)行endscan后的語句
    (四)多模塊程序
    1.模塊的定義:
    1)概念:模塊可以是命令文件,也可以是過程。是指一個(gè)相對獨(dú)立的程序段,可被其他模塊調(diào)用也可調(diào)用其他模塊。
    2)過程定義的語法格式:
    procedure/function 過程名 過程名必須以字母或下劃線開頭,可包含字母、數(shù)字和下劃線
    命令序列 若執(zhí)行return命令,轉(zhuǎn)回到調(diào)用程序并返回表達(dá)式的值;若缺省return命令則在過程結(jié)
    [return [表達(dá)式]] 束處執(zhí)行一個(gè)隱含的return命令;若return不帶表達(dá)式,則返回邏輯真值
    [endproc/endfunc] 若缺省此命令,則過程結(jié)束于下一條precedure/function命令或文件尾處
    3)過程文件:
    ² 建立:modify command 命令,文件默認(rèn)擴(kuò)展名為.prg
    ² 打開:set procedure to 過程文件名1,…過程文件名n
    ² 關(guān)閉:set procedure to ——可關(guān)閉所有打開的過程文件
    4)過程(模塊)的位置:3種
    ² 單獨(dú)過程即獨(dú)立過程
    ² 包含在主程序中的過程,在主程序代碼的后面
    ² 包含在過程文件中的過程
    2.模塊的調(diào)用
    1)模塊的調(diào)用格式:2種
    ² 格式1:do 過程名 一般無返回值
    ² 格式2:過程名() 作為命令使用時(shí)返回被忽略,作為函數(shù)時(shí)有返回值
    3.參數(shù)傳遞
    4.變量的作用域