版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
VisualFoxPro程序設(shè)計教程(第3版)(陳娟段盛)第一章
數(shù)據(jù)庫基礎(chǔ).ppt第二章
數(shù)據(jù)類型表達式和函數(shù).ppt第三章
數(shù)據(jù)庫與數(shù)據(jù)表的操作.ppt第四章
結(jié)構(gòu)化查詢語言.ppt第五章
視圖與查詢.ppt第六章
結(jié)構(gòu)化程序設(shè)計.ppt第七章
表單設(shè)計.ppt第八章
報表設(shè)計.ppt第九章
菜單設(shè)計.ppt第十章
應(yīng)用程序的生成與發(fā)布.ppt全套可編輯PPT幻燈片課件(共10章)目錄
CONTENTS1.數(shù)據(jù)庫系統(tǒng)2.關(guān)系數(shù)據(jù)庫3.Vfp概述第一章數(shù)據(jù)庫基礎(chǔ)4.項目管理器1.1數(shù)據(jù)庫系統(tǒng)1.1.1數(shù)據(jù)與數(shù)據(jù)處理數(shù)據(jù)數(shù)據(jù)是存儲在某一媒體上,對客觀事物進行描述的物理符號。
文字數(shù)據(jù):如姓名、職稱、地址等;數(shù)值型數(shù)據(jù):如價格、數(shù)量、長度等,多媒體數(shù)據(jù):如圖像、聲音、視頻等。1.1數(shù)據(jù)庫系統(tǒng)1.1.1數(shù)據(jù)與數(shù)據(jù)處理數(shù)據(jù)處理數(shù)據(jù)處理是對數(shù)據(jù)的采集、整理、存儲、分類、計算、加工、檢索和傳輸一系列操作的總和。其目的是從大量原始數(shù)據(jù)中,獲得有價值的信息,作為人們行為和決策的依據(jù)。1.1數(shù)據(jù)庫系統(tǒng)1.1.2計算機數(shù)據(jù)管理人工管理階段數(shù)據(jù)不保存。數(shù)據(jù)和程序不具有獨立性。數(shù)據(jù)不能共享。重復(fù)的數(shù)據(jù)稱為數(shù)據(jù)冗余1.1數(shù)據(jù)庫系統(tǒng)1.1.2計算機數(shù)據(jù)管理文件系統(tǒng)階段數(shù)據(jù)長期保存。程序與數(shù)據(jù)有了一定的獨立性。數(shù)據(jù)的獨立性低。數(shù)據(jù)的共享性差,存在數(shù)據(jù)冗余和數(shù)據(jù)的不一致。1.1數(shù)據(jù)庫系統(tǒng)1.1.2計算機數(shù)據(jù)管理文件系統(tǒng)階段…應(yīng)用程序2應(yīng)用程序1應(yīng)用程序n數(shù)據(jù)文件2數(shù)據(jù)文件1數(shù)據(jù)文件n文件系統(tǒng)…1.1數(shù)據(jù)庫系統(tǒng)1.1.2計算機數(shù)據(jù)管理數(shù)據(jù)庫階段數(shù)據(jù)的共享性高,冗余度低。采用特定的數(shù)據(jù)模型。數(shù)據(jù)獨立性高。統(tǒng)一的數(shù)據(jù)控制功能。1.1數(shù)據(jù)庫系統(tǒng)1.1.2計算機數(shù)據(jù)管理數(shù)據(jù)庫階段…應(yīng)用程序2應(yīng)用程序1應(yīng)用程序n數(shù)據(jù)庫管理系統(tǒng)數(shù)據(jù)庫1.1數(shù)據(jù)庫系統(tǒng)1.1.3數(shù)據(jù)庫系統(tǒng)組成數(shù)據(jù)庫系統(tǒng)(DatabaseSystem,DBS)是指引入數(shù)據(jù)庫技術(shù)的計算機系統(tǒng)。它實現(xiàn)了有組織地、動態(tài)地存儲大量相關(guān)數(shù)據(jù),提供了數(shù)據(jù)處理和信息資源共享的便利手段。1.1數(shù)據(jù)庫系統(tǒng)數(shù)據(jù)庫系統(tǒng)圖示數(shù)據(jù)庫應(yīng)用系統(tǒng)數(shù)據(jù)庫管理系統(tǒng)操作系統(tǒng)硬件數(shù)據(jù)庫管理員開發(fā)人員最終用戶1.1數(shù)據(jù)庫系統(tǒng)1.1.3數(shù)據(jù)庫系統(tǒng)組成硬件系統(tǒng)硬件系統(tǒng)主要指計算機硬件設(shè)備,包括CPU、內(nèi)存、外存、輸入/輸出設(shè)備等。1.1數(shù)據(jù)庫系統(tǒng)1.1.3數(shù)據(jù)庫系統(tǒng)組成數(shù)據(jù)庫集合Database(DB)數(shù)據(jù)庫是指存儲在計算機外存中,結(jié)構(gòu)化的相關(guān)數(shù)據(jù)的集合。它不僅包括描述事物的數(shù)據(jù)本身,還包括相關(guān)事物之間的聯(lián)系。數(shù)據(jù)庫以文件的形式存儲在外存中,用戶通過數(shù)據(jù)庫管理系統(tǒng)來統(tǒng)一管理和控制數(shù)據(jù)。1.1數(shù)據(jù)庫系統(tǒng)1.1.3數(shù)據(jù)庫系統(tǒng)組成數(shù)據(jù)庫管理系統(tǒng)DatabaseManagementSystem(DBMS)數(shù)據(jù)庫管理系統(tǒng)是對數(shù)據(jù)實行專門管理的系統(tǒng)軟件,是數(shù)據(jù)庫系統(tǒng)的核心。它在操作系統(tǒng)的基礎(chǔ)上運行,方便用戶建立、使用和維護數(shù)據(jù)庫。1.1數(shù)據(jù)庫系統(tǒng)數(shù)據(jù)庫管理系統(tǒng)主要功能數(shù)據(jù)定義
DBMS提供數(shù)據(jù)定義語言DDL(DataDefinitionLanguage),負責(zé)數(shù)據(jù)庫對象的建立、修改和刪除等。數(shù)據(jù)操縱
DBMS提供數(shù)據(jù)操縱語言DML(DataManipulationLanguage),實現(xiàn)數(shù)據(jù)的基本操作。例如,對表中數(shù)據(jù)的查詢、插入、刪除和修改。數(shù)據(jù)控制包括安全性控制、完整性控制和并發(fā)性控制等。數(shù)據(jù)庫維護
包括數(shù)據(jù)庫的備份和恢復(fù),數(shù)據(jù)庫的轉(zhuǎn)換、數(shù)據(jù)庫的性能監(jiān)視和優(yōu)化等。1.1數(shù)據(jù)庫系統(tǒng)1.1.3數(shù)據(jù)庫系統(tǒng)組成相關(guān)軟件操作系統(tǒng)數(shù)據(jù)庫開發(fā)工具數(shù)據(jù)庫應(yīng)用系統(tǒng)1.1數(shù)據(jù)庫系統(tǒng)1.1.3數(shù)據(jù)庫系統(tǒng)組成各類人員數(shù)據(jù)庫管理員(DBA)開發(fā)人員最終用戶1.2關(guān)系數(shù)據(jù)庫1.2.1概念模型現(xiàn)實世界中事物及聯(lián)系在人們頭腦中的反映,經(jīng)過人們頭腦的分析、歸納、抽象,形成信息世界。對信息世界所建立的抽象的模型,稱之為概念模型。目前常用實體聯(lián)系模型表示概念模型。1.2關(guān)系數(shù)據(jù)庫1.2.1概念模型實體是客觀存在并且可相互區(qū)別的事物。
可以是實際的事物(如讀者、圖書、學(xué)生、教師、課程等),也可以是抽象的事件。(如借書、選課、訂貨等活動)實體1.2關(guān)系數(shù)據(jù)庫1.2.1概念模型實體的特性稱為屬性,一個實體可以用多個屬性來描述。例如,圖書實體可以用條形碼、書名、作者、出版社、出版年月、售價等屬性來描述。讀者實體可以用讀者證號、姓名、身份、性別、電話號碼等屬性來描述。實體屬性1.2關(guān)系數(shù)據(jù)庫1.2.1概念模型用實體名及其屬性集合描述的同類實體,稱為實體型。例如,圖書(條形碼、書名、作者、出版社、出版年月、售價)就是一個實體型。同類型實體的集合稱為實體集。例如,所有的圖書構(gòu)成一個實體集。實體型和實體集1.2關(guān)系數(shù)據(jù)庫1.2.1概念模型
實體間的聯(lián)系就是指實體集與實體集之間的聯(lián)系。實體間的聯(lián)系1.2關(guān)系數(shù)據(jù)庫1.2.1概念模型一對一聯(lián)系
實體集A中的每個實體僅與實體集B中的一個實體聯(lián)系,反之亦然。一對多聯(lián)系
對于實體集A中的每個實體,實體集B都有多個實體與之對應(yīng);反之,對于實體集B中的每個實體,實體集A中只有一個實體與之對應(yīng)。多對多聯(lián)系
對于實體集A中的每個實體,實體集B都有多個實體與之對應(yīng);反之,對于實體集B中的每個實體,實體集A中也有多個實體與之對應(yīng)。1.2關(guān)系數(shù)據(jù)庫1.2.1概念模型實體-聯(lián)系模型使用E-R圖(Entity-RelationshipDiagram)來描述概念模型。E-R圖1.2關(guān)系數(shù)據(jù)庫1.2.2數(shù)據(jù)模型建立概念模型之后,為了將其轉(zhuǎn)換為計算機能夠管理的數(shù)據(jù),需要按計算機系統(tǒng)的觀點對數(shù)據(jù)建模。數(shù)據(jù)模型直接面向數(shù)據(jù)庫中數(shù)據(jù)的邏輯結(jié)構(gòu),有一組嚴格的語法和語義語言,可以用來定義、操縱數(shù)據(jù)庫中的數(shù)據(jù)。
任何一個數(shù)據(jù)庫管理系統(tǒng)都是基于某種數(shù)據(jù)模型的。1.2關(guān)系數(shù)據(jù)庫1.2.3關(guān)系模型在關(guān)系模型中,基本數(shù)據(jù)結(jié)構(gòu)就是二維表。實體及實體之間聯(lián)系用二維表來表示,數(shù)據(jù)被看成二維表中的元素。關(guān)系操作的對象和結(jié)果都是二維表。1.2關(guān)系數(shù)據(jù)庫1.2.3關(guān)系模型關(guān)系術(shù)語
元組(記錄)
屬性(字段)1.2關(guān)系數(shù)據(jù)庫1.2.3關(guān)系模型關(guān)系術(shù)語關(guān)系
一個關(guān)系就是一張二維表,每個關(guān)系有個關(guān)系名。
在vfp中,一個關(guān)系存儲為一個數(shù)據(jù)表文件,文件的擴展名為dbf。關(guān)系模式對應(yīng)于數(shù)據(jù)表的結(jié)構(gòu),其格式為表名(字段名1,字段名2,字段名3,……,字段名n)。
例如:圖書(條形碼、書名、作者、出版社、出版年月、售價)就是“圖書”關(guān)系的關(guān)系模式,即“圖書”表的結(jié)構(gòu)。1.2關(guān)系數(shù)據(jù)庫1.2.3關(guān)系模型關(guān)系術(shù)語元組
二維表的一行稱為關(guān)系的一個元組,
即VFP數(shù)據(jù)表中的一條記錄。例如,(P0000001馬克思的人學(xué)思想袁貴仁北師大1996/06/0619.0)就是“圖書”關(guān)系的一個元組,即“圖書”表的一條記錄。1.2關(guān)系數(shù)據(jù)庫1.2.3關(guān)系模型關(guān)系術(shù)語屬性
二維表的一列稱為關(guān)系的一個屬性,即VFP數(shù)據(jù)表中的一個字段。例如,條形碼、書名、作者、出版社、出版年月、售價等都是“圖書”關(guān)系的屬性,即“圖書”表的字段。1.2關(guān)系數(shù)據(jù)庫1.2.3關(guān)系模型關(guān)系術(shù)語域
屬性的取值范圍稱為域,即不同元組對同一個屬性的取值所限定的范圍例如,在“圖書”關(guān)系中,書名屬性的域是文字字符,出版年月屬性的域是日期,售價屬性的域是0以上的數(shù)值。1.2關(guān)系數(shù)據(jù)庫1.2.3關(guān)系模型關(guān)系術(shù)語關(guān)鍵字
能唯一標識元組的屬性或?qū)傩缘慕M合稱為關(guān)鍵字。
在VFP數(shù)據(jù)表中,能標識記錄唯一性的字段或字段的組合,稱為主關(guān)鍵字或候選關(guān)鍵字。例如,在“圖書”關(guān)系中,每一本圖書的條形碼是唯一的,故“條形碼”可作為圖書表的關(guān)鍵字。而兩本書的書名可能相同,所以“書名”不能作為圖書表的關(guān)鍵字。1.2關(guān)系數(shù)據(jù)庫1.2.3關(guān)系模型關(guān)系術(shù)語外部關(guān)鍵字
如果關(guān)系中的某個屬性不是本關(guān)系的關(guān)鍵字,而是另一關(guān)系的關(guān)鍵字,稱這個屬性為外部關(guān)鍵字。1.2關(guān)系數(shù)據(jù)庫1.2.3關(guān)系模型關(guān)系特點關(guān)系必須規(guī)范化。
最基本的要求是每個屬性必須是不可分割的數(shù)據(jù)單元,即每個屬性不能再細分為幾個屬性。在一個關(guān)系中,不能出現(xiàn)相同的屬性名。
1.2關(guān)系數(shù)據(jù)庫1.2.3關(guān)系模型關(guān)系特點在一個關(guān)系中,不能出現(xiàn)完全相同的元組關(guān)系中元組的次序無關(guān)緊要
任意交換兩行的位置不影響數(shù)據(jù)的實際含義關(guān)系中屬性的次序無關(guān)緊要
任意交換兩列的位置不影響數(shù)據(jù)的實際含義1.2關(guān)系數(shù)據(jù)庫1.2.3關(guān)系模型關(guān)系實例一個具體的關(guān)系模型通常由若干個關(guān)系模式構(gòu)成。在VFP中,相互之間存在聯(lián)系的數(shù)據(jù)表放在一個數(shù)據(jù)庫文件中進行管理。數(shù)據(jù)庫文件的擴展名為dbc。1.2關(guān)系數(shù)據(jù)庫例題1.2關(guān)系數(shù)據(jù)庫1.2.4關(guān)系運算傳統(tǒng)的集合運算并
設(shè)關(guān)系R與S有相同的屬性,關(guān)系R與關(guān)系S的并,將產(chǎn)生一個包含R和S所有不同元組的新關(guān)系,記作R∪S。1.2關(guān)系數(shù)據(jù)庫1.2.4關(guān)系運算傳統(tǒng)的集合運算交
設(shè)關(guān)系R與S有相同的屬性,關(guān)系R與關(guān)系S的交,是既屬于R也屬于S的元組組成的新關(guān)系,記作R∩S。
1.2關(guān)系數(shù)據(jù)庫1.2.4關(guān)系運算傳統(tǒng)的集合運算差
設(shè)關(guān)系R與S有相同的屬性,關(guān)系R與關(guān)系S的差,是所有屬于R但不屬于S的元組組成的新關(guān)系,記作R-S。1.2關(guān)系數(shù)據(jù)庫1.2.4關(guān)系運算傳統(tǒng)的集合運算關(guān)系ts1為王穎珊借過的圖書,
關(guān)系ts2為楊瑞借過的圖書。
則ts1∪ts2為王穎珊和楊瑞借過的所有圖書,
ts1∩ts2為王穎珊和楊瑞都借過的圖書,
ts1-ts2為王穎珊借過但楊瑞未借過的圖書。例題1.2關(guān)系數(shù)據(jù)庫1.2.4關(guān)系運算例題1.2關(guān)系數(shù)據(jù)庫1.2.4關(guān)系運算例題1.2關(guān)系數(shù)據(jù)庫1.2.4關(guān)系運算專門的關(guān)系運算選擇
從關(guān)系中選出滿足給定條件的元組的操作稱為選擇。選擇是從行的角度進行運算,在水平方向選出滿足條件的元組。新關(guān)系的關(guān)系模式不變,元組是原關(guān)系的一個子集。1.2關(guān)系數(shù)據(jù)庫1.2.4關(guān)系運算從圖書表中篩選出所有出版社為中華書局的圖書例題專門的關(guān)系運算1.2關(guān)系數(shù)據(jù)庫1.2.4關(guān)系運算專門的關(guān)系運算投影
從關(guān)系中選出若干屬性組成新的關(guān)系稱為投影。投影是從列的角度進行運算,在垂直方向抽取若干屬性或重新排列屬性。新關(guān)系的屬性個數(shù)通常比原關(guān)系少,或者屬性的排列順序不同。1.2關(guān)系數(shù)據(jù)庫1.2.4關(guān)系運算從圖書表中抽取圖書的條形碼、書名、售價例題專門的關(guān)系運算1.2關(guān)系數(shù)據(jù)庫1.2.4關(guān)系運算專門的關(guān)系運算連接
連接是把兩個關(guān)系中的元組按連接條件橫向結(jié)合,拼接成一個新的關(guān)系。最常見的連接運算是自然連接,它是利用兩個關(guān)系中的公共字段或者具有相同語義的字段,把該字段值相等的記錄聯(lián)接起來。1.2關(guān)系數(shù)據(jù)庫1.2.4關(guān)系運算例題專門的關(guān)系運算在圖書管理數(shù)據(jù)庫中,將借閱表和圖書表根據(jù)公共字段條形碼進行自然聯(lián)接,得到一個包含讀者證號、條形碼、書名、作者、出版社、出版年月、售價、借閱日期、還書日期屬性的關(guān)系。1.2關(guān)系數(shù)據(jù)庫1.2.4關(guān)系運算例題1.2關(guān)系數(shù)據(jù)庫1.2.4關(guān)系運算例題查詢讀者王穎珊所借圖書的書名、作者、借閱日期和還書日期。1.3VFP概述VisualFoxPro既是關(guān)系型數(shù)據(jù)庫管理系統(tǒng),又是可視化的面向?qū)ο蟮募砷_發(fā)工具。它具有強大的數(shù)據(jù)庫管理功能,支持自含型語言和結(jié)構(gòu)化查詢語言對數(shù)據(jù)的操作。VFP擁有五百條命令和兩百余種函數(shù),既支持傳統(tǒng)的面向過程的程序設(shè)計,也支持面向?qū)ο蟮某绦蛟O(shè)計方式。使用VFP提供的項目管理工具和向?qū)?、生成器、設(shè)計器等可視化開發(fā)工具,用戶可以簡便、快速地開發(fā)應(yīng)用程序。1.3VFP概述1.3.1發(fā)展歷史在20世紀70年代末期,美國的Ashton-Tate公司研制的dBASE是最流行的微機關(guān)系數(shù)據(jù)庫管理系統(tǒng)。1986年,美國FOX軟件公司發(fā)布了與dBASE兼容的FOXBASE。它功能更強大,運行速度更快,很快成為20世紀80年代中期主導(dǎo)的微機數(shù)據(jù)庫管理系統(tǒng)。1989年,F(xiàn)OX軟件公司開發(fā)了FOXBASE的后繼產(chǎn)品——FoxPro1.0版,1991年推出2.0版。1.3VFP概述1.3.1發(fā)展歷史1992年微軟收購了Fox公司。開發(fā)出FoxPro2.5、FoxPro2.6等大約20個軟件產(chǎn)品及其相關(guān)產(chǎn)品。1995年,微軟公司發(fā)布了FoxPro的新版本VisualFoxPro3.0,它全面支持面向?qū)ο蠹夹g(shù)和可視化編程技術(shù)。1998年,微軟推出了可視化編程語言集成包Visualstudio6.0,VisualFoxPro6.0是其中的一個產(chǎn)品。1.3VFP概述1.3.1發(fā)展歷史進入21世紀以來,微軟公司又相繼公布了VisualFoxPro7.0(2001年)、8.0(2003年)、和9.0(2004年)。目前,國內(nèi)大量使用的仍然是VisualFoxPro6.0中文版。1.3VFP概述1.3.2VFP安裝將VisualFoxPro6.0系統(tǒng)的光盤放入光驅(qū)中,安裝向?qū)詣訂印?/p>
如果沒有啟動,打開“我的電腦”或“資源管理器”,雙擊光盤上的安裝文件Setup.exe。1.3VFP概述1.3.2VFP安裝1.3VFP概述1.3.2VFP安裝1.3VFP概述1.3.2VFP安裝1.3VFP概述1.3.2VFP安裝1.3VFP概述1.3.2VFP安裝1.3VFP概述1.3.2VFP安裝1.3VFP概述1.3.2VFP安裝安裝常用組件可自行選擇安裝哪些組件。定義文件安裝位置1.3VFP概述1.3.2VFP安裝1.3VFP概述1.3.2VFP安裝1.3VFP概述1.3.3VFP的啟動和退出VFP啟動開始菜單1.3VFP概述1.3.3VFP的啟動和退出VFP啟動建立桌面快捷方式1.3VFP概述1.3.3VFP的啟動和退出VFP啟動打開相關(guān)文件在我的電腦或資源管理器中,任意雙擊一個與VisualFoxPro相關(guān)聯(lián)的文件1.3VFP概述1.3.3VFP的啟動和退出退出VFP從文件菜單中選取退出命令。點擊窗口右上角的關(guān)閉按鈕。按下Alt+F4組合鍵。在命令窗口輸入quit命令后按回車鍵。 1.3VFP概述主菜單常用工具欄狀態(tài)欄窗口工作區(qū)命令窗口標題欄1.3VFP概述標題欄標題欄位于主窗口的頂部,包含控制菜單圖標、應(yīng)用程序名稱、最小化按鈕、最大化按鈕(或還原按鈕)和關(guān)閉按鈕。1.3VFP概述主菜單主菜單包含文件、編輯、顯示、格式、工具、程序、窗口和幫助8個菜單項。單擊菜單項,系統(tǒng)會打開相應(yīng)的下拉菜單。用戶選擇其中的菜單命令,就可執(zhí)行VisualFoxPro中相應(yīng)的操作。VisualFoxPro的菜單項是上下文敏感的,也就是說,當情況變化時,菜單項或下拉菜單的菜單命令會有所不同。1.3VFP概述工具欄當用戶打開某些類型的文件時,系統(tǒng)將自動打開相應(yīng)的工具欄??梢允褂檬髽藢⒐ぞ邫谕弦返街鞔翱诘钠渌恢?。1.3VFP概述工具欄選擇“顯示”菜單下的“工具欄”命令,打開“工具欄”對話框??蛇x擇打開或關(guān)閉指定的工具欄。1.3VFP概述工具欄在工具欄上單擊鼠標右鍵,打開快捷菜單,也可以打開或關(guān)閉指定的工具欄。1.3VFP概述窗口工作區(qū)窗口工作區(qū)是指“常用”工具欄以下到狀態(tài)欄以上的區(qū)域,主要用來顯示命令或程序的執(zhí)行結(jié)果,同時也顯示打開的各種窗口和對話框。1.3VFP概述命令窗口在命令窗口中,可直接輸入VFP命令,按回車鍵,系統(tǒng)就會執(zhí)行此命令。用戶在命令窗口所輸入的命令,會自動保留在命令窗口中。若用戶要重復(fù)執(zhí)行一個已輸入的命令,只需將光標移到該命令行的任意位置,按回車鍵即可。用戶還可修改已輸入的命令后,在該命令行上按回車鍵來執(zhí)行修改后的命令。1.3VFP概述命令窗口在命令窗口上單擊鼠標右鍵,打開快捷菜單,用戶可以對命令窗口的文本執(zhí)行剪切、復(fù)制、粘貼、清除等操作。命令窗口可以被移動、改變大小和關(guān)閉。若關(guān)閉了命令窗口,選擇“窗口”菜單的“命令窗口”命令,或單擊常用工具欄的“命令窗口”按鈕,可打開命令窗口。此外,若用戶通過菜單執(zhí)行了某些操作,其對應(yīng)的命令也會自動顯示在命令窗口中。1.3VFP概述狀態(tài)欄狀態(tài)欄位于主窗口的底部,用于顯示工作狀態(tài)。例如,打開數(shù)據(jù)表后,狀態(tài)欄會顯示數(shù)據(jù)表的名稱、記錄數(shù)目等信息。1.3VFP概述1.3.4VFP的選項設(shè)置選擇“工具”菜單的“選項”命令所改變的設(shè)置存儲在Windows注冊表中。每次啟動VFP,所做的更改將繼續(xù)有效。所改變的設(shè)置僅在本次運行期間有效。退出VFP系統(tǒng)后,所做的更改將丟失。1.3VFP概述此外,設(shè)置系統(tǒng)環(huán)境也可用SET命令。在命令窗口中輸入SETDEFAULTTOd:\tsgl,就可以設(shè)置默認目錄為“d:\tsgl”。但是,對其所進行的設(shè)置僅在此次VisualFoxPro運行期間有效。1.3.4VFP的選項設(shè)置1.4項目管理器在VisualFoxPro中,開發(fā)一個應(yīng)用程序需要建立多個文件,如數(shù)據(jù)庫文件、查詢文件、表單文件、報表文件、菜單文件等。通過建立一個項目文件,可以將應(yīng)用程序的所有文件集中在一起,從而方便地管理這些文件。1.4項目管理器1.4.1創(chuàng)建項目新建項目1.4項目管理器1.4.1創(chuàng)建項目新建項目此外,使用命令CREATEPROJECT<項目名稱>,也可以在默認目錄下創(chuàng)建項目。如果要在指定目錄下創(chuàng)建項目,則應(yīng)在文件名前加上路徑。例如,在命令窗口輸入命令CREATEPROJECTd:\tsgl\圖書管理,則在d盤的tsgl文件夾下建立一個圖書管理項目。1.4項目管理器1.4.1創(chuàng)建項目項目管理器的界面1.4項目管理器1.4.1創(chuàng)建項目打開項目此外,使用命令MODIFYPROJECT<項目名稱>,也可以打開項目。1.4項目管理器1.4.1創(chuàng)建項目關(guān)閉項目單擊項目管理器右上角的“關(guān)閉”按鈕,即可關(guān)閉項目文件。當關(guān)閉一個空項目時,系統(tǒng)打開對話框,詢問是否保存該項目。單擊“刪除”按鈕,系統(tǒng)將從磁盤上刪除該空項目文件;單擊“保持”按鈕,系統(tǒng)將保存該空項目文件。1.4項目管理器1.4.2使用項目管理器創(chuàng)建文件1.4項目管理器1.4.2使用項目管理器添加文件1.4項目管理器1.4.2使用項目管理器修改文件1.4項目管理器1.4.2使用項目管理器移去文件1.4項目管理器1.4.3定制項目管理器移動項目管理器將鼠標指針指向“項目管理器”的邊框或4個角上,拖動鼠標便可改變項目管理器的大小。將鼠標指針指向“項目管理器”的標題欄,拖曳鼠標便可移動項目管理器。1.4項目管理器1.4.3定制項目管理器折疊和展開項目管理器1.4項目管理器1.4.3定制項目管理器拆分項目管理器作業(yè)謝謝觀看目錄
CONTENTS1.常量與變量2.運算符與表達式3.常用函數(shù)第二章數(shù)據(jù)類型表達式和函數(shù)2.1常量與變量2.1.1常量常量是指操作過程中其值固定不變的數(shù)據(jù),是一個具體的數(shù)據(jù)內(nèi)容,如字符串、常數(shù)或具體的日期。
2.1常量與變量2.1.1常量數(shù)值型常數(shù)由數(shù)字0-9、小數(shù)點及正負號構(gòu)成可用科學(xué)計數(shù)法表示:
1.2345E+3表示1.2345×103,即1234.5;
2.45E-4表示2.45×10-4,即0.0002452.1常量與變量2.1.1常量貨幣型常數(shù)貨幣型常量的表示形式為數(shù)值前加上一個貨幣符號($)。貨幣型常量在存儲和計算時,采用4位小數(shù)。當貨幣型常量超過4位小數(shù)時,多余的小數(shù)位將四舍五入2.1常量與變量2.1.1常量字符常數(shù)字符型常量是用英文的單引號、雙引號或方括號括起來的一串字符,也稱為字符串。字符可以是英文字母、數(shù)字、標點符號等所有ASCII碼字符及漢字。例如:’’湖南長沙’’、、[smith]都是字符串。2.1常量與變量2.1.1常量字符常數(shù)單引號、雙引號或方括號是字符串的定界符,它們用來規(guī)定字符串的起始和終止界限,不作為字符串本身的內(nèi)容。字符串的定界符必須成對匹配,即當一邊以單引號作為定界符時,另一邊也必須以單引號作為定界符。如果字符串本身含有作為定界符的字符,則必須用另一種符號作為定界符。2.1常量與變量2.1.1常量字符常數(shù)字符串的長度是指字符串中所含字符的個數(shù),其中,每個漢字相當于2個字符。
字符串的最大長度不能超過254。只有定界符沒有任何字符的字符串稱為空串,其長度為0。2.1常量與變量2.1.1常量日期型常數(shù)默認情況下,日期型常量要使用嚴格的日期格式{^yyyy-mm-dd}。以花括號{}作為定界符,花括號內(nèi)第一個符號是^,年份必須為四位,年月日的次序不能顛倒。年月日的分隔符可以為/(斜杠)、_(下畫線)、.(圓點)或空格。
例如,{^2008-8-1}{^2008/08/01}{^2008.8.1}{^200881}均表示同一個日期:2008年8月1日。2.1常量與變量2.1.1常量日期型常數(shù)若要設(shè)置傳統(tǒng)的日期格式,則應(yīng)執(zhí)行SETSTICTDATETO0命令。默認用{mm/dd/yy}或{mm/dd/yyyy}表示日期常量。例如,{6/25/08}或{6/25/2008}均表示2008年6月25日。若要恢復(fù)為嚴格的日期格式,執(zhí)行SETSTICTDATETO1命令2.1常量與變量2.1.1常量提示本書在介紹命令時,約定方括號[]中的內(nèi)容表示可選,豎杠|分隔的內(nèi)容表示任選其一,尖括號<>中的內(nèi)容由用戶提供。2.1常量與變量2.1.1常量設(shè)置日期顯示的格式SETDATE[TO]YMD|MDY|DMY|AMERICAN|ANSI|BRITISH|FRENCH|GERMAN|ITALIAN|JAPAN|USA設(shè)置日期的顯示格式,默認格式為AMERICAN,即mm/dd/yy。2.1常量與變量2.1.1常量設(shè)置日期格式的參數(shù)短語格式短語格式短語格式Y(jié)MDyy/mm/ddMDYmm/dd/yyDMYdd/mm/yyAMERICAN
/USAmm/dd/yyANSIyy.mm.ddGERMANdd.mm.yyBRITISH
/FRENCHdd/mm/yyITALIANdd-mm-yyJAPANyy/mm/dd2.1常量與變量2.1.1常量設(shè)置是否顯示世紀值SETCENTURYON/OFF設(shè)置顯示日期時是否顯示世紀值。
當使用ON,顯示世紀值,即年號以4位顯示;使用OFF,不顯示世紀值,即年號以2位顯示。2.1常量與變量2.1.1常量例題SETCENTURYOFF&&設(shè)置2位數(shù)字年份SETDATETOYMD&&設(shè)置年月日格式?{^2008-6-1}&&顯示結(jié)果為08/06/01SETSTRICTDATETO0&&設(shè)置不進行嚴格的日期格式檢查SETCENTURYON&&設(shè)置4位數(shù)字年份SETDATETODMY
&&設(shè)置日期的顯示格式為日月年?{^2008-6-1},{1/7/08}&&顯示結(jié)果為01/06/2008和01/07/20082.1常量與變量2.1.1常量日期時間型常數(shù)日期時間型常量包括日期和時間兩部分{日期,時間}。日期部分的格式和日期型常量相似,時間部分的格式為HH:MM:SS[A|P]。HH、MM、SS分別表示時、分、秒,A、P分別表示上午和下午。時、分、秒的默認值為12、0、0。A、P的默認值為上午。注意:日期和時間之間必須用逗號或空格隔開。2.1常量與變量2.1.1常量日期時間型常數(shù){^2008-6-1,}表示2008年6月1日上午12點(午夜)時間部分可以采取24小時制,當時間大于或等于12,則自然表示下午。
例如,{^2008-6-11:20:30P}和{^2008-6-113:20:30}均表示2008年6月1日下午1點20分30秒2.1常量與變量2.1.1常量設(shè)置日期格式選擇“工具”菜單下的“選項”命令,打開“選項”對話框。選擇“區(qū)域”選項卡2.1常量與變量2.1.1常量邏輯常數(shù)邏輯型常量只有邏輯真和邏輯假兩個值。邏輯真值用.t.,.T.,.y.,.Y.4種形式表示,
邏輯假值用.f.,.F.,..n,.N.4種形式表示。注意:圓點作為邏輯型常量的定界符,必不可少。2.1常量與變量2.1.2變量分為字段變量和內(nèi)存變量兩種。內(nèi)存變量:獨立于數(shù)據(jù)表而存在,通常用來存放命令操作或程序運行過程中的一些中間結(jié)果。內(nèi)存變量的值在操作過程中可以被改變。退出VFP后,內(nèi)存變量將被自動釋放。2.1常量與變量內(nèi)存變量的賦值<內(nèi)存變量>=<表達式>STORE
<表達式>TO<內(nèi)存變量列表>計算表達式的值,再將該值賦給內(nèi)存變量。2.1.2變量2.1常量與變量2.1.2變量內(nèi)存變量的賦值等號“=”一次只能給一個變量賦值,Store可同時給多個變量賦同一個值。多個變量之間用逗號隔開。簡單變量賦值時無需事先聲明或定義。當變量被賦值時,若該變量此時還不存在,系統(tǒng)將建立此變量,即在內(nèi)存中為其定義一個存儲區(qū)域。變量的值和數(shù)據(jù)類型由最后賦予它的表達式?jīng)Q定。當變量被重新賦值時,其值發(fā)生改變。若新值為其他數(shù)據(jù)類型,則變量的數(shù)據(jù)類型也相應(yīng)地發(fā)生改變。2.1常量與變量2.1.2變量例題n1=3&&把數(shù)值3賦給內(nèi)存變量n1,n1是數(shù)值型內(nèi)存變量
name=‘王波’
&&把字符串賦給內(nèi)存變量name,name是字符型內(nèi)存變量
store{^2008/6/1}to日期1,日期2&&把日期常量2008年6月1日同時賦給日期型內(nèi)存變量日期1和日期2l=.t.&&把邏輯真值.t.賦給內(nèi)存變量l,l是邏輯型內(nèi)存變量2.1常量與變量2.1.2變量例題n2=n1&&計算表達式n1的值為3,將n2賦值為3,n1的值不受影響n2=n2+1
&&計算表達式n2+1的值為4,將n2賦值為4n2=‘n2+1’&&變量n2重新賦值為字符串n2+1,n2變?yōu)樽址蛢?nèi)存變量2.1常量與變量2.1.2變量顯示表達式的值?[<表達式表>]??[<表達式表>]計算表達式的值,將其顯示在窗口工作區(qū)。?命令首先換行,在當前行的下一行顯示表達式的值。??命令不換行,在當前行的光標處顯示表達式的值。?/??可接多個表達式,表達式之間用逗號隔開。2.1常量與變量2.1.2變量例題?’n1=’,n1&&’n1=’為字符型常量,n1為變量,窗口工作區(qū)顯示n1=3?n2&&窗口工作區(qū)另起一行,顯示n2+1??name
&&窗口工作區(qū)在n2+1的后面顯示王波2.1常量與變量2.1.2變量內(nèi)存變量的顯示LIST|DISPLAYMEMORY
[LIKE
<通配符>][TOPRINTER|TOFILE<文件名>]顯示內(nèi)存變量的當前信息,包括變量名、作用域、類型、取值。2.1常量與變量2.1.2變量內(nèi)存變量的顯示使用LISTMEMORY,在屏幕上以滾動方式顯示,不分屏顯示;使用DISPLAYMEMORY,分屏顯示,即顯示了一屏后,顯示暫停,提示“按任意鍵繼續(xù)”,按下任意鍵后,繼續(xù)顯示下一屏。2.1常量與變量2.1.2變量內(nèi)存變量的顯示LIKE通配符表示只顯示與通配符相匹配的內(nèi)存變量。
通配符*表示任一串字符,?表示任一個字符。VFP有74個系統(tǒng)變量。如果用戶只要求顯示所有自定義變量,可以使用命令
DISPLAYMEMORYLIKE*。2.1常量與變量2.1.2變量內(nèi)存變量的顯示TOPRINTER子句表示將顯示的信息同時送打印機打印。TOFILE<文件名>子句表示將顯示的信息存入指定的文本文件,文件的擴展名為txt。2.1常量與變量2.1.2變量例題displaymemorylike*&&顯示用戶定義的全部內(nèi)存變量dispmemoliken* &&顯示以字母n開頭的所有內(nèi)存變量,即n1,name和n2dispmemoliken? &&顯示以字母n開頭,且名稱不多于兩個字符組成的內(nèi)存變量,即n1和n22.1常量與變量2.1.2變量提示在輸入命令時,命令中的保留字可只輸入前4個字符。例如displaymemory可簡化為dispmemo2.1常量與變量2.1.2變量內(nèi)存變量的清除CLEARMEMORYRELEASE
[<變量名表>]RELEASEALL
[LIKE<通配符>|EXCEPT
<通配符>]清除內(nèi)存變量2.1常量與變量2.1.2變量內(nèi)存變量的清除CLEARMEMORY和RELEASEALL命令將清除內(nèi)存中所有的內(nèi)存變量。RELEASE<內(nèi)存變量名表>清除指定的內(nèi)存變量。使用LIKE子句,清除符合通配符的變量;使用EXCEPT子句,清除不符合通配符的變量。2.1常量與變量2.1.2變量例題Release日期1,日期2&&清除變量日期1和日期2Releaseallliken*
&&清除所有變量名以n開始的變量,即n1,n2和name。Dispmemolike*
&&此時,顯示的變量有l(wèi)2.1常量與變量2.1.3數(shù)組內(nèi)存變量分為簡單內(nèi)存變量和數(shù)組。每一個簡單變量只占用內(nèi)存中的一個存儲區(qū)域,存儲一個值。而一個數(shù)組在內(nèi)存中占用連續(xù)的一組存儲區(qū)域,由多個數(shù)組元素組成。每個數(shù)組元素占用一個存儲區(qū)域,相當于一個簡單變量。用戶通過數(shù)組名和下標來訪問數(shù)組元素。2.1常量與變量2.1.3數(shù)組數(shù)組的創(chuàng)建DIMENSION
<數(shù)組名>(<下標上限1>,[,下標上限2])[,……]DECLARE<數(shù)組名>(<下標上限1>,[,下標上限2])[,……]DIMENSION和DECLARE兩種命令的功能相同,定義多個一維數(shù)組或二維數(shù)組數(shù)組的下標下限規(guī)定為1,一維數(shù)組的元素個數(shù)為下標上限1,二位數(shù)組的元素個數(shù)為下標上限1*下標上限2。2.1常量與變量2.1.3數(shù)組例題DIMENSIONm(4),n(2,3)命令定義了數(shù)組m和n。其中,m是一維數(shù)組,有4個數(shù)組元素:m(1)、m(2)、m(3)、m(4)。n是二維數(shù)組,有6個數(shù)組元素:n(1,1)、n(1,2)、n(1,3)、n(2,1)、n(2,2)、n(2,3)??梢杂靡痪S數(shù)組的形式訪問二維數(shù)組。例如,二維數(shù)組n如果用一維數(shù)組表示,依次為n(1)、n(2)、n(3)、n(4)、n(5)、n(6),即n(4)和n(2,1)是同一個數(shù)組元素。2.1常量與變量2.1.3數(shù)組數(shù)組的賦值數(shù)組創(chuàng)建后,系統(tǒng)自動給每個元素賦以邏輯值假。通過對數(shù)組名賦值,可以將同一個值同時賦給全部的數(shù)組元素。每個數(shù)組元素可分別賦值,同一數(shù)組中各數(shù)組元素類型可以不同2.1常量與變量2.1.3數(shù)組例題DIMENSIONm(4),n(2,3)&&定義了一維數(shù)組m和二維數(shù)組n。?m(1),n(1,1)&&數(shù)組創(chuàng)建后,每個數(shù)組元素的初值為邏輯值假。m=5&&通過對數(shù)組名賦值將所有數(shù)組元素賦值5?m(1),m(2),m(3),m(4) &&每個數(shù)組元素的值均為5n(1,1)=1;n(1,2)='中國';n(1,3)={^2008/10/1}&&每個數(shù)組元素可分別賦值,數(shù)據(jù)類型可以不同2.2運算符與表達式表達式是由常量、變量、函數(shù)通過特定的運算符連結(jié)起來的有意義的式子。每一個表達式經(jīng)過運算,將得到一個具體的結(jié)果,稱為表達式的值。n1*0.85+sqrt(9)變量運算符常量函數(shù)2.2運算符與表達式根據(jù)表達式值的類型,可將表達式分為數(shù)值表達式、字符表達式、日期表達式和邏輯表達式。單個的常量、變量和函數(shù),也可以看作一種特殊的表達式。2.2運算符與表達式2.2.1數(shù)值型表達式算數(shù)運算符按優(yōu)先級從高到低,有如下算術(shù)運算符:括號: ()乘方運算符: **或^乘、除、求余運算符: *、/、%加、減運算符: +、?2.2運算符與表達式2.2.1數(shù)值型表達式例題?1+5^2*2&&結(jié)果為51。首先進行乘方運算,再進行乘法運算,最后進行加法計算。數(shù)學(xué)算式的值?(2*3^2+1.2)/(4+4/5)&&對于某些數(shù)學(xué)算式,注意利用括號來改變優(yōu)先級2*32+1.24+452.2運算符與表達式2.2.1數(shù)值型表達式例題對于求余運算,余數(shù)的正負號與除數(shù)相同?10%3,10%(-3),-10%3,-10%-3&&結(jié)果為1,-2,2,-12.2運算符與表達式2.2.2字符型表達式字符型運算符字符運算符有以下兩個:+:將前后兩個字符串連接起來,形成一個新的字符串;?:將前后兩個字符串連接起來,若第一個字符串的尾部有空格,則將空格移到合并后字符串的尾部,其他位置的空格不改變位置。2.2運算符與表達式2.2.2字符型表達式例題?“This“+”is”&&表達式的結(jié)果為“Thisis”,保留前一字符串的尾部空格?“This“-”is”&&表達式的結(jié)果為“Thisis”將前一字符串的尾部空格移到最后?“Thisis“-”abook”&&表達式的結(jié)果為“Thisisabook”2.2運算符與表達式2.2.2字符型表達式例題?2+3,"2+3","2"+"3"&&2+3是數(shù)值型表達式,其值為5。"2+3"為字符型常量。"2"+"3"為字符型表達式,其值為"23"2.2運算符與表達式2.2.3日期型表達式日期型運算符日期+天數(shù)或天數(shù)+日期 將日期向后推指定的天數(shù),其值為日期型。日期?天數(shù) 將日期向前推指定的天數(shù),其值為日期型。日期?日期 兩個日期相差的天數(shù),其值為數(shù)值型。2.2運算符與表達式2.2.3日期型表達式日期型運算符日期時間+秒數(shù)或秒數(shù)+日期時間將日期時間向后推指定的秒數(shù),其值為日期時間型。日期時間-秒數(shù) 將日期時間向前推指定的秒數(shù),其值為日期時間型。日期時間-日期時間兩個日期時間相差的秒數(shù),其值為數(shù)值型。2.2運算符與表達式2.2.3日期型表達式例題?{^2008/10/1}+7&&表達式的值為2008/10/8,將2008年10月1日向后推7天?{^2008/10/1}-7&&表達式的值為2008/9/24,將2008年10月1日向前推7天?{^2008/10/1}-{^2008/5/1}&&表達式的值為153,兩個日期相差的天數(shù)2.2運算符與表達式2.2.3日期型表達式例題?{^2008-8-88am}+10000&&表達式的值為2008年8月8日8點46分40秒,
將2008年8月8日上午8時向后推10000秒的時間注意:日期時間表達式中,+和?運算符不能隨意使用,必須遵循以上規(guī)則。
例如,日期+日期就是一個非法的表達式。2.2運算符與表達式2.2.4邏輯型表達式關(guān)系型運算符關(guān)系運算符是比較兩個類型相同的數(shù)據(jù)是否符合規(guī)定的關(guān)系,若符合規(guī)定的關(guān)系,則表達式的結(jié)果是邏輯真值,否則為邏輯假值。2.2運算符與表達式2.2.4邏輯型表達式關(guān)系型運算符①兩個數(shù)值型數(shù)據(jù)或貨幣型數(shù)據(jù)比較時,按數(shù)值的大小比較。②兩個日期型數(shù)據(jù)比較時,越早的日期越小,越晚的日期越大。③兩個邏輯型數(shù)據(jù)比較時,邏輯真值.T.大于邏輯假值.F.。2.2運算符與表達式2.2.4邏輯型表達式例題?12>14 &&表達式的值為.F.?5>=5 &&表達式的值為.T.,>=表示大于或等于?5!=5 &&表達式的值為.F.2.2運算符與表達式2.2.4邏輯型表達式例題?{^2008/5/1}>{^2008/10/1} &&表達式的結(jié)果為.F.&&因為2008年10月1日晚于2008年5月1日,故{^2008/10/1}大于{^2008/5/1}?(9>8)>.F. &&表達式的值為.T.,因為9>8的結(jié)果為邏輯真值.T.,大于邏輯假值.F.2.2運算符與表達式2.2.4邏輯型表達式關(guān)系型運算符④兩個字符串比較大小時,系統(tǒng)先比較兩個字符串的第1個字符。哪個字符串的第1個字符大,則該字符串就大;若第1個字符相同,再比較兩個字符串的第2個字符,直到比較出大小。2.2運算符與表達式2.2.4邏輯型表達式字符的比較次序VFP規(guī)定了Machine(機內(nèi)碼)、PinYin(拼音)、Storke(筆畫)三種字符的排序次序,默認為拼音次序。拼音次序:漢字按照拼音順序排列。西文字符中空格最小,小寫abcd字母序列排在前面,大寫ABCD字母序列排在后面。機內(nèi)碼次序:漢字按照國標碼順序排列;西文字符按照字符的ASCII碼值大小排列。筆畫次序:無論中文西文,按筆劃多少的順序排列。2.2運算符與表達式2.2.4邏輯型表達式字符的排序次序2.2運算符與表達式2.2.4邏輯型表達式字符的比較次序SETCOLLATETO<排序次序名>次序名為“MACHINE”或“PINYIN”或“STROKE”2.2運算符與表達式2.2.4邏輯型表達式例題SETCOLLATETO"MACHINE" &&按機內(nèi)碼排序?"acb">"abc","a"<"A","江西">"江蘇"&&表達式的值為.T..F..T.SETCOLLATETO"PINYIN" &&按拼音排序?"acb">"abc","a"<"A","江西">"江蘇"&&表達式的值為.T..T..T.SETCOLLATETO"STROKE" &&按筆畫排序?"acb">"abc","a"<"A","江西">"江蘇"&&表達式的值為.T..T..F.2.2運算符與表達式2.2.4邏輯型表達式關(guān)系型運算符⑤運算符==只能用于字符型數(shù)據(jù)的運算,當==兩旁的字符串完全相同時,返回邏輯真值,否則返回邏輯假值。2.2運算符與表達式2.2.4邏輯型表達式字符型精確比較與EXACT設(shè)置使用等于運算符“=”比較兩個字符串時,運算結(jié)果與EXACT的狀態(tài)有關(guān)。系統(tǒng)默認EXACT狀態(tài)為OFF。若“=”兩旁字符串的字符個數(shù)不同,則只要求“=”右邊字符串與“=”左邊字符串的前面部分相同,結(jié)果就為.T.。當設(shè)置EXACT狀態(tài)為ON時,則要求“=”兩邊的字符串相同。此時,若“=”兩旁字符串的字符個數(shù)不同,系統(tǒng)將在較少字符的字符串尾部添加空格,使兩個字符串字符個數(shù)相同,再來進行比較。在“選項”對話框的“數(shù)據(jù)”選項卡中,可設(shè)置EXACT狀態(tài)。使用SETEXACTON|OFF命令,也可以設(shè)置EXACT狀態(tài)。2.2運算符與表達式2.2.4邏輯型表達式例題SETEXACTOFF?"湖南長沙"="湖南","湖南"="湖南長沙","湖南長沙"="長沙","湖南長沙"=="湖南"&&表達式的值為.T.,.F.,.F.,.F.SETEXACTON?"湖南長沙"="湖南","湖南"="湖南長沙","湖南長沙"="長沙","湖南長沙"=="湖南"&&表達式的值為.F.,.F.,.F.,.F.2.2運算符與表達式2.2.4邏輯型表達式關(guān)系型運算符⑥運算符“$”用于字符型數(shù)據(jù)的運算,若“$”左邊的字符串包含在“$”右邊的字符串中,即左邊字符串是右邊字符串的子串,則返回邏輯真值,否則返回邏輯假值。2.2運算符與表達式2.2.4邏輯型表達式例題?"is"$"This","This"$"is" &&表達式的值為.T..F.?"Is"$"This" &&表達式的值為.F.,大小寫的英文字母不相等?"Ts"$"This" &&表達式的值為.F.2.2運算符與表達式2.2.4邏輯型表達式邏輯型運算符按照優(yōu)先級從高到低,有下列邏輯運算符:邏輯非:NOT或!邏輯與:AND邏輯或:OR2.2運算符與表達式2.2.4邏輯型表達式邏輯型運算符2.2運算符與表達式2.2.4邏輯型表達式邏輯型運算符對于邏輯與“AND”,當連接的兩個邏輯型數(shù)據(jù)均為真值時,結(jié)果才為真值;對于邏輯或“OR”,當連接的兩個邏輯型數(shù)據(jù)均為假值時,結(jié)果才為假值。注意:邏輯運算符的前后必須有圓點或空格與其他數(shù)據(jù)分開。2.2運算符與表達式2.2.4邏輯型表達式例題書寫判斷數(shù)值型變量x是否大于3且小于10的條件:x>3andx<10&&不能寫為10>x>3,因為系統(tǒng)在計算該表達式時,首先計算10>x,得到一個邏輯值,再將其與3比較,而關(guān)系運算只能比較相同數(shù)據(jù)類型的數(shù)據(jù),所以系統(tǒng)會提示操作符/操作類型不匹配。書寫判斷字符型變量身份是否等于工作人員或教研人員的條件:身份="工作人員"OR身份="教研人員"&&不能寫成身份="工作人員"OR"教研人員",因為邏輯運算符只能連接邏輯型的數(shù)據(jù),而“教研人員”是字符型。2.2運算符與表達式2.2.4邏輯型表達式例題書寫判斷為女的工作人員或女的教研人員的條件:性別="女"AND身份="工作人員"OR性別="女"AND身份="教研人員"該條件也可以表示為:性別="女"AND(身份="工作人員"OR身份="教研人員")&&因為AND的優(yōu)先級高于OR,所以要加上括號,否則只要滿足教研人員的條件就會使表達式為真。2.2運算符與表達式2.2.4邏輯型表達式運算符優(yōu)先級在一個表達式中,若出現(xiàn)不同類型的運算符時,按下列優(yōu)先級進行運算:圓括號→算術(shù)運算、字符串運算和日期運算→關(guān)系運算→邏輯運算。2.2運算符與表達式2.2.4邏輯型表達式例題?NOT2+3=6&&值為.T.首先計算2+3為5,再計算5=6的值為.F.,最后計算NOT.F.的值為.T.2.2運算符與表達式2.2.4邏輯型表達式例題?NOT(7>6)AND"ABV">"ABC"OR5*2=8&&表達式的值為.F.,其運算順序如下所示:2.3常用函數(shù)VFP提供200余種內(nèi)置函數(shù),實現(xiàn)數(shù)據(jù)的運算或轉(zhuǎn)換功能。每個函數(shù)有固定的名稱,后面加一對圓括號,括號內(nèi)有若干個自變量。根據(jù)系統(tǒng)對函數(shù)功能的定義,函數(shù)將返回一個值,稱為函數(shù)值。函數(shù)SQRT(9)函數(shù)名自變量函數(shù)值為32.3常用函數(shù)2.3.1數(shù)值函數(shù)絕對值函數(shù)ABS(
<數(shù)值表達式>)函數(shù)值為<數(shù)值表達式>的絕對值。例題:?abs(-20),abs(0),abs(20)
&&函數(shù)值為20,0,202.3常用函數(shù)2.3.1數(shù)值函數(shù)符號函數(shù)SIGN(<數(shù)值表達式>)當<數(shù)值表達式>的值分別為正數(shù)、0、負數(shù)時,函數(shù)值分別為1、0、-1。例題:
?sign(-20),sign(0),sign(20)
&&函數(shù)值為-1,0,12.3常用函數(shù)2.3.1數(shù)值函數(shù)求余數(shù)函數(shù)MOD(<數(shù)值表達式1>,<數(shù)值表達式2>)函數(shù)值為<數(shù)值表達式1>除以<數(shù)值表達式2>的余數(shù),函數(shù)值的正負號與<數(shù)值表達式2>相同。例題:?mod(20,3),mod(20,-3),mod(-20,3),mod(-20,-3)
&&函數(shù)值為2,-1,1,-22.3常用函數(shù)2.3.1數(shù)值函數(shù)求余數(shù)函數(shù)INT(
<數(shù)值表達式>
)函數(shù)值為<數(shù)值表達式>的整數(shù)部分。CEILING(
<數(shù)值表達式>)函數(shù)值為大于等于<數(shù)值表達式>的最小整數(shù)。FLOOR(
<數(shù)值表達式>
)函數(shù)值為小于等于<數(shù)值表達式>的最大整數(shù)。2.3常用函數(shù)2.3.1數(shù)值函數(shù)例題?int(9.6),int(?9.6) &&函數(shù)值為9,?9
?floor(9.6),floor(?9.6) &&函數(shù)值為9,?10
?ceiling(9.6),ceiling(?9.6) &&函數(shù)值為10,?92.3常用函數(shù)2.3.1數(shù)值函數(shù)四舍五入函數(shù)ROUND(<數(shù)值表達式1>,<數(shù)值表達式2>)函數(shù)值為<數(shù)值表達式1>根據(jù)<數(shù)值表達式2>所指定的位置進行四舍五入后的結(jié)果。若<數(shù)值表達式2>大于或等于0,則其表示要保留的小數(shù)位數(shù);若小于0,則其表示整數(shù)部分的舍入位數(shù)。2.3常用函數(shù)2.3.1數(shù)值函數(shù)例題?round(123.4567,2),round((123.4567,0),round((123.4567,?2)&&函數(shù)值為123.46,123,1002.3常用函數(shù)2.3.1數(shù)值函數(shù)平方根函數(shù)SQRT(
<數(shù)值表達式>
)函數(shù)值為<數(shù)值表達式>的平方根,使用此函數(shù)時,要求<數(shù)值表達式>必須大于或等于0。2.3常用函數(shù)2.3.1數(shù)值函數(shù)指數(shù)函數(shù)EXP(
<數(shù)值表達式>)函數(shù)值為以e為底數(shù),以<數(shù)值表達式>為指數(shù)的值。2.3常用函數(shù)2.3.1數(shù)值函數(shù)自然對數(shù)函數(shù)LOG(<數(shù)值表達式>
)函數(shù)值為<數(shù)值表達式>的自然對數(shù)值。2.3常用函數(shù)2.3.1數(shù)值函數(shù)例題?exp(3),log(148.51) &&函數(shù)值為20.09,52.3常用函數(shù)2.3.1數(shù)值函數(shù)隨機數(shù)函數(shù)RAND()函數(shù)值為一個0到1之間的隨機數(shù)。2.3常用函數(shù)2.3.1數(shù)值函數(shù)求最大值最小值函數(shù)MAX(<表達式1>,<表達式2>[,<表達式3>…)函數(shù)值為所有數(shù)值表達式中的最大值。MIN(
<表達式1>,<表達式2>[,<表達式3>…)函數(shù)值為所有數(shù)值表達式中的最小值。對于最大值和最小值函數(shù),自變量的類型也可以是字符型、日期型、貨幣型等數(shù)據(jù)類型,但要求所有自變量的數(shù)據(jù)類型必須相同。2.3常用函數(shù)2.3.1數(shù)值函數(shù)例題?max(5^3,5*3,53) &&函數(shù)值為125
?min(5^3,5*3,53) &&函數(shù)值為15?max('中國','美國','日本'),max({^2006-10-1},{^2008-1-1})&&函數(shù)值為中國,1/1/082.3常用函數(shù)2.3.1數(shù)值函數(shù)圓周率函數(shù)PI()函數(shù)值為圓周率值,該函數(shù)無參數(shù)。2.3常用函數(shù)2.3.2字符串處理函數(shù)刪除前導(dǎo)和尾部空格函數(shù)ALLTRIM(
<字符表達式>)函數(shù)值為去掉<字符表達式>的前導(dǎo)和尾部空格字符后形成的字符串。LTRIM(
<字符表達式>)函數(shù)值為去掉<字符表達式>的前導(dǎo)空格字符后形成的字符串。TRIM(
<字符表達式>
)函數(shù)值為去掉<字符表達式>的尾部空格字符后形成的字符串。2.3常用函數(shù)2.3.2字符串處理函數(shù)例題s="湖南"?alltrim(s)+"長沙",ltrim(s)+"長沙",trim(s)+"長沙"&&表達式值為湖南長沙,湖南長沙,湖南長沙2.3常用函數(shù)2.3.2字符串處理函數(shù)生成空格字符串函數(shù)SPACE(
<數(shù)值表達式>
)函數(shù)值為空格組成的字符串,空格個數(shù)由<數(shù)值表達式>指定。2.3常用函數(shù)2.3.2字符串處理函數(shù)生成空格字符串函數(shù)LEN(
<字符表達式>)函數(shù)值為<字符表達式>的長度,即包含的字符個數(shù)。其中,一個ASCII字符長度為1,一個漢字長度為2。2.3常用函數(shù)2.3.2字符串處理函數(shù)例題x=space(1)+"HUNAN"+space(2)+"湖南"+space(3)?len(x),len(alltrim(x)),len(ltrim(x)),len(trim(x))&&表達式值為15,11,14,122.3常用函數(shù)2.3.2字符串處理函數(shù)大小寫字母轉(zhuǎn)換函數(shù)LOWER(<字符表達式>)函數(shù)值將<字符表達式>中所有的大寫字母轉(zhuǎn)換為小寫字母,其他字符不變。UPPER(<字符表達式>
)函數(shù)值將<字符表達式>中所有的小寫字母轉(zhuǎn)換為大寫字母,其他字符不變。2.3常用函數(shù)2.3.2字符串處理函數(shù)例題?upper("China中國"),lower("China中國")&&函數(shù)值為CHINA中國,china中國?upper(c)=”Y”&&該表達式可判斷字符變量c是否為小寫的y或大寫的Y2.3常用函數(shù)2.3.2字符串處理函數(shù)取子串函數(shù)LEFT(<字符表達式>,<長度>)函數(shù)值為從<字符表達式>的左端取指定<長度>的子串。RIGHT(<字符表達式>,<長度>)函數(shù)值為從<字符表達式>的右端取指定<長度>的子串。SUBSTR(
<字符表達式>,<起始位置>[,<長度>]
)函數(shù)值為將<字符表達式>從<起始位置>取指定<長度>的子串。若未指定<長度>,則從起始位置取到最后一個字符。2.3常用函數(shù)2.3.2字符串處理函數(shù)例題y="CHINA中國"?left(y,5),right(y,4),substr(y,6,2),substr(y,6)
&&函數(shù)值為CHINA,中國,中,中國xh=’201408020312’&&學(xué)號前4位為年級,5-6位為學(xué)院編號,7-8位為專業(yè)編號,9-10位為班級編號,11-12位為班級中的序號2.3常用函數(shù)2.3.2字符串處理函數(shù)例題?left(xh,4),substr(xh,5,2),right(xh,2)&&三個表達式分別為該學(xué)號所對應(yīng)學(xué)生的年級號,學(xué)院編號,班級中的序號2.3常用函數(shù)2.3.2字符串處理函數(shù)求子串位置函數(shù)AT(<字符表達式1>,<字符表達式2>[,<次數(shù)>]
)函數(shù)值為一個數(shù)值,若<字符表達式1>是<字符表達式2>的子串,函數(shù)值為<字符表達式1>的第一個字符在<字符表達式2>中的位置;若不是子串,則函數(shù)值為0。若指定<次數(shù)>,則函數(shù)值為<字符表達式1>在<字符表達式2>中按指定<次數(shù)>出現(xiàn)的位置。當<次數(shù)>缺省時,默認值為1。該函數(shù)區(qū)分大小寫字母。2.3常用函數(shù)2.3.2字符串處理函數(shù)求子串位置函數(shù)ATC(<字符表達式1>,<字符表達式2>[,<次數(shù)>])該函數(shù)功能與AT相同,但比較字符表達式時不區(qū)分字母大小寫。2.3常用函數(shù)2.3.2字符串處理函數(shù)例題store"ThisisVisualFoxpro"TOz?at("Fox",z),at("fox",z),atc("fox",z) &&函數(shù)值為16,0,16?at("is",z,3) &&函數(shù)值為102.3常用函數(shù)2.3.2字符串處理函數(shù)求子串出現(xiàn)次數(shù)函數(shù)OCCURS(<字符表達式1>,<字符表達式2>)函數(shù)值為<字符表達式1>在<字符表達式2>中出現(xiàn)的次數(shù)。若<字符表達式1>不是<字符表達式2>的子串,則函數(shù)值為0。2.3常用函數(shù)2.3.2字符串處理函數(shù)例題m="湖南長沙湖南大學(xué)"?occurs("湖南",m),occurs("長沙",m),occurs("長沙大學(xué)",m)&&函數(shù)值為2,1,02.3常用函數(shù)2.3.2字符串處理函數(shù)產(chǎn)生重復(fù)字符的字符串函數(shù)REPLICATE(<字符表達式>,<數(shù)值表達式>
)函數(shù)值為一個字符串,將<字符表達式>重復(fù)<數(shù)值表達式>所指定的次數(shù)。例題:?replicate("HUNAN",2)+replicate("湖南",3)
&&表達式的值為HUNANHUNAN湖南湖南湖南2.3常用函數(shù)2.3.2字符串處理函數(shù)子串替換函數(shù)STUFF(<字符表達式1>,<起始位置>,<長度>,<字符表達式2>)函數(shù)值為字符串,將<字符表達式1>中從<起始位置>開始,指定<長度>的若干個字符,用<字符表達式2>來替換。若<長度>是0,則函數(shù)值為在<字符表達式1>的<起始位置>處插入<字符表達式2>。如果<字符表達式2>是空串,則函數(shù)值為將<字符表達式1>中從<起始位置>開始指定<長度>的字符刪除。2.3常用函數(shù)2.3.2字符串處理函數(shù)例題n="長沙湖南大學(xué)"?stuff(n,5,4,"中南林業(yè)"),stuff(n,5,0,"岳麓山"),stuff(n,5,4,"")&&函數(shù)的值為長沙中南林業(yè)大學(xué),長沙岳麓山湖南大學(xué),長沙大學(xué)2.3常用函數(shù)2.3.2字符串處理函數(shù)字符替換函數(shù)CHRTRAN(<字符表達式1>,<字符表達式2>,<字符表達式3>)函數(shù)值為字符串,當<字符表達式1>的一個或多個字符與<字符表達式2>中的某個字符相匹配時,就用<字符表達式3>中相同位置的字符替換這些字符。若在<字符表達式2>中與<字符表達式1>相配的字符,在<字符表達式3>的相同位置上沒有字符,則此字符將被刪除。2.3常用函數(shù)2.3.2字符串處理函數(shù)例題?chrtran("124124","123","abc"),chrtran("124124","12","a")&&函數(shù)的值為ab4ab4,a4a4?chrtran('湖南長沙','','')
&&將字符串中的空格均用空串代替,即得到刪除了所有空格的字符串X=’3’&&設(shè)x是一個阿拉伯數(shù)字的字符?chrtranc(X,'123456789','壹貳叁肆伍陸柒捌玖')
&&使用cHRTRANC函數(shù),得到X所對應(yīng)的漢字格式三2.3常用函數(shù)2.3.2字符串處理函數(shù)字符串匹配函數(shù)LIKE(<字符表達式1>,<字符表達式2>)比較兩個字符串對應(yīng)位置上的字符,若所有對應(yīng)字符都匹配,函數(shù)值為邏輯真值.T.,否則為邏輯假值.F.。<字符表達式1>中可以包含通配符*和?。*可匹配任意數(shù)目的字符,?匹配任何單個字符。2.3常用函數(shù)2.3.2字符串處理函數(shù)例題?like("王*","王穎珊"),like("王?","王穎珊"),like("王穎珊","王*")&&函數(shù)的值為.T.,.F.,.F.,注意:只有在第一個表達式中*和?被用作通配符。2.3常用函數(shù)2.3.2字符串處理函數(shù)求字符的編碼函數(shù)ASC(
<字符表達式>)函數(shù)值為字符表達式中第1個字符的機內(nèi)碼。若是ASC字符,返回ASC碼;若是中文字符,返回漢字機內(nèi)碼。2.3常用函數(shù)2.3.2字符串處理函數(shù)求編碼對應(yīng)的字符函數(shù)CHR(
<數(shù)值表達式>)函數(shù)值為一個字符。若(<數(shù)值表達式>)是ASC碼,返回ASC字符;若是漢字機內(nèi)碼,返回漢字。2.3常用函數(shù)2.3.2字符串處理函數(shù)例題?asc("A"),asc("中國") &&函數(shù)的值為65,54992(漢字“中”的機內(nèi)碼)?chr(65+4),chr(54992) &&函數(shù)的值為E,中2.3常用函數(shù)2.3.3日期和時間處理函數(shù)系統(tǒng)日期和時間函數(shù)DATE()函數(shù)值為當前系統(tǒng)日期。TIME()函數(shù)值為表示當前系統(tǒng)時間的字符串,格式為24小時制的hh:mm:ss。DATETIME()函數(shù)值為當前系統(tǒng)日期時間。2.3常用函數(shù)2.3.3日期和時間處理函數(shù)年份、月份和日期號函數(shù)YEAR(
<日期表達式>|<日期時間表達式>)函數(shù)值為4位整數(shù),是<日期表達式>或<日期時間表達式>中的年份。MONTH(
<日期表達式>|<日期時間表達式>
)函數(shù)值為<日期型表達式>或<日期時間型表達式>中的月份。CMONTH(
<日期表達式>|<日期時間表達式>)函數(shù)值為<日期型表達式>或<日期時間型表達式>中月份的英文單詞。DAY(
<日期表達式>|<日期時間表達式>
)函數(shù)值為<日期表達式>或<日期時間表達式>中的日期號。2.3常用函數(shù)2.3.3日期和時間處理函數(shù)例題d={^2008-10-1}?year(d),month(d),cmonth(d),day(d)&&函數(shù)的值為2008,10,October,12.3常用函數(shù)2.3.3日期和時間處理函數(shù)求星期幾函數(shù)DOW(<日期表達式>|<日期時間表達式>
)函數(shù)值為1到7中的一個整數(shù),表示<日期表達式>或<日期時間表達式>是一星期中的第幾天。函數(shù)值1表示星期日,2表示星期一……7表示星期六。CDOW(
<日期表達式>|<日期時間表達式>)函數(shù)值為<日期表達式>或<日期時間表達式>是星期幾的英文單詞。2.3常用函數(shù)2.3.3日期和時間處理函數(shù)求星期幾函數(shù)WEEK(<日期表達式>|<日期時間表達式>)函數(shù)值為<日期表達式>或<日期時間表達式>是當年的第幾周。2.3常用函數(shù)2.3.3日期和時間處理函數(shù)例題d={^2008-10-1}?dow(d),cdow(d),week(d)&&函數(shù)的值為4,Wednesday,402.3常用函數(shù)2.3.3日期和時間處理函數(shù)小時、分鐘和秒鐘函數(shù)HOUR(
<日期時間表達式>
)函數(shù)值為<日期時間表達式>的小時部分,是以24小時制所表示的小時。MINUTE(
<日期時間表達式>)函數(shù)值為<日期時間表達式>中的分鐘部分。SEC(
<日期時間表達式>
)從日期時間中返函數(shù)值為<日期時間表達式>中的秒鐘部分。回秒數(shù)部分2.3常用函數(shù)2.3.3日期和時間處理函數(shù)例題t={^2008-10-17:30p}?hour(t),minute(t),sec(t)&&函數(shù)的值為19,30,02.3常用函數(shù)2.3.4數(shù)據(jù)類型轉(zhuǎn)換函數(shù)數(shù)值轉(zhuǎn)換成字符串STR(
<數(shù)值表達式>[,<長度>[,<小數(shù)位數(shù)>]])函數(shù)值為由<數(shù)值表達式>所轉(zhuǎn)換的字符串,轉(zhuǎn)換規(guī)則如下:設(shè)<數(shù)值表達式1>的整數(shù)部分位數(shù)加上小數(shù)點所占的1位,再加上小數(shù)位數(shù)的長度為L。①若指定<長度>大于L,則系統(tǒng)自動在字符串前面加上若干個空格,以滿足指定長度。
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年建筑供電系統(tǒng)中的電能質(zhì)量與節(jié)能
- 2026年土木工程施工過程中的質(zhì)量保證
- 2026春招:小學(xué)教師筆試題及答案
- 賀卡傳情的課件
- 貸款產(chǎn)品課件
- 醫(yī)院員工著裝規(guī)范與禮儀
- 婦產(chǎn)科分娩護理要點回顧
- 醫(yī)院醫(yī)療信息化項目管理禮儀
- 2026年安徽中澳科技職業(yè)學(xué)院單招綜合素質(zhì)筆試備考題庫帶答案解析
- 醫(yī)療信息化部門禮儀準則
- 堵漏施工方案報價
- 電線電纜使用說明書
- 幼兒園小班語言兒歌《大一歲了》課件
- 監(jiān)理歸檔資料培訓(xùn)課件
- 七年級數(shù)學(xué)工程問題單元試卷及答案
- 藥物不良事件課件
- 八年級語文上冊期末考點專題01 漢字書寫與書法鑒賞(原卷版)
- 兒科??平ㄔO(shè)與發(fā)展規(guī)劃指南
- 煤礦基本知識培訓(xùn)課件
- 回顧性研究設(shè)計及寫作要點
- T/CECS 10128-2021不銹鋼二次供水水箱
評論
0/150
提交評論