VFP完整版.ppt_第1頁
VFP完整版.ppt_第2頁
VFP完整版.ppt_第3頁
VFP完整版.ppt_第4頁
VFP完整版.ppt_第5頁
已閱讀5頁,還剩304頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1 數(shù)據(jù)庫技術(shù)與應(yīng)用 2 前言 1 VisualFoxPro6 0關(guān)系數(shù)據(jù)庫管理系統(tǒng)是新一代數(shù)據(jù)庫管理系統(tǒng)的杰出代表 以它強(qiáng)大的性能 完整而又豐富的工具 超高速的速度 極其友好的界面 以及完備的兼容性等特點(diǎn) 吸引眾多的國內(nèi)外用戶 倍受廣大用戶的歡迎 3 VisualFoxPro6 0的顯著特點(diǎn) 可運(yùn)行于Windows98 2000 XP和WindowsNT平臺(tái)不僅可以簡化數(shù)據(jù)庫管理 而且能使應(yīng)用程序的開發(fā)流程更為合理使組織數(shù)據(jù) 定義數(shù)據(jù)庫規(guī)則和建立應(yīng)用程序等工作變得簡單易行用戶利用可視化的設(shè)計(jì)工具和向?qū)?可以快速創(chuàng)建表單 查詢和打印報(bào)表 提供了一個(gè)集成化的系統(tǒng)開發(fā)環(huán)境 支持過程式編程技術(shù) 支持面向?qū)ο罂梢暬幊碳夹g(shù) 在語言方面作了強(qiáng)大的擴(kuò)充 前言 2 4 根據(jù)教育部提出的非計(jì)算機(jī)專業(yè)計(jì)算機(jī)基礎(chǔ)教學(xué)三個(gè)層次要求配合全國計(jì)算機(jī)等級考試 VisualFoxPro二級 考試大綱的知識(shí)要點(diǎn)以VisualFoxPro6 0為主要內(nèi)容 介紹關(guān)系數(shù)據(jù)庫管理系統(tǒng)基礎(chǔ)理論及應(yīng)用系統(tǒng)開發(fā)知識(shí)主要內(nèi)容 數(shù)據(jù)庫基礎(chǔ)理論 VisualFoxPro6 0的基本操作 面向?qū)ο罂梢暬幊?應(yīng)用系統(tǒng)開發(fā)的方法 步驟 課程概述 5 第一章VisualFoxPro程序開發(fā)環(huán)境第二章VisualFoxPro6 0的語言元素第三章表與數(shù)據(jù)庫第四章查詢和視圖第五章表單設(shè)計(jì)第六章建立報(bào)表與標(biāo)簽第七章菜單與工具欄設(shè)計(jì)第八章程序設(shè)計(jì) 目錄 6 第一章VisualFoxPro程序開發(fā)環(huán)境 1 1數(shù)據(jù)庫系統(tǒng)的基本概念1 2VisualFoxPro6 0的發(fā)展與特點(diǎn)1 3用戶界面 7 1 1數(shù)據(jù)庫系統(tǒng)的基本概念 1 1 1數(shù)據(jù) 信息與數(shù)據(jù)處理一 概念數(shù)據(jù) 一種符號系列 用來記錄事物的情況 信息 經(jīng)過加工處理的 對人類社會(huì)有用的數(shù)據(jù) 數(shù)據(jù)處理 對數(shù)據(jù)進(jìn)行收集 存儲(chǔ) 加工 傳輸?shù)纫幌盗谢顒?dòng)總和 信息 數(shù)據(jù) 處理 二 數(shù)據(jù)處理技術(shù)的發(fā)展三個(gè)主要階段 1 程序管理 2 文件系統(tǒng) 3 數(shù)據(jù)庫技術(shù) 8 1 1 2數(shù)據(jù)庫系統(tǒng) 數(shù)據(jù)庫 Database 指存儲(chǔ)在外存上的有結(jié)構(gòu)的數(shù)據(jù)集合 數(shù)據(jù)庫管理系統(tǒng) DBMS DatabaseManagementSystem 一個(gè)在操作系統(tǒng)支持下 對數(shù)據(jù)庫進(jìn)行各種操作的軟件系統(tǒng) 用來幫助用戶建立 使用和管理數(shù)據(jù)庫 并對數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行各種操作 如 增刪 更新 查找 輸出等 數(shù)據(jù)庫應(yīng)用系統(tǒng)人機(jī)系統(tǒng) 包含 用戶 計(jì)算機(jī)硬件 數(shù)據(jù)庫 數(shù)據(jù)庫管理系統(tǒng)和為用戶編寫的應(yīng)用程序 以便對數(shù)據(jù)庫進(jìn)行操作 9 1 1 3數(shù)據(jù)模型 一 數(shù)據(jù)庫的數(shù)據(jù)組織形式 實(shí)體及其聯(lián)系 實(shí)體 現(xiàn)實(shí)世界可被識(shí)別事物的抽象命名 如 人 屬性 實(shí)體的抽象描述 任何實(shí)體都有屬性去描述 屬性是事物性質(zhì)的抽象 如 人的姓名 年齡 性別 關(guān)鍵字 區(qū)別實(shí)體集合中不同個(gè)體的屬性 如 學(xué)號 二 數(shù)據(jù)模型的分類 1 層次模型 采用樹型結(jié)構(gòu) 2 網(wǎng)絡(luò)模型 采用無向圖型結(jié)構(gòu) 3 關(guān)系模型 采用二維表結(jié)構(gòu) 10 三 關(guān)系模型的特點(diǎn) 關(guān)系模型將數(shù)據(jù)組織成二維表的形式 表中每列數(shù)據(jù)屬于同一類型 表中不允許有重復(fù)的字段名 表中不允許有相同的行 表中行和列的順序可以任意 一張二維表構(gòu)成的關(guān)系模型應(yīng)滿足以下條件 11 1 1 4關(guān)系數(shù)據(jù)庫 關(guān)系模型具有結(jié)構(gòu)簡單 操作簡便 理論嚴(yán)謹(jǐn) 表示能力強(qiáng)等優(yōu)點(diǎn) 用關(guān)系模型所設(shè)計(jì)的數(shù)據(jù)庫稱為關(guān)系數(shù)據(jù)庫 一 關(guān)系數(shù)據(jù)庫的五個(gè)層次字符 character 標(biāo)識(shí)實(shí)體屬性的符號集 包括數(shù)字 0 9 字母 A Z a z 和其他符號 這些字符每個(gè)在計(jì)算機(jī)中占據(jù)一個(gè)字節(jié) byte 漢字系統(tǒng)中的每個(gè)漢字占據(jù)兩個(gè)字節(jié) 字段 field 最基本的不可再分的有名字的數(shù)據(jù)單位 一個(gè)字段由一個(gè)或多個(gè)字符組成 字符的個(gè)數(shù)即為字段的長度 記錄 record 描述一個(gè)個(gè)體的數(shù)據(jù)集合 由若干字段組成 組成記錄的字段的長度之和稱為記錄的長度 表 table 按一定結(jié)構(gòu)存儲(chǔ)的一組相關(guān)的數(shù)據(jù) 由若干記錄組成 記錄中的字段規(guī)定了表中數(shù)據(jù)的結(jié)構(gòu) 數(shù)據(jù)庫 database 表與關(guān)系的集合 關(guān)系 relation 相關(guān)表之間的聯(lián)系 12 二 八種元素 1 字段 field 2 記錄 record 3 表 table 4 數(shù)據(jù)庫 database 5 索引 index 6 查詢 query 7 視圖 view 8 過濾器 filter 三 關(guān)系運(yùn)算關(guān)系模型中的關(guān)系表現(xiàn)為一張二維表 關(guān)系運(yùn)算是指在關(guān)系 表 的層面上進(jìn)行的操作 選擇 投影 連接 選擇 在一個(gè)表中選出滿足指定條件的記錄 投影 在一個(gè)表中選出各記錄的若干指定字段的值 連接 將兩個(gè)表的記錄按一定的條件連接成一個(gè)新表的記錄 13 1 2VFP6 0的發(fā)展與特點(diǎn) 1 2 1發(fā)展是一個(gè)在Windows95 98和WindowsNT環(huán)境下運(yùn)行的典型的關(guān)系數(shù)據(jù)庫管理系統(tǒng)早期的dBase 到FoxBase FoxPro1995年Windows95面世 VisualFoxPro3 0 VisualFoxPro5 0 VisualFoxPro8 0 現(xiàn)在的版本 其卓越的數(shù)據(jù)庫處理性能 良好的開發(fā)環(huán)境贏得了廣大用戶的喜愛VisualFoxPro是目前微機(jī)上最為流行的關(guān)系數(shù)據(jù)庫管理系統(tǒng)之一 14 1 3用戶界面 VisualFoxPro6 0的安裝和啟動(dòng)與其它Windows下的應(yīng)用程序類似 用戶界面也是標(biāo)準(zhǔn)的Windows風(fēng)格 啟動(dòng)VisualFoxPro6 0以后 即可看到它的主窗口 主窗口由菜單欄 工具欄以及命令窗口等組成 VisualFoxPro6 0使用不同類型的窗口以便完成各種不同的任務(wù) 在VisualFoxPro6 0的各種平臺(tái)上 除菜單外的所有部件都是窗口 包括工具欄在內(nèi) 用戶可以同時(shí)打開多個(gè)窗口 可以使用Windows下的窗口操作方法對VisualFoxPro6 0的窗口進(jìn)行操作 如移動(dòng) 改變大小等 15 工具欄是單擊后可以執(zhí)行常用任務(wù)的一組按鈕 工具欄可以浮動(dòng)在窗口中 也可以停放在VisualFoxPro6 0主窗口的上部 下部或兩邊 有效地使用工具欄 可以簡化從菜單中進(jìn)行選取的步驟 達(dá)到快速執(zhí)行命令的效果 VisualFoxPro6 0中提供有各種類型的工具欄 默認(rèn)情況下只有 常用 工具欄可見 若要激活一個(gè)工具欄 方法一 顯示 菜單 工具欄 工具欄 對話框 方法二 工具欄上右擊 工具欄列表 1 3 2工具欄 16 VisualFoxPro6 0的配置決定了VFP的外觀和行為 例如建立VFP文件的默認(rèn)位置 指定如何在編輯窗口中顯示源代碼及日期與時(shí)間的格式等 設(shè)置既可以是臨時(shí)的 只在當(dāng)前工作期有效 也可以是永久的 它們變?yōu)橄麓螁?dòng)VFP時(shí)的默認(rèn)設(shè)置值 如果是臨時(shí)設(shè)置 那么它們保存在內(nèi)存中并在退出VFP時(shí)釋放 如果是永久設(shè)置 那么它們將保存在Windows注冊表中 1 3 3配置VisualFoxPro6 0 17 1 工具 菜單 選項(xiàng) 命令 打開 選項(xiàng) 對話框 選項(xiàng) 對話框具有一系列代表不同類別環(huán)境選項(xiàng)的選項(xiàng)卡 2 在 選項(xiàng) 對話框按照自己的需要進(jìn)行設(shè)置 3 保存所做的設(shè)置 二 使用 選項(xiàng) 對話框查看或更改環(huán)境設(shè)置 把設(shè)置保存為僅在當(dāng)前工作期有效 在 選項(xiàng) 對話框中設(shè)置好以后 選擇 確定 按鈕 當(dāng)把設(shè)置保存為僅在當(dāng)前工作期有效時(shí) 它們一直起作用直到您退出VFP 或直到再次更改它們 永久保存所做的更改 在 選項(xiàng) 對話框中設(shè)置好以后選擇 設(shè)置為默認(rèn)值 按鈕 把它們保存為默認(rèn)設(shè)置 這將把它們存儲(chǔ)在Windows注冊表中 當(dāng)選擇出現(xiàn)在對話框每個(gè)選項(xiàng)卡上的 設(shè)置為默認(rèn)值 按鈕時(shí) VFP保存所有選項(xiàng)卡上的所有選項(xiàng) 18 VisualFoxPro6 0提供給用戶的三種交互式的可視化開發(fā)工具 1 3 4設(shè)計(jì)器 向?qū)?生成器 一 設(shè)計(jì)器 Designer 設(shè)計(jì)器集成了用于設(shè)計(jì)對象的各種操作 并賦予可視化提示 二 向?qū)?Wizard 把一些復(fù)雜的操作分解為若干簡單的步驟來完成 每一步使用一個(gè)對話框 用戶只要逐步回答向?qū)岢龅膯栴} 向?qū)П憧梢宰詣?dòng)替你完成相應(yīng)的任務(wù) 啟動(dòng)向?qū)?工具 菜單 向?qū)?子菜單 三 生成器 Builder 功能主要是為對象方便 快速地設(shè)置一些輔助選項(xiàng) 如幫助用戶對特定的對象設(shè)置屬性 或者組合子句創(chuàng)建特定的表達(dá)式等 與向?qū)Р煌?生成器是可重入的 就可以不止一次地打開某一對象的生成器 19 VisualFoxPro6 0的幫助系統(tǒng)是一個(gè)十分有效的信息系統(tǒng) 就象一本內(nèi)容豐富的使用手冊 使用戶不離開VisualFoxPro6 0環(huán)境就能檢索到其各種幫助信息 一 進(jìn)入幫助系統(tǒng)方法一 在窗口中輸入 Help 命令 方法二 使用 幫助 菜單 方法三 按 F1 功能鍵 二 MSDN系統(tǒng)界面啟動(dòng)幫助后 就會(huì)見到MSDN的系統(tǒng)界面 MSDN的系統(tǒng)界面是MicrosoftVisualStudio6 0 包括VisualFoxPro6 0 向用戶提供幫助信息的一個(gè)服務(wù)界面 在MSDN界面中有四個(gè)選項(xiàng)卡 目錄 索引 搜索和書簽 選取 目錄 選項(xiàng)卡將看到MSDN系統(tǒng)幫助內(nèi)容的目錄 選中需要獲得幫助的主題 雙擊該主題立即就會(huì)在該主題下列出所有的子主題 用同樣的方法找到所需幫助的對象 雙擊選中的主題就會(huì)把該對象的詳細(xì)信息列出來 選取 索引 選項(xiàng)則可根據(jù)關(guān)鍵詞進(jìn)行定位查詢 如果還想查詢別的主題 可以按 搜索 和 書簽 選項(xiàng)卡進(jìn)行查詢 繼續(xù)尋求幫助 當(dāng)想回到主界面時(shí) 只需按 主頁 按鈕即可 1 3 5幫助系統(tǒng) 20 第二章VisualFoxPro6 0的語言元素 2 1數(shù)據(jù)與數(shù)據(jù)類型2 2函數(shù)2 3運(yùn)算與表達(dá)式2 4VisualFoxPro6 0命令 21 程序中有常量 變量 函數(shù)等數(shù)據(jù) 數(shù)據(jù)有不同的類型數(shù)據(jù)容器 用戶存放數(shù)據(jù)的地方 例如常量 變量 數(shù)組 記錄 對象 等等 2 1 1常量與變量 常量 在程序運(yùn)行的過程中其值固定不變的量 變量 在程序運(yùn)行的過程中其值會(huì)改變的量 變量名必須遵守以下原則 以字母或漢字開頭 變量名中只能含有字母 漢字 數(shù)字和下劃線 變量名不能是VisualFoxPro6 0的保留字 如對象名 系統(tǒng)預(yù)先定義的函數(shù)名等 2 1數(shù)據(jù)與數(shù)據(jù)類型 22 2 1 2變量類型 數(shù)據(jù)庫中的變量按存放形式分為兩種 一 字段變量 數(shù)據(jù)庫中定義的字段名 字段變量是指數(shù)據(jù)庫表中已定義好的任一數(shù)據(jù)項(xiàng) 如果一個(gè)數(shù)據(jù)表中有20條記錄 每一個(gè)字段名就有20個(gè)可取值 在數(shù)據(jù)表有一個(gè)記錄指針 它指向的記錄定義為當(dāng)前記錄 字段名變量的現(xiàn)值就是當(dāng)前記錄中對應(yīng)字段的值 記錄指針可以移動(dòng) 因此字段名的取值隨著指針的移動(dòng)而改變 所以字段是變量 二 內(nèi)存變量 不依賴數(shù)據(jù)庫而獨(dú)立存在的變量 內(nèi)存變量是內(nèi)存中的一個(gè)存儲(chǔ)單元 這個(gè)存儲(chǔ)單元中存放的數(shù)據(jù)就是內(nèi)存變量的值 內(nèi)存變量由賦值語句定義 它的數(shù)據(jù)類型取決于賦值數(shù)據(jù)的類型 內(nèi)存變量是獨(dú)立于數(shù)據(jù)庫文件而存在的變量 用來存儲(chǔ)數(shù)據(jù)處理過程中所需要的中間結(jié)果和最終結(jié)果 它參與計(jì)算處理 還可以作為控制變量 用來控制應(yīng)用程序的運(yùn)行 內(nèi)存變量是一種臨時(shí)工作單元 需要時(shí)可以臨時(shí)定義 不需要時(shí)可以隨時(shí)釋放 23 數(shù)據(jù)是信息的表現(xiàn)形式 數(shù)據(jù)有不同的類型 數(shù)據(jù)處理的基本原則是對不同類型的數(shù)據(jù)進(jìn)行不同的操作 所有的VisualFoxPro6 0數(shù)據(jù)都有其所屬的類型 內(nèi)存變量有五種類型 字符型 數(shù)值型 邏輯型 日期型 貨幣型 2 1 3數(shù)據(jù)類型 1 字符型 Character 通常用來表示文本類型的信息 由中英文字符 數(shù)字 空格和各種專用符號組成 兩個(gè)或兩個(gè)以上字符型數(shù)據(jù)的組合稱為字符串 用定界符括起來的字符串即為字符型常量 定界符規(guī)定為 若一種定界符已作為字符型常量的組成部分 應(yīng)選擇另一種定界符來標(biāo)識(shí)字符串 字符型數(shù)據(jù)如 STRING 昆明市 123 2 數(shù)值型 Numeric 數(shù)據(jù) 數(shù)值型數(shù)據(jù)由數(shù)字 小數(shù)點(diǎn)和正負(fù)號等組成 包括整數(shù) 1268 小數(shù) 0 38 負(fù)數(shù) 112 浮點(diǎn)數(shù) 148 931 科學(xué)計(jì)算數(shù) 2E 8 等 數(shù)值型數(shù)據(jù)用來進(jìn)行數(shù)學(xué)運(yùn)算 24 3 邏輯型 Logic 數(shù)據(jù) 表示邏輯判斷結(jié)果的值 邏輯型數(shù)據(jù)只有兩個(gè)值 邏輯值True 真 T 或邏輯值False 假 F 如表達(dá)式3 4的運(yùn)算結(jié)果為 F 4 日期型 Date 和日期時(shí)間型 DateTime 數(shù)據(jù) 表示日期和時(shí)間的特殊數(shù)據(jù) 用 作為定界符 系統(tǒng)默認(rèn)的格式為 月 日 年時(shí) 分 秒 如 12 22 0210 30 20 嚴(yán)格格式用 yyyy mm ddhh mm ssa p 表示 如 2002 12 2210 30 20p 5 貨幣型 Currency 貨幣單位數(shù)據(jù) 在使用貨幣型數(shù)據(jù)時(shí)將數(shù)字前加貨幣符號 如 123 45 567 90 25 字段類型類型名稱說明大小應(yīng)用舉例字符型 Character 數(shù)字 字母 符號254人員簡歷 產(chǎn)品簡介 26 2 1 4數(shù)組 數(shù)組是一批數(shù)據(jù)的有序集合數(shù)組中的每一個(gè)數(shù)據(jù)稱為一個(gè)數(shù)組元素 在VisualFoxPro6 0中 數(shù)組元素均為內(nèi)存變量 數(shù)組必須先定義后使用 定義數(shù)組的命令為 DECLARE 27 2 2函數(shù) 根據(jù)自變量 參數(shù) 的值由一定的規(guī)則得到一個(gè)單一的值 VisualFoxPro6 0向用戶提供了豐富的標(biāo)準(zhǔn)函數(shù) 常用的函數(shù)類型有 數(shù)值型 字符型 邏輯型 轉(zhuǎn)換型及輸入型等 函數(shù)的一般形式是 參數(shù)表 VFP的函數(shù)與數(shù)學(xué)函數(shù)沒有根本的區(qū)別 在使用函數(shù)時(shí)應(yīng)注意 1 所有函數(shù)必須跟隨有園括號 無論函數(shù)是否需要參數(shù) 除宏代換函數(shù) 外 2 每個(gè)函數(shù)必然有一個(gè)返回值 返回值有確定的數(shù)據(jù)類型 3 傳送給函數(shù)的參數(shù)有一定的數(shù)據(jù)類型 必須按要求的數(shù)據(jù)類型傳送參數(shù)值 28 VisualFoxPro6 0使用四種類型的運(yùn)算 算術(shù)運(yùn)算 關(guān)系運(yùn)算 邏輯運(yùn)算和字符運(yùn)算 2 3 1算術(shù)運(yùn)算對數(shù)值進(jìn)行算術(shù)運(yùn)算 運(yùn)算結(jié)果為數(shù)值 貨幣等 它包括6種運(yùn)算 加 減 乘 除 或 乘方 優(yōu)先 優(yōu)先級從高到底為 括號 乘方 乘除 加減 2 3 2關(guān)系運(yùn)算用于對兩個(gè)類型相同的表達(dá)式進(jìn)行比較 參與運(yùn)算的可以是數(shù)值 字符或日期等類型的數(shù)據(jù) 但運(yùn)算結(jié)果為邏輯值 真或假 它包括6種運(yùn)算 大于 等于 不等于 大于等于 數(shù)字型數(shù)據(jù)按其數(shù)值大小進(jìn)行比較 字符型數(shù)據(jù)根據(jù)ASCII碼值的大小進(jìn)行比較 日期型數(shù)據(jù)是按年 月 日的先后進(jìn)行比較 關(guān)系成立值為 T 否則值為 F 例 250 300結(jié)果為 F ABC ABD 結(jié)果為 T CTOD 01 01 2000 CTOD 08 01 2000 結(jié)果為 F 2 3運(yùn)算符與表達(dá)式 29 2 3 2關(guān)系運(yùn)算用于對兩個(gè)類型相同的表達(dá)式進(jìn)行比較參與運(yùn)算的可以是數(shù)值 字符或日期等類型的數(shù)據(jù) 但運(yùn)算結(jié)果為邏輯值 真或假 它包括6種運(yùn)算 大于 等于 不等于 大于等于 數(shù)字型數(shù)據(jù)按其數(shù)值大小進(jìn)行比較 字符型數(shù)據(jù)根據(jù)ASCII碼值的大小進(jìn)行比較 日期型數(shù)據(jù)是按年 月 日的先后進(jìn)行比較 關(guān)系成立值為 T 否則值為 F 例 250 300結(jié)果為 F ABC ABD 結(jié)果為 T CTOD 01 01 2000 CTOD 08 01 2000 結(jié)果為 F 2 3 3邏輯運(yùn)算對一個(gè)或兩個(gè)邏輯表達(dá)式進(jìn)行邏輯運(yùn)算 結(jié)果也為邏輯型 產(chǎn)生邏輯型結(jié)果 真或假 它包括3種運(yùn)算 AND 與 OR 或 NOT 非 優(yōu)先級從高到底為 NOT AND OR 邏輯運(yùn)算符與算術(shù)運(yùn)算符一樣也可利用括號來改變它們之間的操作運(yùn)算的先后順序 邏輯表達(dá)式實(shí)際上是一種判斷條件 條件成立 表達(dá)式值為 T 條件不成立 表達(dá)式值為 F 例 性別 男 AND 專業(yè) 軟件 年齡 60 OR 工齡 30 30 2 3 4字符串運(yùn)算對兩個(gè)字符型數(shù)據(jù)進(jìn)行包含及連接運(yùn)算 1 連接運(yùn)算符 參與運(yùn)算的數(shù)據(jù)與結(jié)果都為字符型 把兩個(gè)字符串連接成一個(gè)新的字符串 把兩個(gè)字符串連接 將第一個(gè)字符串尾部的空格移到新的字符串的末尾例 this isastring 結(jié)果為 thisisastring this isastring 結(jié)果為 thisisastring 2 包含運(yùn)算符 參與運(yùn)算的數(shù)據(jù)為字符型 結(jié)果為邏輯型 表示兩個(gè)字符串之間的包含與被包含的關(guān)系 格式 如果包含在中其結(jié)果為真 否則為假 例 ING STRING 結(jié)果為 T 周遜 周遜教授 結(jié)果為 T this THISISASTRING 結(jié)果為 F 31 由各種數(shù)據(jù) 如常量 變量 函數(shù)通過各種運(yùn)算符聯(lián)結(jié)起來 具有一定意義的式子 表達(dá)式的求值結(jié)果為單個(gè)值 根據(jù)表達(dá)式運(yùn)算結(jié)果的數(shù)據(jù)類型不同 表達(dá)式分為 字符表達(dá)式 數(shù)值表達(dá)式 關(guān)系表達(dá)式 邏輯表達(dá)式 當(dāng)同一表達(dá)式中使用了幾種運(yùn)算符時(shí) 其優(yōu)先級為 算術(shù)運(yùn)算符或字符運(yùn)算符 關(guān)系運(yùn)算符 邏輯運(yùn)算符 同一級別中的全部運(yùn)算為從左至右的順序進(jìn)行 只有在使用了括號的情況下才能改變運(yùn)算順序 3 5 123 and not abc abc 2 3 5表達(dá)式 32 2 4VFP中的命令 VFP的命令又稱為語句 它是充分吸收多種高級語言的優(yōu)點(diǎn)逐步發(fā)展形成的 但比高級語言的語句更精煉 功能更強(qiáng) VFP中的所有任務(wù)都由不同的命令來完成 當(dāng)選擇執(zhí)行某個(gè)菜單中的命令 或通過VFP提供的工具完成某些任務(wù)時(shí) 實(shí)際上也是調(diào)用了一些VFP的命令 只不過這時(shí)的命令由VFP自動(dòng)生成 而不用手工輸入而已常用命令及格式見附錄一 33 2 4 1命令格式 命令由兩部分組成 前面是命令動(dòng)詞 關(guān)鍵字 表示應(yīng)該執(zhí)行的操作 后面是若干短語 參數(shù) 對操作提供某些限制性的說明 命令動(dòng)詞 范圍 表達(dá)式表 for while 范圍 表示操作范圍 ALL 表示選擇全部記錄 NEXTn 表示從表中當(dāng)前記錄開始的n個(gè)記錄 RECORDn 特指第n個(gè)記錄 REST 表示選擇從當(dāng)前記錄開始一直到表中的最后一個(gè)記錄 表達(dá)式表 可以是一個(gè)或多個(gè)由逗號分隔開的表達(dá)式 用來表示命令所進(jìn)行操作的結(jié)果參數(shù) for 對表中滿足條件的所有記錄進(jìn)行操作 while 遇到第一個(gè)不滿足條件的記錄就停止操作 注意 當(dāng) For 條件和 While 條件同時(shí)存在時(shí) WHILE條件將覆蓋 For 條件 34 2 4 2賦值命令與顯示命令 1 賦值命令 給內(nèi)存變量賦值 1 STORE命令功能 建立內(nèi)存變量 并給內(nèi)存變量賦予初值或?yàn)橐呀⒌膬?nèi)存變量重新賦值 格式 STORETO 變量表 STORE命令為單個(gè)變量賦值時(shí) 可以簡寫為 例1STORE1TOx y zSTORE 男 TO性別例2x 1x 2 x 10 x x 1 2 INPUT和ACCEPT命令功能 從鍵盤給內(nèi)存變量賦值格式 INPUT ACCEPT 提示信息 TO 內(nèi)存變量 例 INPUT X TOXACCEPT 請輸入學(xué)生姓名 TOname 3 WAIT命令 35 2 顯示命令 功能 計(jì)算并顯示變量 表達(dá)式和常量的值 格式 例STORE1TOx y z x y z 2 x y z m1 ABC m2 DEF m1 m2 Iamastudent 3 5 4 3 5 4 3 5 4 3 5 4 注意 1 當(dāng) 命令后面沒有任何表達(dá)式時(shí) 輸出一個(gè)空行 2 命令的區(qū)別是 命令從光標(biāo)當(dāng)前行的下一行開始顯示 命令在當(dāng)前光標(biāo)位置開始顯示 36 2 4 3命令窗口 命令窗口是一種系統(tǒng)窗口 可直接在其中輸入VFP命令 當(dāng)選擇執(zhí)行某個(gè)菜單中的命令 或通過VFP提供的工具完成某些任務(wù)時(shí) 一些命令還會(huì)自動(dòng)顯示在命令窗口中 打開命令窗口 窗口 菜單 命令窗口 一 命令的書寫規(guī)則 以命令動(dòng)詞開頭 后面的多個(gè)短語通常與順序無關(guān) 用空格來分隔每條命令中的各個(gè)短語 命令不分大小寫 當(dāng)命令動(dòng)詞或命令參數(shù)超過四個(gè)字母時(shí) 可只輸入前四個(gè)字符 如 CREATE可簡寫為CREADISPLAY可簡寫為DISP一條命令的最大長度是254個(gè)字符 如一條命令太長一行輸不下時(shí) 行末須用分號 分隔 并在下行連續(xù)書寫 37 二 編輯命令 命令窗口 是一個(gè)編輯窗口 可以對其中的文本進(jìn)行編輯操作 在按Enter鍵執(zhí)行命令之前可以按Esc鍵刪除文本 利用 格式 菜單中的命令來改變字體 行間距和縮進(jìn)方式 利用 編輯 菜單或快捷菜單中的剪切 復(fù)制 粘貼和清除等命令移動(dòng) 復(fù)制和刪除文本 38 2 4 4 表達(dá)式生成器 的使用方法表達(dá)式是用運(yùn)算符把內(nèi)存變量 字段變量 常數(shù)和函數(shù)連接起來的式子 表達(dá)式通常用于簡單的計(jì)算和描述一個(gè)操作條件 表達(dá)式生成器 是VFP提供的用于創(chuàng)建并編輯表達(dá)式的工具 使用它可以方便快捷的生成表達(dá)式 表達(dá)式生成器 可從各種相關(guān)的設(shè)計(jì)器 向?qū)?生成器及其它一些對話框中訪問 某些對話框中的 對話按鈕激活的就是表達(dá)式生成器 也可以在 命令 窗口中使用快捷菜單喚出表達(dá)式生成器 表達(dá)式生成器 對話框按其功能可分為五部分 表達(dá)式文本編輯框 函數(shù)列表框 變量列表框 表和視圖下拉列表框 控制按鈕 39 表達(dá)式文本編輯框 用于編輯表達(dá)式 從表達(dá)式生成器的各列表框中選擇出來的選項(xiàng)將顯示在這里 也可以直接在這里輸入和編輯表達(dá)式 函數(shù)列表框 從中可以選擇表達(dá)式所需的函數(shù) 這些函數(shù)按其用途分為字符函數(shù) 數(shù)學(xué)函數(shù) 邏輯函數(shù)和日期函數(shù)等四個(gè)列表框 變量列表框 從變量列表框中通過雙擊可以選擇表達(dá)式所需的變量 在字段列表框中 列出了當(dāng)前表和視圖的字段變量 在變量列表框中 列出了可用的內(nèi)存變量和系統(tǒng)變量 表和視圖下拉列表框 從這個(gè)列表框中可以選擇當(dāng)前打開的表和視圖 控制按鈕 在表達(dá)式生成器中有四個(gè)命令按鈕 確定 取消 檢驗(yàn) 和 選項(xiàng) 若單擊 選項(xiàng) 按鈕 進(jìn)入 表達(dá)式生成器選項(xiàng) 對話框 在該選項(xiàng)對話框中可以設(shè)置表達(dá)式生成器的參數(shù) 單擊 檢驗(yàn) 按鈕可以檢驗(yàn)生成的表達(dá)式是否有效 按 確定 按鈕完成表達(dá)式生成并退出 表達(dá)式生成器 按 取消 按鈕放棄對表達(dá)式的修改并退出表達(dá)式生成器 40 第三章表與數(shù)據(jù)庫 3 1建立自由表3 2修改和使用表3 3設(shè)計(jì)數(shù)據(jù)庫3 4建立數(shù)據(jù)庫3 5索引與排序3 6表間關(guān)系與參照完整性3 7數(shù)據(jù)共享 41 3 1建立自由表 3 1 1表的概念 表以記錄和字段的形式存儲(chǔ)數(shù)據(jù) 是關(guān)系型數(shù)據(jù)庫管理系統(tǒng)的基本結(jié)構(gòu) VFP6 0中 根據(jù)表與數(shù)據(jù)庫的關(guān)系 將表分為兩類 數(shù)據(jù)庫表 和 自由表 屬于某一數(shù)據(jù)庫的表稱為 數(shù)據(jù)庫表 不屬于任何數(shù)據(jù)庫而獨(dú)立存在的表稱為 自由表 3 1 2設(shè)計(jì)表結(jié)構(gòu)創(chuàng)建一個(gè)新表分為兩個(gè)步驟 步驟一 創(chuàng)建表的結(jié)構(gòu) 即說明表包含哪些字段 每個(gè)字段的長度及數(shù)據(jù)類型 步驟二 向表中輸入記錄 即向表中輸入數(shù)據(jù) 一個(gè)表中的所有字段組成了表的結(jié)構(gòu) 因?yàn)樽侄螌傩詻Q定了表的結(jié)構(gòu) 所以在建表之前應(yīng)先設(shè)計(jì)字段屬性 42 一 字段名表中的每個(gè)字段都是有名稱的 比如 學(xué)生 表中的 學(xué)號 字段 學(xué)號 即為這個(gè)字段的字段名 字段名可以是以字母開頭的字母數(shù)字串 也可以是漢字 自由表中的字段名不能超過10個(gè)字符 數(shù)據(jù)庫表字段名長度不能超過128個(gè)字符 字段名中不接受空格字符 二 字段類型字段的數(shù)據(jù)類型應(yīng)與存儲(chǔ)其中的信息類型相匹配 數(shù)據(jù)庫可以存儲(chǔ)大量的數(shù)據(jù) 并提供豐富的數(shù)據(jù)類型 這些數(shù)據(jù)可以是一段文字 一組數(shù)據(jù) 一個(gè)字符串 一幅圖像或一段多媒體作品 當(dāng)把不同類型的數(shù)據(jù)存入字段時(shí) 就必須告訴數(shù)據(jù)庫系統(tǒng)這個(gè)字段存儲(chǔ)什么類型的數(shù)據(jù) 這樣數(shù)據(jù)庫系統(tǒng)才能對這個(gè)字段采取相應(yīng)的數(shù)據(jù)處理方法 VisualFoxPro6 0支持十三種不同類型的數(shù)據(jù) 每種均有不同的目的和用途 應(yīng)為表中的每個(gè)字段選取最適合于該字段數(shù)據(jù)用途的數(shù)據(jù)類型 43 字段類型類型名稱說明大小應(yīng)用舉例字符型 Character 數(shù)字 字母 符號 254姓名 住址貨幣型 Currency 貨幣單位8存款 價(jià)格數(shù)值型 Numeric 整數(shù) 小數(shù)考試成績浮點(diǎn)型 Float 同數(shù)值型日期型 Date 年 月 日參加工作時(shí)間日期時(shí)間型年 月 日 8上班時(shí)間 DateTime 時(shí) 分 秒整型 Integer 無小數(shù)點(diǎn)數(shù)4單位人數(shù)雙精度型 Double 雙精度數(shù)邏輯型 Logical 真或假1作業(yè)完成否通用型 General OLE 對象鏈接與嵌入 4EXCEL表格 圖片備注型 Memo 文本4人員簡歷 產(chǎn)品簡介 44 三 字段寬度設(shè)置以字符為單位的列寬 設(shè)置的列寬應(yīng)保證能夠存放所需的字段 但也不必設(shè)置的太寬 否則將占用大量內(nèi)存 四 小數(shù)位數(shù)當(dāng)字段類型為數(shù)值型和浮點(diǎn)型時(shí) 應(yīng)為其設(shè)置小數(shù)位數(shù) 五 是否允許為空是否允許字段接受NULL值 所謂NULL值 就是無明確的值 NULL值不等同于零或空格 一個(gè)NULL值不能認(rèn)為比某個(gè)值 包括另一個(gè)NULL值 大或小 相等或不等 45 在了解了字段的主要屬性后 將表3 1所示的 學(xué)生 表中的字段屬性定義下 表3 2 學(xué)生 表中的字段屬性字段名數(shù)據(jù)類型字段寬度小數(shù)位NULL學(xué)號字符型7否姓名字符型8是性別字符型2是生日日期型8是專業(yè)字符型10是入學(xué)成績數(shù)值型51是貸款否邏輯型1是照片通用型4是簡歷備注型4是 46 3 1 3建立表結(jié)構(gòu)VisualFoxPro6 0提供了三種建立對象的方法 向?qū)?設(shè)計(jì)器 命令 三種方法各有特點(diǎn) 可單獨(dú)使用 也可混合使用 通常用 向?qū)?生成對象 用 設(shè)計(jì)器 加工對象 在應(yīng)用程序中用命令來管理對象 同樣 建表也可以使用這三種方法 既可以使用 表設(shè)計(jì)器 也可以使用 表向?qū)?還可以通過在命令窗口輸入命令的方法來建表 這里先介紹如何建立自由表 數(shù)據(jù)庫表的建立和自由表類似 我們在后面章節(jié)再介紹 自由表就是不與數(shù)據(jù)庫關(guān)聯(lián)的表 例如 要想保存多個(gè)數(shù)據(jù)庫所共享的查找信息 就可以創(chuàng)建一個(gè)自由表 47 一 利用 表設(shè)計(jì)器 建表1 打開 表設(shè)計(jì)器 1 項(xiàng)目管理器 自由表 2 新建表 新建表 3 創(chuàng)建 輸入表名和保存位置 保存 4 表設(shè)計(jì)器 2 定義字段3 完成設(shè)計(jì)VFP6 0中保存的表文件的擴(kuò)展名為 dbf 當(dāng)?shù)谝淮蝿?chuàng)建表時(shí) VFP6 0先創(chuàng)建表的 dbf文件 如果表中包含了備注型字段或通用型字段 VFP6 0還要?jiǎng)?chuàng)建與表相關(guān)聯(lián)的 fpt文件 二 利用表向?qū)Ыū磉€可用 表向?qū)?來建立表的結(jié)構(gòu) 向?qū)且粋€(gè)交互式程序 由一系列對話框組成 表向?qū)軌蚧诘湫偷谋斫Y(jié)構(gòu)創(chuàng)建表 在有樣表可供利用的條件下 可以使用表向?qū)矶x表結(jié)構(gòu) 允許用戶從樣表中選擇滿足需要的字段 也允許用戶在執(zhí)行向?qū)У倪^程中修改表的結(jié)構(gòu)和字段 利用表向?qū)П4嫔傻谋碇?用戶仍可啟動(dòng)表設(shè)計(jì)器來進(jìn)一步修改表 48 三 使用命令建表在設(shè)計(jì)程序時(shí) 我們會(huì)經(jīng)常用到一些命令 當(dāng)我們使用 設(shè)計(jì)器 或 向?qū)?時(shí) 系統(tǒng)正在自動(dòng)地生成一些對應(yīng)的VFP命令 并將其中的一些命令映射到命令窗口 可以使用CREATETABLE命令來建表 CREATETABLE表名 字段名1類型 寬度 小數(shù)位數(shù) 字段名2類型 寬度 小數(shù)位數(shù) 其中 字段類型用字母表示 常用的如 c 字符型 d 日期型 n 數(shù)值型 f 浮點(diǎn)型 l 邏輯型 m 備注型 以及g 通用型 等等 在 命令窗口 中輸入如下命令可以建立 學(xué)生 表 CREATETABLEd 教學(xué)管理 表 學(xué)生3 學(xué)號c 7 姓名c 8 性別c 2 出生日期d 專業(yè)c 10 入學(xué)成績n 5 1 貸款否l 照片g 簡歷m 49 3 1 4輸入記錄一 在創(chuàng)建表時(shí)輸入二 在表創(chuàng)建好以后輸入打開 瀏覽 或 編輯 窗口 項(xiàng)目管理器 瀏覽 切換 瀏覽 或 編輯 方式 顯示 菜單在 瀏覽 或 編輯 窗口中輸入 顯示 菜單 追加方式 關(guān)閉瀏覽窗口三 輸入記錄的命令 76 50 注意 輸入備注型和通用型字段輸入備注型字段 雙擊該字段 輸入 關(guān)閉輸入通用型字段 雙擊該字段 編輯 菜單 插入對象表中的備注型字段實(shí)際上是一個(gè)指向備注內(nèi)容的引用 其對應(yīng)的實(shí)際數(shù)據(jù)保存在另外一個(gè)單獨(dú)的文件中 其文件名與表名相同 但擴(kuò)展名為 FPT 真正的備注內(nèi)容的大小僅受存儲(chǔ)空間的限制 對那些可能超過254個(gè)字符或含有諸如制表符及回車符的長文本 可以使用備注數(shù)據(jù)類型 通用型字段主要用來保存OLE對象 也是一個(gè)指向該字段真正內(nèi)容的引用 如 電子表格 字處理文檔 圖片等 通用型字段的真正類型和數(shù)據(jù)大小取決于創(chuàng)建這些對象的OLE服務(wù)器 以及這些OLE對象是以鏈接方式還是以嵌入方式與該應(yīng)用程序發(fā)生聯(lián)系的 若鏈接OLE對象 則表中只含有對數(shù)據(jù)以及創(chuàng)建這些數(shù)據(jù)的應(yīng)用程序的引用 若嵌OLE對象 則表中將含有相關(guān)數(shù)據(jù)的副本以及對創(chuàng)建這些數(shù)據(jù)的應(yīng)用程序的引用 通用字段的大小也僅受可用存儲(chǔ)空間的限制 51 3 1 5利用已有的表追加記錄利用其它表已有的相同內(nèi)容 可以快速給新表追加記錄 無條件追加記錄 追加源表中的所有記錄 有條件追加記錄 有選擇的追加源記錄和字段 1 打開需追加記錄的表的瀏覽窗口2 表 追加記錄 追加來源3 選項(xiàng) 追加來源選項(xiàng)4 字段 字段選擇器5 For 表達(dá)式生成器 注意 表達(dá)式中的字符量必須用英文狀態(tài)下的雙引號括起來 向表中成批的追加記錄時(shí) 其內(nèi)容可以來源于不同的幾個(gè)表 還可從EXCEL表 LOTUS表 TEXT文件等不同類型的文件中追加 52 表達(dá)式生成器 的使用方法表達(dá)式是用運(yùn)算符把內(nèi)存變量 字段變量 常數(shù)和函數(shù)連接起來的式子 表達(dá)式通常用于簡單的計(jì)算和描述一個(gè)操作條件 表達(dá)式生成器 是VFP提供的用于創(chuàng)建并編輯表達(dá)式的工具 使用它可以方便快捷的生成表達(dá)式 表達(dá)式生成器 可從各種相關(guān)的設(shè)計(jì)器 向?qū)?生成器及其它一些對話框中訪問 某些對話框中的 對話按鈕激活的就是表達(dá)式生成器 也可以在 命令 窗口中使用快捷菜單喚出表達(dá)式生成器 表達(dá)式生成器 對話框按其功能可分為五部分 表達(dá)式文本編輯框 函數(shù)列表框 變量列表框 表和視圖下拉列表框及控制按鈕 53 表達(dá)式文本編輯框 用于編輯表達(dá)式 從表達(dá)式生成器的各列表框中選擇出來的選項(xiàng)將顯示在這里 也可以直接在這里輸入和編輯表達(dá)式 函數(shù)列表框 從中可以選擇表達(dá)式所需的函數(shù) 這些函數(shù)按其用途分為字符函數(shù) 數(shù)學(xué)函數(shù) 邏輯函數(shù)和日期函數(shù)等四個(gè)列表框 變量列表框 從變量列表框中通過雙擊可以選擇表達(dá)式所需的變量 在字段列表框中 列出了當(dāng)前表和視圖的字段變量 在變量列表框中 列出了可用的內(nèi)存變量和系統(tǒng)變量 表和視圖下拉列表框 從這個(gè)列表框中可以選擇當(dāng)前打開的表和視圖 控制按鈕 在表達(dá)式生成器中有四個(gè)命令按鈕 確定 取消 檢驗(yàn) 和 選項(xiàng) 若單擊 選項(xiàng) 按鈕 進(jìn)入 表達(dá)式生成器選項(xiàng) 對話框 在該選項(xiàng)對話框中可以設(shè)置表達(dá)式生成器的參數(shù) 單擊 檢驗(yàn) 按鈕可以檢驗(yàn)生成的表達(dá)式是否有效 按 確定 按鈕完成表達(dá)式生成并退出 表達(dá)式生成器 按 取消 按鈕放棄對表達(dá)式的修改并退出表達(dá)式生成器 54 3 2修改和使用表 3 2 1打開 關(guān)閉表一 打開表表在 項(xiàng)目管理器 中 選定要打開的表 然后選擇 瀏覽 按鈕在瀏覽窗口中打開該表 表不在 項(xiàng)目管理器 中 從 文件 菜單中選擇 打開 命令 然后在 打開 對話框中選擇要打開的表將其打開 二 關(guān)閉表在命令窗口輸入不帶任何參數(shù)的 USE 命令即可 55 3 2 3修改表記錄 一 修改記錄內(nèi)容1 在瀏覽窗口中修改2 在編輯窗口修改 二 刪除記錄刪除記錄的過程 分為兩步 第一步 對要?jiǎng)h除的記錄作刪除標(biāo)記 第二步 徹底刪除 56 1 作刪除標(biāo)記鼠標(biāo)單擊記錄前的刪除標(biāo)記條 表 菜單 刪除記錄 命令 刪除 對話框2 還原記錄鼠標(biāo)單擊記錄前的刪除標(biāo)記條 表 菜單 恢復(fù)記錄 命令 恢復(fù) 對話框3 徹底刪除 表 菜單的 徹底刪除 命令或在 命令 窗口中輸入 PACK 命令注意 執(zhí)行 徹底刪除 命令后 帶有刪除標(biāo)記的記錄被從磁盤上徹底刪除 被徹底刪除的記錄不能再用 恢復(fù)記錄 命令恢復(fù) 4 刪除全部記錄如果想刪除表中的所有記錄 只留下表的結(jié)構(gòu) 可使用ZAP命令 在 命令 窗口中輸入 ZAP 命令將徹底刪除表中的所有記錄 注意 此命令破壞性極大 應(yīng)慎用 57 3 2 4查看記錄 一 瀏覽記錄Tab鍵 Shift Tab鍵 PageUp鍵 PageDown鍵記錄指針 當(dāng)前記錄 二 改變?yōu)g覽窗口改變列寬和行高調(diào)整字段順序在瀏覽窗口中改變列寬或列的順序 并不影響表的實(shí)際結(jié)構(gòu) 打開或關(guān)閉網(wǎng)格線 顯示 菜單中的 網(wǎng)格線 可顯示或隱藏瀏覽窗口中的網(wǎng)格線 拆分瀏覽窗口拆分窗口可以查看同一表中的兩個(gè)不同區(qū)域 取消 表 菜單中 鏈接分區(qū) 可使兩個(gè)區(qū)域相對獨(dú)立 58 三 定位記錄用 查找 命令查看用 轉(zhuǎn)到記錄 命令查看注意 若有幾個(gè)記錄都符合定位的條件 只定位表中第一個(gè)符合條件的記錄 若想同時(shí)查出所有記錄 則需使用數(shù)據(jù)過濾功能 四 過濾數(shù)據(jù)記錄過濾打開表瀏覽窗口 表 屬性 工作區(qū)屬性 數(shù)據(jù)過濾器 表達(dá)式生成器 生成過濾表達(dá)式 恢復(fù)被過濾的數(shù)據(jù) 表 屬性 數(shù)據(jù)過濾器 刪除表達(dá)式 確定 字段篩選 工作區(qū)屬性 字段篩選指定的字段 字段篩選 字段選擇器 確定 59 3 2 5使用多個(gè)表 一 工作區(qū)和工作期的概念1 工作區(qū)為了能夠同時(shí)使用多個(gè)表 引入了工作區(qū)的概念 工作區(qū)是一個(gè)編號的區(qū)域 用它來標(biāo)識(shí)一個(gè)打開的表 在每個(gè)工作區(qū)中只能同時(shí)打開一個(gè)表 在一個(gè)工作區(qū)中打開其它的表時(shí) 原來在該工作區(qū)中打開的表自動(dòng)關(guān)閉 若要同時(shí)使用多個(gè)表 就要使用多個(gè)工作區(qū) 在VisualFoxPro6 0中 最多可以有32767個(gè)工作區(qū) 在應(yīng)用程序中工作區(qū)一般通過使用該工作區(qū)的表的別名來標(biāo)識(shí) 表別名是表的另一個(gè)名稱 它可以引用在工作區(qū)中打開的表 2 數(shù)據(jù)工作期是當(dāng)前動(dòng)態(tài)工作環(huán)境的一種表示 每個(gè)數(shù)據(jù)工作期包含有自己的一組工作區(qū) 這些工作區(qū)含有打開的表 表索引和關(guān)系 60 二 在 數(shù)據(jù)工作期 窗口查看工作區(qū)從 窗口 菜單選擇 數(shù)據(jù)工作期 命令或在 命令 窗口中鍵入SET命令VisualFoxPro6 0打開如圖3 29所示的 數(shù)據(jù)工作期 窗口 并顯示在當(dāng)前數(shù)據(jù)工作期中的工作區(qū)中打開的表的別名 三 在工作區(qū)中打開 關(guān)閉表1 在工作區(qū)中打開表 1 在 數(shù)據(jù)工作期 窗口中 單擊 打開 按鈕 出現(xiàn)一個(gè) 打開 對話框 2 在 打開 對話框中選擇要打開的表 單擊 確定 按鈕 2 在工作區(qū)中關(guān)閉表在 數(shù)據(jù)工作期 窗口中選定要關(guān)閉的表別名 然后選擇 關(guān)閉 當(dāng)在同一工作區(qū)中打開其他表時(shí) 可以自動(dòng)關(guān)閉已打開的表 61 四 使用表別名別名是指定給一個(gè)表或表達(dá)式中某項(xiàng)的另一個(gè)名稱 通常用來縮短在代碼中連續(xù)引用的名稱 表的別名是用來引用工作區(qū)中打開的表的 當(dāng)打開一個(gè)表時(shí) VisualFoxPro6 0自動(dòng)將表名作為缺省的別名 也可以另外指定一個(gè)別名 當(dāng)指定的別名發(fā)生沖突時(shí) VisualFoxPro6 0將自動(dòng)給這個(gè)表創(chuàng)建一個(gè)別名 可以通過別名和工作區(qū)引用一個(gè)表 1 創(chuàng)建用戶自定義別名在打開表一個(gè)時(shí) 用戶可以為它指定一個(gè)自定義的別名 例如 可以使用以下命令 在0號工作區(qū)中打開表文件 學(xué)生 dbf 并為它指定一個(gè)別名 xs SELECT0USE學(xué)生ALIASxs然后使用別名 xs 引用打開的表 注意 別名最多可以包括254個(gè)字母 數(shù)字或下劃線 但首字符必須是字母或下劃線 如果所提供的別名包含不支持的字符 則VisualFoxPro6 0會(huì)自動(dòng)創(chuàng)建一個(gè)別名 62 2 使用VisualFoxPro6 0指定的別名如果同時(shí)在多個(gè)工作區(qū)中打開同一個(gè)表 并且在每個(gè)工作區(qū)中打開該表時(shí)沒有指定別名 或者別名發(fā)生沖突 VFP6 0將自動(dòng)為表指定一個(gè)別在前10個(gè)工作區(qū)中指定的默認(rèn)別名是工作區(qū)字母A到J 在工作區(qū)11到32767中指定的別名是W11到W32767 您可以象使用任何默認(rèn)別名或用戶自定義別名那樣 使用這些VisualFoxPro6 0指定的別名來引用在一個(gè)工作區(qū)中打開的表 3 使用別名選擇工作區(qū)使用SELECT命令選擇當(dāng)前工作區(qū) 如已在一個(gè)工作區(qū)中打開了學(xué)生 dbf并指定默認(rèn)別名xs 可以使用 SELECTxs命令選擇到這個(gè)工作區(qū)中 4 引用在其他工作區(qū)中打開的表在別名后加上點(diǎn)號分隔符 或 操作符 然后再接字段名 可以引用其他工作區(qū)中的字段 例如 可以使用 學(xué)生 學(xué)號訪問其他工作區(qū)中打開的 學(xué)生 表的 學(xué)號 字段 如果要引用的表是用別名打開的 則也可以使用別名 例如 如果 學(xué)生 表是使用別名 xs 打開的 那么 可以使用 xs 姓名引用表中的 姓名 字段 63 3 3設(shè)計(jì)數(shù)據(jù)庫 VisualFoxPro6 0中的表和傳統(tǒng)數(shù)據(jù)庫的表是一致的 表以記錄和字段的形式存儲(chǔ)數(shù)據(jù) 但數(shù)據(jù)庫已不用于存儲(chǔ)數(shù)據(jù) 而是用于存儲(chǔ)數(shù)據(jù)庫表的屬性 組織關(guān)聯(lián)表和視圖 創(chuàng)建存儲(chǔ)過程 數(shù)據(jù)庫是按特定的順序組織起來的相關(guān)信息的一個(gè)集合 在數(shù)據(jù)庫應(yīng)用系統(tǒng)中 數(shù)據(jù)庫的設(shè)計(jì)是一項(xiàng)非常重要的工作 數(shù)據(jù)庫性能的優(yōu)劣將直接影響到最終應(yīng)用系統(tǒng)的性能 經(jīng)過長期的摸索 人們提出了各種數(shù)據(jù)庫設(shè)計(jì)方法以及各種設(shè)計(jì)準(zhǔn)則和規(guī)程 這就是規(guī)范化設(shè)計(jì)方案 設(shè)計(jì)數(shù)據(jù)庫一般包括以下幾個(gè)基本過程 1 分析數(shù)據(jù)需求2 確定需要的表3 確定所需字段4 確定關(guān)系5 完善設(shè)計(jì) 64 3 3 1分析數(shù)據(jù)需求 明確數(shù)據(jù)庫的使用目的是設(shè)計(jì)數(shù)據(jù)庫的第一步 也就是說你需要從數(shù)據(jù)庫中得到哪些信息 明確目的之后 就可以確定需要保存那些主題的信息 表 以及每個(gè)主題需要保存哪些信息 字段 分析數(shù)據(jù)需求時(shí)要注意以下兩點(diǎn) 一是要強(qiáng)調(diào)用戶的參與 和數(shù)據(jù)庫的使用人員多交換意見 并根據(jù)用戶提出的要求 推敲數(shù)據(jù)庫需要回答哪些問題 二是要充分考慮到數(shù)據(jù)庫可能的擴(kuò)充和改變 怎樣才能提高數(shù)據(jù)庫的靈活性 也只有創(chuàng)建一個(gè)設(shè)計(jì)靈活的數(shù)據(jù)庫 才能保證所建立的應(yīng)用程序具有較高的性能 例如 某校的教務(wù)部門要搞一個(gè) 教學(xué)管理 數(shù)據(jù)庫 存放教與學(xué)兩方面的信息 也就是有關(guān)學(xué)生的情況 教師的情況 課程安排以及考試成績等方面的信息 要求從中可以查出每個(gè)學(xué)生各門課程的成績 或者某門課程由哪位教師擔(dān)任 哪些學(xué)生選修了這門課 以及這門課程的考試成績等數(shù)據(jù)信息 65 3 3 2確定數(shù)據(jù)庫表 根據(jù)用戶的需要及從數(shù)據(jù)庫得到的內(nèi)容通過分析歸納來確定需要哪些表 并把需要的信息分門別類地歸納到相應(yīng)的表中 理解關(guān)系型數(shù)據(jù)庫設(shè)計(jì)過程的關(guān)鍵在于理解關(guān)系型數(shù)據(jù)庫管理系統(tǒng)保存數(shù)據(jù)的方式 為了高效準(zhǔn)確地提供信息 應(yīng)該將不同主題的信息存儲(chǔ)在不同的表中 每個(gè)主題就是一張表 例如 我們根據(jù)上面提出的 教學(xué)管理 數(shù)據(jù)庫的要求 來考慮這個(gè)數(shù)據(jù)庫需要哪些表 首先 為了得到學(xué)生和教師的信息 應(yīng)該為學(xué)生和教師各建一個(gè)表 我們把這兩個(gè)表分別叫作 學(xué)生 表和 教員 表 其中存放有關(guān)學(xué)生和教師的基本情況 當(dāng)然 還要有一個(gè)存放各門課程的考試成績的表 從中可以了解各個(gè)學(xué)生的學(xué)習(xí)成績 我們就把這個(gè)表叫作 成績 表 為了了解各門課程的情況 設(shè)置一個(gè) 課程 表 為了了解各專業(yè)的情況并能按專業(yè)查殉學(xué)生的信息 再設(shè)置一個(gè) 專業(yè) 表 66 3 3 3確定所需字段 在確定表所需字段時(shí)應(yīng)遵循以下規(guī)則 一 字段唯一性描述不同主題的字段應(yīng)屬于不同的表 表中不應(yīng)有與表的內(nèi)容無關(guān)的數(shù)據(jù) 不應(yīng)在多個(gè)表中重復(fù)同樣信息 如果相同信息出現(xiàn)多次 不僅浪費(fèi)存儲(chǔ)空間 而且會(huì)增加出錯(cuò)的可能性 二 字段無關(guān)性這一規(guī)則防止對表中數(shù)據(jù)作修改時(shí)出現(xiàn)錯(cuò)誤 也就是在不影響其他字段的情況下 必須能夠?qū)θ我庾侄芜M(jìn)行修改 像一些可以通過對其它字段的推導(dǎo)或計(jì)算得到的數(shù)據(jù) 就不必存儲(chǔ)到表中 例如 只要記錄學(xué)生的 生日 就可計(jì)算出 年齡 同樣 總成績 通常是根據(jù) 平時(shí)成績 期中成績 和 期末成績 計(jì)算出來的 因此 無需保留 年齡 和 總成績 因?yàn)橐唇Y(jié)果時(shí)可用VisualFoxPro6 0進(jìn)行計(jì)算 67 三 主關(guān)鍵字?jǐn)?shù)據(jù)庫中的每個(gè)表都必須具有一個(gè)標(biāo)識(shí)符可以唯一確定存儲(chǔ)在表中的每個(gè)記錄 這種唯一標(biāo)識(shí)每個(gè)記錄的信息稱作表的主關(guān)鍵字 主關(guān)鍵字不允許有重復(fù)值和NULL值 主關(guān)鍵字由表中一個(gè)或多個(gè)字段構(gòu)成 例如 為了能夠在 學(xué)生 表中標(biāo)識(shí)不同的學(xué)生 可用 學(xué)號 作為主關(guān)鍵字 四 外部關(guān)鍵字在表中應(yīng)該有與其它表相鏈接的信息 如 學(xué)號 專業(yè) 課程代號 等字段 這些用于 鏈接 的字段就是外部關(guān)鍵字 當(dāng)在VisualFoxPro6 0中定義表時(shí) 將主關(guān)鍵字與外部關(guān)鍵字鏈接起來 以告訴VisualFoxPro6 0如何在需要從多個(gè)表中獲取信息時(shí)自動(dòng)地鏈接數(shù)據(jù) 68 五 收集所需的全部信息應(yīng)全面檢查所需的表單和報(bào)表 重新思考需要VisualFoxPro6 0回答的問題 確保所需的數(shù)據(jù)信息都包括在所設(shè)計(jì)的表中 或者可由這些表中的數(shù)據(jù)計(jì)算出來 六 以最小的邏輯單位存貯信息如果你把多個(gè)信息放入一個(gè)字段中 以后要獲取單獨(dú)的信息就會(huì)很困難 應(yīng)盡量把信息分解成比較小的邏輯單位 例如 為學(xué)生姓名 學(xué)號和性別創(chuàng)建不同的字段 69 學(xué)生 表的字段 學(xué)號姓名性別生日專業(yè)入學(xué)成績貸款否照片簡歷身份證籍貫地址電話特長獎(jiǎng)勵(lì)處分病史 教員 表的字段 教師代號姓名性別生日職稱 課程 表的字段 課程代號課程名周學(xué)時(shí)學(xué)分 成績 表的字段 學(xué)號課程代號平時(shí)期中期末 專業(yè) 表的字段 專業(yè)負(fù)責(zé)人研究方向 根據(jù)以上的原則 我們?yōu)?教學(xué)管理 數(shù)據(jù)庫的各個(gè)表設(shè)置如下的字段 70 3 3 4確定關(guān)系 到目前為止 已經(jīng)把信息分成了各個(gè)表 在每個(gè)表中可存儲(chǔ)各自的數(shù)據(jù) 可是 這些表是孤立的 還需要在這些表之間定義關(guān)系 VisualFoxPro6 0將利用這些關(guān)系來查找數(shù)據(jù)庫中有聯(lián)系的信息 并將它們重新組合 得到有意義的信息 VisualFoxPro6 0將表之間復(fù)雜多樣的關(guān)系歸結(jié)為一對一 一對多和多對多的關(guān)系 一 一對一關(guān)系在一對一關(guān)系中 表一的一個(gè)記錄在表二中只能對應(yīng)一個(gè)記錄 而表二中的一個(gè)記錄在表一中也只能有一個(gè)記錄與之對應(yīng) 兩表間的一對一關(guān)系不經(jīng)常使用 因?yàn)樵谠S多情況下 可將兩個(gè)表中的信息合并成一個(gè)表 如果在數(shù)據(jù)庫中存在一對一關(guān)系 那就要考慮一下是不是能把這些信息合并到一個(gè)表中 也可能出于某種原因不想合并 比如 有些信息是不常用的 或者某些信息是機(jī)密的 不應(yīng)給每個(gè)人看到 例如 學(xué)生 表中保留的一些特殊信息 病歷資料或受到的獎(jiǎng)勵(lì)及處分等 因?yàn)檫@些信息不需要經(jīng)常查看 或者只能由學(xué)校的某些授權(quán)單位查看 所以 我們可創(chuàng)建一個(gè)擁有 學(xué)號 主關(guān)鍵字的單獨(dú)表 原先的 學(xué)生 表與這張表之間的關(guān)系是一一對應(yīng)的 71 二 一對多關(guān)系一對多關(guān)系是關(guān)系型數(shù)據(jù)庫中最普遍的關(guān)系 在一對多關(guān)系中 對于第一張表中的任意一個(gè)記錄 在第二張表中可以有多個(gè)記錄與之對應(yīng) 但反過來第二張表中的任意記錄 在第一張表中只有一個(gè)記錄與之對應(yīng) 例如 專業(yè) 表和 學(xué)生 表之間就是一對多的關(guān)系 因?yàn)橐粋€(gè)學(xué)生只能有一個(gè)專業(yè) 不考慮第二學(xué)歷的情況 而每個(gè)專業(yè)則有多個(gè)學(xué)生 還有 學(xué)生 表和 成績 表之間也是一對多的關(guān)系 每個(gè)學(xué)生可以有多門課程的成績 但一個(gè)成績只能屬于一個(gè)學(xué)生 同樣 課程 表和 成績 表之間也是一對多的關(guān)系 每門課程可以有多個(gè)學(xué)生的成績 但一個(gè)成績只能屬于一個(gè)學(xué)生某門課程 在一對多關(guān)系中 位于 一 端的表稱為父表 和父表有關(guān)系的那個(gè)表為子表 父表也稱為主表或主控表 子表又稱為相關(guān)表或受控表 在一對多關(guān)系中 位于 一 端的表中用于建立關(guān)系的字段必須是主關(guān)鍵字字段 而位于 多 端的表中用于建立關(guān)系的字段是外部關(guān)鍵字字段 三 多對多關(guān)系在多對多關(guān)系中 表一的一個(gè)記錄在表二中可以對應(yīng)多個(gè)記錄 同樣表二中的一個(gè)記錄在表一中也可以對應(yīng)多個(gè)記錄 在具有多對多關(guān)系的兩個(gè)表之間 如果將一個(gè)表的主關(guān)鍵字段添加到另一個(gè)表中 那么就會(huì)出現(xiàn)同一信息保存多次的情況 這樣就不利于信息的管理和維護(hù) 因此 在設(shè)計(jì)數(shù)據(jù)庫時(shí) 應(yīng)將多對多關(guān)系分解成兩個(gè)一對多關(guān)系 其方法就是在具有多對多關(guān)系的兩個(gè)表之間創(chuàng)建第三個(gè)表 在VisualFoxPro6 0中 把用于分解多對多關(guān)系的表稱為 紐帶表 因?yàn)樗趦杀碇g起著紐帶的作用 可以把兩個(gè)表的主關(guān)鍵字都放在這個(gè)紐帶表中 72 紐帶表可能只包含了它所連接的兩個(gè)表的主關(guān)鍵字 也可以包含其它信息 在紐帶表中 兩個(gè)字段連在一起就能使每個(gè)記錄具有唯一值 例如 學(xué)生 表和 課程 表之間就是多對多的關(guān)系 每門課程可以有多個(gè)學(xué)生選修 同樣一個(gè)學(xué)生也可以選修多門課程 而 成績 表就是 學(xué)生 表和 課程 表之間的 紐帶表 通過 成績 表把 學(xué)生 表和 課程 表聯(lián)系起來 比如 通過 學(xué)生 表和 成績 表

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論