




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、Visual FoxPro及其應用系統開發主要內容第01章 Visual FoxPro簡介第02章 Visual FoxPro程序設計基礎第03章 面向對象的程序設計第04章 數據庫與數據庫表第05章 表操作第06章 查詢與視圖第07章 數據庫查詢語言SQL第08章 表單設計第09章 報表與標簽第10章 菜單設計第11章 小型應用系統開發示例第1章 Visual FoxPro簡介1.1 1.1 Visual FoxPro系統概況系統概況1.2 1.2 Visual FoxPro系統環境設置系統環境設置1.3 1.3 藥品分銷管理信息系統設計實例藥品分銷管理信息系統設計實例1.1.1 Visua
2、l FoxPro的特點1強大的查詢功能2引入數據庫表的概念 3界面友好4擴大了對SQL語言的支持5面向對象編程技術6與其它軟件高度兼容7支持網絡應用1.1.2 Visual FoxPro的安裝1安裝環境 Visual FoxPro為32位(或64位)的開發工具,其硬、軟件的基本配置是: 處理器:80486DX/66MHz或更高檔處理器 內存:16MB以上 硬盤空間:典型安裝需要100MB,最小化安裝需要15MB,完全安裝需要240MB 顯示器:VGA或更高分辨率的顯示器 鼠標 光驅 操作系統:Windows2000,Windows xp操作系統1.1.2 Visual FoxPro的安裝2安裝
3、Visual FoxPro Visual FoxPro可以從CD-Rom(光盤)(光盤)、硬盤、硬盤、優盤優盤,或從網絡服務器網絡服務器上安裝。以下介紹從CD-ROM安裝的步驟。啟動Windows操作系統,將Visual FoxPro的安裝盤放入CD-ROM驅動器,自動運行安裝向導程序。按照安裝向導的提示,依次“接受協議”、輸入產品ID號和用戶信息、選擇安裝位置及安裝類型后即進入安裝界面系統根據用戶的設置,開始復制文件,配置系統運行環境,直至安裝完畢。Visual FoxPro的啟動3啟動Visual FoxPro【開始】|【所有程序】|【Microsoft Visual Studio 6.0
4、】|【Microsoft Visual FoxPro 6.0】)。利用【我的電腦】或【資源管理器】查找到Visual FoxPro 6.0啟動程序vfp.exe。選擇Windows桌面:【開始】|【運行】,在彈出的【運行】對話框中輸入Visual FoxPro 6.0啟動程序所在的文件夾及文件名,在單擊“確定”按鈕。在Windows桌面上為Visual FoxPro 6.0啟動程序創建快捷方式,以后只要雙擊該快捷方式圖標快捷方式圖標即可啟動Visual FoxPro 6.0。Visual FoxPro的退出4退出Visual FoxPro 選擇系統菜單:【文件】|【退出】在命令窗口鍵入:QUI
5、T,并按下鍵盤“Enter”鍵單擊系統主窗口右上角“關閉”按鈕雙擊系統主窗體左上角控制菜單圖標,或單擊控制菜單圖標后,再選擇彈出菜單:【關閉】同時按下鍵盤“Alt”和“F4”鍵1.1.3 Visual FoxPro的用戶界面 1.1.4 Visual FoxPro的工作方式1交互式工作方式 交互式工作方式又可分為菜單操作方式和命令方式兩種。 菜單操作方式菜單操作方式 命令方式命令方式2. 程序方式 程序是命令代碼的集合,用戶先創建程序文件并保存起來,使用時只須調用程序文件,即可由系統依次自動執行文件內的程序代碼。保存的程序文件可多次反復使用。1.1.5 Visual FoxPro的語法規則 1
6、命令格式 Visual FoxPro的命令有兩部分組成:命令動詞和命令動詞后的短語。命令動詞是用來告訴計算機需要完成什么任務;命令動詞后的短語則用來限定計算機操作的范圍、字段、和條件等。Visual FoxPro的語法規則 2命令常用短語 FIELDS子句該子句說明數據表的字段名稱,一般后面跟一個字段名稱表(簡稱字段名表)。在該字段名表中,每個字段名之間必須用逗號隔開。其一般形式為:FIELDS TO PRINTER子句選擇該子句時,所發命令操作的結果送往打印機打印輸出,否則在屏幕上顯示。 OFF 子句選擇該子句時,命令操作輸出記錄時不顯示記錄號。 Visual FoxPro的語法規則 3命令
7、書寫規則每個命令都必須以命令動詞開頭,命令中各子句的書寫順序可任意每個命令都必須以命令動詞開頭,命令中各子句的書寫順序可任意排列。排列。命令中各詞匯應以一個或多個空格隔開,但如果兩個詞之間有雙引號、單引號、括號、逗號等符號時,則省略空格符。一行最多只能寫一條命令,且長度不得超過254個字節。如果命令行較長,可分多行書寫,但除最后一行外的每一行都必須以續行符“;”結束,且總長度不超過254個字節。命令中不區分大、小寫。命令中不區分大、小寫。許多命令動詞和短語可以使用縮寫,只要寫出其至少前4個字母。如:Display可縮寫為Disp、Displ、Displa均可應盡量避免使用Visual FoxP
8、ro保留字作為文件名、字段名、變量名,以免發生混亂。1.1.6 Visual FoxPro常用文件類型 在使用Visual FoxPro時,應用系統會產生和管理許多類型的文件,如:項目文件、數據庫文件等,它們用不同的擴展名區分。*.DBC 數據庫文件 *.DCT 數據庫備注文件 *.DBF 數據表文件 *.FPT 數據表備注文件*.PJX 項目文件 *.PRG 源程序文件*.FXP 源程序編譯后的文件 * .IDX 單一索引文件 *.SCX 表單文件 * .APP 應用程序文件 *.MEM 內存變量文件 *.MPR 菜單源程序文件 1.2 Visual FoxPro系統環境設置 在使用Visu
9、al FoxPro的過程時,系統允許用戶設置大量的參數控制其操作環境和工作方式, 其中包括:(1) 主窗口標題的設置。(2) 工作路徑、項目、編輯器、表單工具選項等的設置。(3) 臨時文件存儲。(4) 拖放字段對應的控件。(5) 其他選項設置。 在在Visual FoxPro 6.0Visual FoxPro 6.0中,可以使用中,可以使用SETSET命令設置臨時系統工作命令設置臨時系統工作環境。環境。SETSET命令通常在程序中使用,也可以在命令窗口中執行。命令通常在程序中使用,也可以在命令窗口中執行。 使用SET命令設置SETSET命令命令 命令功能命令功能 SET STATUS BAR
10、ON|OFF SET STATUS BAR ON|OFF 是否顯示狀態欄是否顯示狀態欄 SET TALK ON|OFF SET TALK ON|OFF 是否顯示命令執行的結果是否顯示命令執行的結果 SET CLOCK ON|OFF SET CLOCK ON|OFF 是否顯示時鐘是否顯示時鐘 SET BELL ON|OFF SET BELL ON|OFF 是否發出警告聲音是否發出警告聲音 SET ESCAPE ON|OFF SET ESCAPE ON|OFF 用戶按用戶按【EscEsc】鍵時是否取消程序運行】鍵時是否取消程序運行 SET SAFETY ON|OFF SET SAFETY ON|O
11、FF 是否打開系統的安全性檢查是否打開系統的安全性檢查 SET EXCLUSIVE ON|OFFSET EXCLUSIVE ON|OFF 數據庫是否以獨占方式打開數據庫是否以獨占方式打開 表表 常用的常用的SETSET命令命令 SETSET命令命令 命令功能命令功能 SET DELETED ON|OFF SET DELETED ON|OFF 是否忽略已作刪除標記的記錄是否忽略已作刪除標記的記錄 SET EXACT ON|OFF SET EXACT ON|OFF 是否精確地對是否精確地對2 2個字符串進行比較個字符串進行比較 SET LOCK ON|OFF SET LOCK ON|OFF 是否自
12、動對文件進行加鎖是否自動對文件進行加鎖 SET MULTILOCKS ON|OFF SET MULTILOCKS ON|OFF 是否一次可對多條記錄加鎖是否一次可對多條記錄加鎖 SET DEFAULT TO cPathSET DEFAULT TO cPath 設置默認的工作目錄設置默認的工作目錄 SET PATH TO cPathSET PATH TO cPath 設置搜索路徑設置搜索路徑 SET HELP TO FileNameSET HELP TO FileName 設置幫助文件以替代系統幫助設置幫助文件以替代系統幫助 SET DATE TO SET DATE TO 設置日期格式設置日期格
13、式 SET CENTURY ON|OFF SET CENTURY ON|OFF 顯示日期時,年號是否以顯示日期時,年號是否以4 4位數顯示位數顯示 SET HOURS TO 12|24 SET HOURS TO 12|24 設置時間以設置時間以1212或或2424小時的格式顯示小時的格式顯示 SET SECONDS ON|OFF SET SECONDS ON|OFF 顯示時間時,確定是否顯示秒顯示時間時,確定是否顯示秒 SET MARK TO cDelimiterSET MARK TO cDelimiter 設置日期分隔符設置日期分隔符 SET DECIMALS TO nDecimalPlac
14、esSET DECIMALS TO nDecimalPlaces 設置數值顯示時的小數位數設置數值顯示時的小數位數 實驗例子 Set Default to e:myvfp 設置用戶數據庫文件的工作目錄(保存路徑)為e:myvfp。1.3 藥品分銷管理信息系統實例 藥品分銷管理信息系統是一個比得較典型的計算機數據庫應用系統實例,主要功能就是實現一般藥品從進貨、調撥到銷售這樣一個藥品流通環節中各項信息的即時管理。1.3.1 業務與數據流程分析1進貨數據錄入2調撥數據錄入3銷售數據錄入進貨單藥品進貨數據錄入庫存數據表藥品調撥數據錄入調撥數據表藥品銷售數據錄入庫存數據查詢銷售數據表庫 存 商品一覽銷售
15、單圖1 “藥品分銷管理信息系統”數據與業務流程圖1.3.2 系統功能分析 圖2 “藥品分銷管理信息系統”功能結構圖藥品分銷管理信息系統 藥品進貨數據錄入 藥品調撥數據錄入 藥品銷售數據錄入 庫存數據查詢 第2章 Visual FoxPro程序設計基礎 2.5 2.5 順序程序結構順序程序結構2.1 2.1 數據類型數據類型2.2 2.2 常量與變量常量與變量2.4 2.4 表達式表達式2.3 2.3 系統函數系統函數2.8 2.8 模塊化程序設計模塊化程序設計2.7 2.7 循環程序結構循環程序結構2.6 2.6 分支程序結構分支程序結構本章學習要點 掌握數據和數據類型的概念 掌握字符型、數值
16、型等數據類型所包括的范圍 能正確判斷數據的類型 了解數據存儲的形式及特點 掌握內存變量及其使用方法 了解系統函數和表達式的使用 掌握面向過程程序設計的幾種結構 掌握程序工作方式下內存變量及參數的使用2.1 數據類型 數據是數據庫系統處理的對象和核心,每個數據都包含數據內容和數據形式兩個方面,數據的形式是數據的基本屬性,它決定了數據的存儲方式和可進行的操作,被稱為數據類型。與其他程序設計語言一樣,Visual FoxPro提供了多種數據類型的支持,并可以將其存放于各種不同的數據容器中。2.1.1 字符型 字符型(Character)數據亦稱為字符串、字符,用字母C表示,是描述不具備計算能力的文字
17、數據類型。字符型數據由字母(漢字)、數字符號、空格等ASCII字符集中任意可打印字符組成,其最大長度為254個字節。2.1.2 數值型1數值型 數值型(Numeric)數據由數字(09)、小點數和正負號組成,用字母N表示。其最大長度為20個字節。2浮點型 浮點型(Float)數據用字母F表示,是數值型數據的一種,與上述數值型基本等價,只是在存儲形式上采用浮點格式,且數據的精度比數值型數據高。3雙精度型 雙精度型(Double)數據用字母B表示,是相對浮點型數據精度更高的數據類型。4整型 整型(Integer)數據用字母I表示,用于存儲無小數部分的數值,只能用于數據表中字段的定義。整型字段占用4
18、個字節。5. 貨幣型 $做為第一個符號,后跟數據;包括整數和小數。2.1.3 日期型與日期時間型日期型(Date) 數據用字母D表示,用來存放表示日期的數據,有多種格式表示,默認為mm/dd/yy。日期型數據有固定寬度,占用8個字節,其存儲格式為“yyyymmdd”,其中yyyy表示年號,占4位,mm表示月份,占2位,dd表示日期,占2位。日期時間型(DateTime) 數據用字母T表示,用作存放日期和時間,其默認格式為mm/dd/yyyy hh:mm:ssA|P,A表示上午,P表示下午。日期型有固定寬度,占用8個字節。存儲格式為“yyyymmddhhmmss”,其中hhmmss分別為時間中的
19、小時,分鐘和秒,各占2位。日期顯示格式命令格式:命令格式:SET DATE TO 說明:說明:該命令用于設置日期的輸出格式,的取值可以是AMERICAN 、ANSI 、BRITISH等,各取值及所對應的日期輸出格式如表2-1所示設置值日期格式示例設置值 日期格式示例AMERICAN mm/dd/yy 06/19/97USAmm-dd-yy06-19-97ANSIyy.mm.dd97.06.19MDY mm/dd/yy06/19/97BRITISH/FRENCH dd/mm/yy19/06/97DMY dd/mm/yy 19/06/97GERMAN dd.mm.yy 19.06.97YMD yy
20、/mm/dd 97/06/19ITALIAN dd-mm-yy19-06-97SHORTWindows短日期格式按Windows系統設置JAPAN yy/mm/dd97/06/19LONGWindows長日期格式日期格式分隔符命令格式:命令格式:SET MARK TO 說明:說明: 可以利用式中 參數設置任意可顯示字符作為日期分隔符。如果沒有指定任何分隔符,則按SET DATE的設置恢復成系統默認分隔符?!纠纠?-1】問題:問題: 設置日期顯示格式為設置日期顯示格式為ANSI方式,然后將其格式分方式,然后將其格式分隔符改為:隔符改為:,再還原成系統默認分隔符,并考察,再還原成系統默認分隔符,
21、并考察每次設置修改后的結果。每次設置修改后的結果。在系統【命令】窗口中依次輸入下列命令在系統【命令】窗口中依次輸入下列命令 ? date() &顯示系統日期顯示系統日期set date ansi &設置系統日期格式為設置系統日期格式為ANSI? date() &顯示系統日期顯示系統日期set mark to &設置日期格式分隔符為:設置日期格式分隔符為:? date() &顯示系統日期顯示系統日期set mark to &還原日期格式分隔符還原日期格式分隔符? date() &顯示系統日期顯示系統日期日期型數據中的世紀值命令格式: SET
22、 CENTURY ON | OFF | TO 說明: 式中ON設置在輸出日期數據時顯示世紀值;OFF設置在輸出日期數據時不顯示世紀值;TO 指定日期型數據的默認世紀值, 為199之間的某整數。【例【例2-2】問題:問題: 設置以十九世紀為日期型數據的世紀值。設置以十九世紀為日期型數據的世紀值。 在系統【命令】窗口中輸入下列命令在系統【命令】窗口中輸入下列命令 SET CENTURY TO 18 &設置以十九世紀為日期型數據的世紀值設置以十九世紀為日期型數據的世紀值嚴格日期格式檢查命令格式:命令格式:SET STRICTDATE TO 0 | 1 | 2說明:說明: 式中:0設置關閉嚴格
23、的日期格式檢測,即設置日期格式按傳統的嚴格格式;1設置嚴格的日期格式檢測(默認值),要求所有日期型和日期時間型數據均按嚴格的格式;2設置與1相同,但程序代碼中出現CTOD()和CTOT()函數時,會出現編譯錯誤。這個設置最適合調試時使用,用來檢測2000年兼容性錯誤;省略則恢復系統默認值,等價于1的設置。 在 Visual FoxPro 6.0 中,最小的日期值是 0001-01-01,即公元1年1月1日,最大的是 9999-12-31,即公元 9999 年12月31日。2.1.4 邏輯型 邏輯型(Logical)數據用字母L表示,用作存儲只有兩個值的數據,即“真”和“假”,常用來作邏輯判斷。
24、邏輯型數據有固定寬度,占用1個字節。2.1.5 備注型備注型(Memo)數據用字母M表示,用于存儲較長的字符型數據,只能用于數據表字段變量。記錄在備注項中的信息,實際存放在與表文件同名但擴展名為“.FPT”的備注文件中。在數據表中,備注型數據占用4個字節,用來“引用”備注的實際內容;備注文件中實際備注內容的長度只受磁盤空間限制。 2.1.6 通用型 通用型(General)數據用字母G表示,用于存儲OLE對象,OLE對象的具體內容可以是文本、圖片、電子表格、聲音、設計分析圖及字符型數據等,只能用于數據表中字段的定義。有了通用型字段就使得Visual FoxPro成為全方位的數據庫。同備注型數據
25、,通用型數據存入與表文件同名而擴展名為.FPT的文件中,其數據占用4個字節,實際數據長度僅受限于現有的磁盤空間。2.2 常量與變量 常量和變量是數據的兩種存儲方式。在Visual FoxPro系統環境下,數據的存儲方式的不同,在一定程度上決定了數據使用。2.2.1 常量常量是指在命令操作或程序運行過程中,其值始終保持不變的量。數值型字符型日期型日期時間型邏輯型貨幣型2.2.2 變量變量是指在命令操作或程序運行過程中其值可能發生變化的量。 1 1字段變量字段變量字段變量是指數據表中定義的字段。2 2內存變量內存變量內存變量是用戶通過命令或程序臨時定義的變量,它在內存中有一存儲區域,獨立于數據庫和
26、表文件。內存變量的類型有字符型、數值型、日期型、日期時間型、邏輯型、貨幣型和屏幕型。3 3數組變量數組變量數組變量,亦簡稱為數組,是指連續可索引的具有相同內在關系的元素所成的集合。數組中的每一元素具有唯一索引號,稱為下標,數組中的元素用數組名后接順序號(下標)來表示,如:ma(3),mb(2,3)。 【例【例2-3】問題:問題: 定義一個包含有兩行三列六元素的數組定義一個包含有兩行三列六元素的數組mb,并為,并為各元素賦值各元素賦值1、2、6,并按一維數組方式輸,并按一維數組方式輸出出mb(5)的值。的值。在系統【命令】窗口中依次輸入下列命令在系統【命令】窗口中依次輸入下列命令 Dimensi
27、on mb(2,3) &定義數組定義數組mbmb(1,1)=1 &為為mb(1,1)元素賦值元素賦值mb(1,2)=2mb(1,3)=3mb(2,1)=4mb(2,2)=5mb(2,3)=6Display Memo Like mb* &顯示名稱以顯示名稱以mb開頭的內存變量信息開頭的內存變量信息? mb(5) &輸出輸出mb數組中第數組中第5個元素的值個元素的值2.2.2 變量4系統變量 系統內存變量是Visual FoxPro自動創建和維護的變量,它們都以下劃線開頭,分別用于控制外部設備(如打印機、鼠標器等),屏幕輸出格式,或處理有關計算器、日歷、剪貼板等方面
28、的信息,例如:系統變量_DIARYDATE存儲機器當前日期,系統變量_CLIPTEXT接受文本并送入剪貼板。用戶可以通過修改系統變量改變系統狀態。2.2.3 *內存變量* 內存變量常用來接受用戶輸入的數據、程序運行的中間結果或對數據表和數據庫進行某種處理后的結果等。基于內存變量的操作有內存變量的賦值、內存變量的保存等。(1)內存變量的訪問可以直接通過名稱訪問內存變量,但如果當前使用的數據表中含有的字段變量時,應采用如下格式訪問內存變量:M.或:M - (2)內存變量的賦值 命令格式:命令格式:STORE TO |或| = 說明:說明: STORE一次能為若干變量賦予相同的值,但等號一次只能為一
29、個內存變量賦值。 在此使用賦值命令可以改變內存變量的值和數據類型。 建立屏幕型內存變量,使用命令:SAVE SCREEN TO 【例【例2-4】問題:問題: 使 用使 用 S T O R E 和和 = 命 令 為 內 存 變 量命 令 為 內 存 變 量cMessageTitle,cMessageText,mA,mB賦值賦值 在系統【命令】窗口中依次輸入下列命令在系統【命令】窗口中依次輸入下列命令 cMessageTitle = 藥品編號不可為空!藥品編號不可為空! &為內存變量為內存變量cMessageTitle賦值賦值store 請重新輸入藥品編號!請重新輸入藥品編號! to cM
30、essageText &為內存變量為內存變量cMessageText賦值賦值store 10 to mA,mB &定義內存變量定義內存變量mC和和mD均為數值型數據,值均為:均為數值型數據,值均為:10display memory like cMessage* &顯示名稱以顯示名稱以cMessage開頭的內存變量開頭的內存變量display memory like m? &顯示名稱為兩個字符且以顯示名稱為兩個字符且以m開頭的內存變量開頭的內存變量(3)內存變量的顯示命令格式:命令格式:LIST| DISPLAY MEMORY LIKE TO PRINTER |
31、TO FILE ?|? ,說明:說明:使用LIST MEMORY和DISPLAY MEMORY可以顯示內存變量和系統變量。DISPLAY MEMORY是分頁顯示內存變量的,而LIST MEMORY滾屏顯示全部信息。是指含有“*”和“?”的名稱,其中“*”代表多個字符,“?”代表單個字符;TO PRINTER指定顯示結果同時通過打印機輸出;TO FILE 指定顯示結果同時保存在的文件中。通過?和?可以顯示內存變量的值,?命令后的表達式值將在下一行的起始處輸出,?命令后的表達式值在當前行的光標所在處輸出?!纠纠?-5】問題:問題: 輸出內存變量的值輸出內存變量的值 在系統【命令】窗口中依次輸入下
32、列命令在系統【命令】窗口中依次輸入下列命令 STORE 100 TO pE? date() &顯示系統當前日期顯示系統當前日期? pE &顯示內存變量顯示內存變量pE的值結果為的值結果為 100? pE &在前面的結果行后面顯示內存變量在前面的結果行后面顯示內存變量pE的值的值(4)內存變量的保存命令格式:命令格式:SAVE TO ALL LIKE | ALL EXCEPT 說明:說明: 使用SAVE命令可以將內存變量以文件的形式存放到磁盤上。如果在文件名中不加上擴展名,Visual FoxPro將為其自動加上擴展名.MEM。 保存到內存變量文件后,內存變量并不會從內存
33、中被清除,也不會影響其使用。 (5)內存變量的清除 命令格式:命令格式:RELEASE RELEASE ALL LIKE|EXCEPT CLEAR MEMORYCLEAR ALL 說明:說明:RELEASE 命令可以釋放中列出的所有內存變量,變量命令之間用逗號隔開。使用LIKE表示釋放符合結構的內存變量,使用EXCEPT表示釋放不符合結構的所有內存變量;省略子句LIKE|EXCEPT ,將釋放所有的用戶定義變量。CLEAR MEMORY命令用于釋放所有內存變量。CLEAR ALL命令用于釋放所有內存變量,同時還關閉所有數據表文件、索引文件及格式文件等,并將1號工作區設為當前工作區?!纠纠?-
34、6】問題:問題: 使用內存變量清除命令分別清除指定內存變量使用內存變量清除命令分別清除指定內存變量pE、kL和清除以名稱以和清除以名稱以m開頭的內存變量。開頭的內存變量。在系統【命令】窗口中依次輸入下列命令在系統【命令】窗口中依次輸入下列命令 Release pE,kL &清除指定內存變量清除指定內存變量pE、kLRelease All Like m* &清除以名稱以清除以名稱以m開頭的內存變量開頭的內存變量(6)內存變量的恢復命令格式:命令格式:RESTORE FROM ADDITIVE說明:說明: 該命令可用于將中所有的內存變量恢復到內存中。 省略ADDITIVE子句:在恢
35、復內存變量之前系統將首先釋放當前內存中的所有內存變量;相反,命令含有ADDITIVE子句:在恢復內存變量文件中的變量時僅覆蓋同名的內存變量,其他內存變量將繼續保留的內存中。(7)內存變量的作用域1.1.全局型內存變量全局型內存變量 PublicPublic, 全局型內存變量在全部程序,過程和自定義函數以及它調用的程全局型內存變量在全部程序,過程和自定義函數以及它調用的程序,過程和自定義函數都有效使用序,過程和自定義函數都有效使用局部型內存變量局部型內存變量 Private c1,c2Private c1,c2 局部型內存變量在定義它的程序以及被該程序調用的程序,過程局部型內存變量在定義它的程序
36、以及被該程序調用的程序,過程和自定義函數都有效使用和自定義函數都有效使用 本地型內存變量本地型內存變量 Local A,BLocal A,B 只在定義它的程序中有效使用只在定義它的程序中有效使用. .2.2.4 數組命令格式:命令格式:DIMENSION|DECLARE(,),(,)說明:說明: 系統規定各下標的下界為1。 Visual FoxPro中,允許同一數組的元素取不同類型,而且同一個元素的前、后類型也允許改變。 系統將各數組的初值設置為邏輯假:.F.。 理論上在Visual FoxPro中最多可定義65000個數組,且每個數組最多可包含65000個元素.【例【例2-7】問題:問題:
37、定義包含定義包含4個元素的一維數組個元素的一維數組aF和包含和包含3行行5列的列的二維數組二維數組aS,并分別為數組各元素賦相同的值:,并分別為數組各元素賦相同的值:武漢工業學院武漢工業學院和和200。 在系統【命令】窗口中依次輸入下列命令在系統【命令】窗口中依次輸入下列命令 Dimension aF,aF(3,5) &定義數組定義數組aF和和aSStore 武漢工業學院武漢工業學院 To aF &為數組為數組aF各元素賦相同的值:各元素賦相同的值:武漢工武漢工業學院業學院aF=200 &為數組為數組aS各元素賦相同的值:各元素賦相同的值:200Display Memo
38、 Like a* &顯示名稱以顯示名稱以a開頭的內存變量信息開頭的內存變量信息2.3 系統函數Visual FoxPro的函數有兩種:一種是用戶自定義的函數,由用戶根據需要自行編寫;另一種是系統函數,由Visual FoxPro提供的內部函數,用戶可隨時調用。命令格式:命令格式:(說明:說明: 函數名、參數和函數值是函數的三個要素,函數名起標識作用;參數是自變量,一般是表達式,寫在括號內。 函數運算后通常會返回一個值,稱為函數值。函數值會因參數值而異。 有的函數缺省參數,稱為啞參,但仍有返回值。如:系統函數TIME()能返回系統當前時間。 函數的返回值有確定的類型,因而在組成表達式時要
39、特別注意類型匹配。2.3.1 數值函數函數功能示例命令返回值ABS()返回的絕對值? ABS(-5)5EXP()返回e的次方的值? EXP(2)7.39LOG()返回的自然對數值? LOG(2)0.69LOG10()返回的常用對數值? LOG10(2)0.30INT()不作四舍五入處理返回的整數部分? INT(10.99)10MAX(,)返回一組數值表達式中較大者? MAX(3,9,4)9MIN(,)返回一組數值表達式中較小者? MIN(3,9,4)3MOD(,)取模,返回整除后所得的余數? mod(7,3)1RAND()返回01之間的隨機數? RAND()(隨機數)ROUND(,)四舍五入,
40、保留位小數? ROUND(123.4567,3)123.457SIGN()返回的正負號? SIGN(-5)-1SQRT()求的平方根? SQRT(9)3.002.3.2 字符函數函數功能示例命令返回值ALLTRIM()返回去除前后空格后的值?ALLTRIM( Wu Han )Wu HanASC()返回中最左邊一個字符的ASCII碼值? ASC(WHPU)87AT(,)返回字符串在中第次出現的位置,若未出現則返回0? AT(HA,HA-HA,2)4CHR()返回對應的ASCII碼字符? CHR(65)ALEFT(,)返回左起個字符的子串? LEFT(WHPUCC,4)WHPULEN()返回的字節
41、數? LEN(Hello -!)7LIKE(,)返回是否符合通配符結構? LIKE(S*,SUBSTR).T.LOWER()返回將中字母轉換成小寫后結果? LOWER(Hello)helloLTRIM()刪除前導空格字符? LTRIM( 中國人)中國人RIGHT(,)返回右起個字符的子串?RIGHT(WHPUC,2)CSPACE()返回個空格?Hello+SPACE(3)+!Hello !SUBSTR(, ,)返回中第位起的長度為的字符子串 mCh=University? subs(mCh,4,3)verTRIM()刪除的尾部空格?TRIM(國慶節 )國慶節UPPER()返回將中字母轉換大寫后
42、結果? UPPER(Hello)HELLO2.3.3 日期與日期時間函數函數功能示例命令返回值DATE()返回系統的當前日期? DATE()10/03/05DATETIME()返回系統的當前日期和時間? DATETIME()10/03/05 11:04:37 AMDOW()返回是一個星期中第幾天? DOW(DATE()2DAY()用數字返回中的日數? DAY(DATE()3MAX(,)返回一組日期/時間表達式中較大者dp=2004/12/09? MAX(DATE(),dp)10/03/05MIN(,)返回一組日期/時間表達式中較小者dp=2004/12/09? MIN(DATE(),dp) 1
43、2/09/04MINUTE()返回的分鐘值? MINUTE( DATETIME()04MONTH(|)用數字返回|中的月份? MONTH(DATE()10SEC()返回的秒鐘值? SEC(DATETIME()37TIME()返回系統當前時間? TIME()11:04:37WEEK(|)返回|是一年中第幾個星期? WEEK(DATE()41YEAR(|)用數字返回|年份值? YEAR(DATE()20052.3.4 數據類型轉換函數函數功能示例命令返回值CTOD()將轉換為日期? CTOD(10/04/04)10/04/04DTOC()將轉換為字符串? DTOC(2004-10-04)10/04
44、/04DTOS()轉換為YYYYMMDD格式字符串? DTOS(DATE()20051003STR(, ,)將數值轉換為長度為位,具有位小數的字符串? STR(123.4567,9,2) 123.46TTOC()將轉換為字符串? TTOC(DATETIME() 1 0 / 0 3 / 0 5 11:04:37 AMTTOD()將轉換為日期型數據? TTOD(DATETIME()10/03/05VAL()將字符串轉換為數值? VAL(123.456)123.4562.3.5 測試函數函數功能舉例BOF()工作區W中記錄指針指向首記錄之前時返回.T.,否則為.F.?BOF()COL()返回光標所在
45、的列坐標,返回值為數值型?COL()CURDIR()返回當前文件夾?CURDIR()DBF()返回打開的表的名稱?DBF()EOF()記錄指針指向末記錄之后時返回.T.,否則為.F.?EOF()ERROR()返回程序出錯的錯誤號?ERROR()FCOUNT()返回工作區W中打開表文件中的字段數?FCOUNT()FIELD()返回工作區W中表文件中指定序號的字段名?FIELD()FILE()名為的文件存在則返回.T.,否則返回.F.?FILE(ABC.MEM)FOUND()工作區W中指定的表文件檢索操作成功返回.T.,否則返回.F.?FOUND()PROW()返回打印機字頭所在行坐標,返回值為數
46、值型?PROW()PCOL()返回打印機字頭所在列坐標,返回值為數值型?PCOL()RECNO()返回工作區W中當前記錄的記錄號?RECNO()RECCOUNT()返回工作區W中打開表的記錄數?RECOUNT()ROW()返回光標所在的行坐標,返回值為數值型?ROW()TYPE()返回表達式E計算結果的類型,以字符N,C,D,L等表示,U表示不可識別數據類型? TYPE(2+3)VARTYPE(, )返回表達式E計算結果的類型,若E的運算結果是Null值,則根據邏輯表達式L的值決定是否返回表達式的類型。A=Null? VARTYPE(A,.F.)2.3.6 其他函數函數功能舉例BETWEEN(
47、, )返回表達式E1計算結果是否介于表達式E2和表達式E3之間? BETWEEN(2+3,1,35)EMPTY()測試表達式E計算結果是否為空值? EMPTY(SPACE(0)IIF(,)根據表達式的值為真(.T.)或假(.F.),返回表達式或的值? IIF(85,正確,錯誤)INKEY()返回在N秒時間內用戶操作鍵盤或鼠標觸發的整數值,N取0則時間為無限長? INKEY(5)MESSAGEBOX( , ,)彈出一個系統對話框,提示信息為表達式C1,標題為表達式C2,對話框的樣式由表達式N決定? MESSAGEBOX(HELLO!)【例【例2-8】在系統【命令】窗口中依次輸入下列命令在系統【命
48、令】窗口中依次輸入下列命令 所得到的結果cMessageTitle = 藥品編號可能有誤!藥品編號可能有誤!cMessageText = 你想錄入一個新的藥品嗎?你想錄入一個新的藥品嗎?nDialogType = 4 + 32 + 0nAnswer = MESSAGEBOX(cMessageText, nDialogType, cMessageTitle)2.4 表達式 用運算符將常量、變量、函數或運算符連接起來的式子稱為表達式。表達式可分為:算術表達式、字符表達式、邏輯表達式、關系表達式、日期表達式和名表達式六類。2.4.1 算術表達式算術表達式由與數值型常量、變量、函數和和算術運算符所組成
49、的式子。算術表達式的結果是數值型數據。算術運算符優先級次序依次為:*或或(乘方)(乘方) *、/、%(乘、除和余數)(乘、除和余數) +和和-(加和減)(加和減) 【例【例2-9】在系統【命令】窗口中依次輸入下列命令在系統【命令】窗口中依次輸入下列命令 ? 2*7%32+3 &顯示結果為顯示結果為8? 5+2*3-1 &顯示結果為顯示結果為102.4.2 字符表達式字符表達式由字符型常量、變量、函數和字符運算符組成的式子。字符表達式的結果仍然是字符型。在字符串中嵌入引號,只需將字符串用另一種引號括起來即可。字符串運算符有三種:+ 將前后的字符串連接起來組成一個新字符串- 將兩個
50、字符串連接成為一個字符串,并將前面字符串尾部的空格移至該運算的結尾$ 測試前面的字符串是否包含在后面的字符串中。若是,返回邏輯值真,否則返回邏輯值假?!纠纠?-10】在系統【命令】窗口中依次輸入下列命令在系統【命令】窗口中依次輸入下列命令 ? 武漢武漢 +工業學院工業學院 &結果為結果為武漢武漢 工業學院工業學院 ? 武漢武漢 -工業學院工業學院+學報學報 &結果為結果為武漢工業學院武漢工業學院 學報學報? 武漢武漢$湖北省湖北省 &結果為結果為.F.2.4.3 日期與日期時間表達式日期表達式由日期或日期時間型常量、變量、函數和日期運算符組成的式子。日期運算符有:+
51、一個日期加上天數- 一個日期減去天數或者兩個日期相減【例【例2-11】在系統【命令】窗口中依次輸入下列命令在系統【命令】窗口中依次輸入下列命令 ? 2001/08/18+20 &結果顯示為結果顯示為09/07/01,系統日期為,系統日期為mm/dd/yy格式格式? 2001/08/10-20 &結果顯示為結果顯示為07/29/01? 2001/08/18-2001/03/08 &結果顯示為兩個日期的間隔天數結果顯示為兩個日期的間隔天數1632.4.4 關系表達式關系表達式是由字符表達式或者算術表達式與關系運算符組成的式子。關系表達式的運算結果總是邏輯值。 關系運算符有以
52、下7種: 大于 = 等于 = = 恒等于= 大于等于 , !=, # 不等于關系運算符的優先級相同。【例【例2-12】在系統【命令】窗口中依次輸入下列命令在系統【命令】窗口中依次輸入下列命令 ? 3020 &顯示結果為顯示結果為.T.? 3020+100 &顯示結果為顯示結果為.F.2.4.5 邏輯表達式邏輯表達式由邏輯型常量、變量、函數和邏輯運算符組成的式子。邏輯表達式的結果仍然是邏輯值,即.T.或.F.。邏輯運算符有以下三種,按照其優先級遞減的次序依次為:!,NOT 邏輯非AND 邏輯與OR 邏輯或ABA AND BA OR BNOT A.T.F.F.T.F.F.T.F.T
53、.T.F.F.F.F.T.T.T.T.T.F.表2-10邏輯運算真假表【例【例2-13】在系統【命令】窗口中依次輸入下列命令在系統【命令】窗口中依次輸入下列命令 A=1000B=100? A=B*10 AND NOT 3020+100 &顯示結顯示結果為果為.T.2.4.6 名表達式 利用命令和函數的名稱: 間接引用和宏替換兩種方式.1. 間接引用方式間接引用方式 store “c:myvfpxsxa.dbf” to name use (name) list2. 宏替換宏替換: & store “52” to exp ? &exp2.4.7 類和對象操作符 . 點操作符
54、,確定對象和類的關系以及屬性,事件,方法與 所屬對象的關系. Thisform.label1.caption : 作用域操作符,用于在子類中調用父類的方法. Navbutton:click2.5 順序程序結構 程序設計就是為了完成某一具體任務而編寫的一系列指令集合。程序設計也要遵循一定的結構要求。第三代計算機語言將程序結構分為順序結構、分支結構和循環結構等三種,也有將子程序作為第四種程序結構的說法。AB2.5.1 程序設計方式1程序設計器 可通過下述三種方法來創建程序。在【項目管理器】中,選擇【代碼】選項中的【程序】選項,再選擇【新建】命令。然后在彈出的【程序設計器】中設計程序。選擇Visua
55、l FoxPro系統菜單:【文件】|【新建】,將彈出【新建】對話框。在對話框中選擇【程序】單選按鈕,并單擊【新建文件】命令按鈕,然后在彈出【程序設計器】中設計程序。在【命令】窗口中,鍵入Modify Command命令打開【程序設計器】,并在其中完成程序文件的建立、編輯。 命令格式:命令格式:Modify Command 2.5.1 程序設計方式2程序的運行若要運行程序,可采用以下三種方法之一。若程序包含在一個項目中,則在【項目管理器】中選擇【代碼】選項卡中【程序】項下的程序文件,再選擇【運行】命令。打開【程序設計器】并編輯程序文件,選擇系統菜單:【程序】|【運行】,或單擊“運行”按鈕。在【命
56、令】窗口中,鍵入命令運行程序文件 命令格式:命令格式:Do With 2.5.2 基本語句1接受字符串輸入命令 在程序執行過程中需要接受用戶通過鍵盤所輸入的字符串數據,并存入指定的內存變量。命令格式:命令格式:Accept To 說明:說明:可以是字符串、字符型內存變量、返回值為字符型數據的函數和由它們組成的表達式。Accept “請輸入職稱:” to zcBrowse all for 職稱=zc2.5.2 基本語句2接受任意數據輸入命令命令格式:命令格式:Input To 說明:說明:其中和的含義及使用方法與Accept命令中的一樣,只是用戶可以輸入任意類型的數據,將其賦值給指定的;如果要輸
57、入字符串數據還必須用定界符括起來;如果輸入的是表達式,賦給內存變量的值將是表達式的計算結果。Input “請輸入出生日期:” to csrqdele all for 出生日期= csrq2.5.2 基本語句3等待接受字符輸入命令等待接受字符輸入命令命令格式:命令格式:WAIT WAIT 提示符提示符 TO TO 內存變量表內存變量表 WINDOW AT WINDOW AT , , TIMEOUT TIMEOUT 數值表達式數值表達式 說明:說明:在程序執行到該命令時,系統首先在屏幕上顯示用戶設置的提示信息,然后等待用戶從鍵盤輸入一個字符,并將其保存到指定的內存變量中。 【例】有時要求程序執行完
58、某一條命令以后需要暫時停止程序的執行,在【例】有時要求程序執行完某一條命令以后需要暫時停止程序的執行,在用戶按任意鍵以后再繼續執行。若要這樣做,可以在程序要暫時停止的位置用戶按任意鍵以后再繼續執行。若要這樣做,可以在程序要暫時停止的位置添加如下命令:添加如下命令: WAIT “按任意鍵繼續!按任意鍵繼續!” WINDOW2.5.2 基本語句4格式輸出命令命令格式:命令格式: , Say Picture 說明:說明:命令可使的值在指定的位置按指定的格式輸出。 10,10 Say “姓名” Picture “xxxxxxx”2.5.2 基本語句5格式輸入命令 命令格式:命令格式: , Say Ge
59、t Read例如:- xm=“ “ - use 人才檔案 10,10 Say 姓名 get xmReadLocate all for 姓名=xm 14,16 Say “姓名” Picture “xxxxxxx” 14,26 Say 姓名 Picture “999.99”2.5.2 基本語句6注釋命令命令格式:命令格式:* /Note & 說明:說明:如果程序語句是以*或Note開頭,就是注釋語句行,程序執行到此將跳過該行,繼續執行后面的語句。&命令則是用于語句尾部的注釋語句。2.5.2 基本語句7終止程序執行命令命令格式:命令格式:CANCELQUIT說明:說明:這兩個命令終止
60、程序執行的結果有所不同。前者用于終止當前正在執行的Visual FoxPro程序,返回Visual FoxPro系統。后者用于終止當前Visual FoxPro系統,并返回操作系統。2.5.3 順序結構 結構化程序設計方法是基于模塊化、自頂向下逐層細化等程序設計技術基礎上發展而來的。 順序結構的每一段程序從總體上看都是順序結構的,經歷了開始處理結束等三個順序執行的步驟。 【例【例2-14】問題:問題: 從鍵盤輸入變量從鍵盤輸入變量nA和變量和變量nB的值,然后將其值交換。的值,然后將其值交換。Input 請輸入第一個數請輸入第一個數A的值:的值: To nAInput 請輸入第二個數請輸入第二個數B的值:的值: To nBT=nAnA=nBnB=T? 數值交換后數值交換后A、B兩個變量的值分別為:兩個變量的值分別為:,nB,nA2.6 分支程序結構 程序在執行過程中,有必要根據不同的情況選擇執行不同的程序代碼組合,這種結構稱為分支結構。分支結構也成為選擇結構,可分為簡單分支、雙向分支
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 迷你模型測試題及答案
- 2025年工業領域CCS技術在造紙行業的應用案例分析
- 沁園春雪試題及答案
- 2025年互聯網供應鏈風險管理體系構建與案例分析研究報告
- 工業互聯網平臺數據清洗算法在工業智能監控2025年應用案例分析報告
- 高中物理復習教案帶電粒子在電場中的運動
- 消費金融公司2025年用戶畫像精準營銷策略與金融科技創新策略應用案例創新研究報告
- 華泰固收培訓
- 河南省周口市沈丘縣2024-2025學年七年級下學期語文期末考試試卷(無答案)
- 2025年家具制造業個性化定制生產模式下的定制化生產市場潛力報告
- T/SHSOT 015.1-2024皮膚角質層膠帶剝離方法及應用第1部分:角質層剝離方法
- 2025甘肅省農墾集團有限責任公司招聘生產技術人員145人筆試參考題庫附帶答案詳解
- 2025至2030年中國豆角絲行業投資前景及策略咨詢報告
- 消防心理測試題或答案及答案
- 全國中級注冊安全工程師考試《其他安全》真題卷(2025年)
- 南開大學-商業健康保險與醫藥產業高質量協同發展-團體補充醫療保險改革新視角-2025年3月20日
- 弱電安防施工安全培訓
- 電梯維保半年工作總結
- 12《尋找生活中的標志》(教學設計)-2023-2024學年二年級上冊綜合實踐活動魯科版
- 七年級道法下冊 第二學期 期末綜合測試卷(人教海南版 2025年春)
- 架橋機常見安全隱患
評論
0/150
提交評論