Visual FoxPro 基礎(chǔ)串講筆試考點(diǎn)_第1頁(yè)
Visual FoxPro 基礎(chǔ)串講筆試考點(diǎn)_第2頁(yè)
Visual FoxPro 基礎(chǔ)串講筆試考點(diǎn)_第3頁(yè)
Visual FoxPro 基礎(chǔ)串講筆試考點(diǎn)_第4頁(yè)
Visual FoxPro 基礎(chǔ)串講筆試考點(diǎn)_第5頁(yè)
已閱讀5頁(yè),還剩49頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第一章:VisualFoxPro基礎(chǔ)

一、VFP6.0的作用

VFP6.0關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)是新一代小型數(shù)據(jù)庫(kù)管理系統(tǒng)的杰出代表,它以強(qiáng)大的性能、完整而又

豐富的工具、較高的處理速度、友好的界面以及完備的兼容性,深受廣大用戶的喜愛(ài)。VFP是第一個(gè)全

面支持面向?qū)Τ绦蛟O(shè)計(jì)(OOP)的數(shù)據(jù)庫(kù)語(yǔ)言。

VFP6.0擁有的近500條命令,200余種標(biāo)準(zhǔn)函數(shù)。

二、計(jì)算機(jī)數(shù)據(jù)管理的發(fā)展

1、人工管理(20世紀(jì)50年代中期以前)

2、文件系統(tǒng)(20世紀(jì)50年代后期至60年代中期)

3、數(shù)據(jù)庫(kù)方式(20世紀(jì)60年代后期)

數(shù)據(jù)與程序分離、數(shù)據(jù)集中的管理、數(shù)據(jù)可被多個(gè)程序共享

4、分布式的數(shù)據(jù)庫(kù)系統(tǒng)(20世紀(jì)70年代)

數(shù)據(jù)庫(kù)與網(wǎng)絡(luò)技術(shù)的結(jié)合,可分為緊密結(jié)合型和松散結(jié)合型

5、面向?qū)ο蟮臄?shù)據(jù)庫(kù)系統(tǒng)(20世紀(jì)80年代后期)

面向?qū)ο蟮姆椒ㄅc數(shù)據(jù)庫(kù)的結(jié)合

1.1.2數(shù)據(jù)庫(kù)系統(tǒng)(DBS)

一、數(shù)據(jù)庫(kù)(DataBase)

DBS(DB)DBMS

存儲(chǔ)在計(jì)算機(jī)存儲(chǔ)設(shè)備上,結(jié)構(gòu)化的相關(guān)數(shù)據(jù)的集合。

1、數(shù)據(jù)的冗余度最小

2、資源共享性和數(shù)據(jù)獨(dú)立性

3、安全可靠,保密性能好

二、數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)(DBAS)

(DataBaseApplicationSystems)

指系統(tǒng)開發(fā)人員利用數(shù)據(jù)庫(kù)資源開的面向某一類實(shí)際應(yīng)用的應(yīng)用軟件系統(tǒng).

三、數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)

(DataBaseManagementSystem)

對(duì)數(shù)據(jù)庫(kù)進(jìn)行管理的系統(tǒng)軟件

四、數(shù)據(jù)庫(kù)系統(tǒng)(DBS)

引入了數(shù)據(jù)庫(kù)技術(shù)后的計(jì)算機(jī)系統(tǒng)。它實(shí)現(xiàn)了有組織地、動(dòng)態(tài)地存儲(chǔ)大量關(guān)聯(lián)數(shù)據(jù)及提供數(shù)據(jù)處理

及信息共享的手段。

1、組成

數(shù)據(jù)庫(kù)(DB)

數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)及相關(guān)軟件

數(shù)據(jù)庫(kù)管理員及用戶

硬件系統(tǒng)

DBS包括DB和DBMS

數(shù)據(jù)庫(kù)系統(tǒng)的核心是數(shù)據(jù)庫(kù)管理系統(tǒng)

1.1.3數(shù)據(jù)模型和二維表

通過(guò)計(jì)算機(jī)處理數(shù)據(jù),首先存在著把事物及事物間的聯(lián)系抽象為計(jì)算機(jī)所能接收的數(shù)據(jù)的一個(gè)過(guò)

程。

一:實(shí)體描述

1、實(shí)體

客觀存在并可以相互區(qū)別的事物

形式:

實(shí)際存在的事物.(例:職工,圖書)

抽象的事件.(例:職工的比賽活動(dòng),借閱圖書)

2、實(shí)體屬性

描述實(shí)體的特性稱為屬性

例:職工屬性(職工號(hào),姓名,性別,出生日期,職稱)

圖書屬性(總編號(hào),分類號(hào),書名,作者,單價(jià),出版社)

實(shí)體:屬性值的集合

實(shí)體型:屬性的集合

實(shí)體集:同類型實(shí)體的集合

VisualFoxPro中,表的字段對(duì)應(yīng)實(shí)體的屬性;表中的記錄對(duì)應(yīng)一個(gè)具體的實(shí)體;表對(duì)應(yīng)實(shí)體集;某個(gè)

記錄屬性的集合對(duì)應(yīng)實(shí)體型。

二、實(shí)體間聯(lián)系

1、聯(lián)系

實(shí)體與實(shí)體間的對(duì)應(yīng)關(guān)系,它反映現(xiàn)實(shí)世界事物之間的聯(lián)系。

三、數(shù)據(jù)模型

1、概念:DBMS中表示實(shí)體與實(shí)體間聯(lián)系的方法

2、數(shù)據(jù)模型的種類

層次模型:通過(guò)樹型結(jié)構(gòu)來(lái)反映實(shí)體與實(shí)體間聯(lián)系的方法,適宜于反映實(shí)體之間1:n的關(guān)系;

網(wǎng)狀模型:通過(guò)網(wǎng)狀結(jié)構(gòu)來(lái)反映實(shí)體與實(shí)體間聯(lián)系的方法,適宜于反映實(shí)體之間m:n的關(guān)系;

關(guān)系模型:

用二維表格的結(jié)構(gòu)形式來(lái)表示實(shí)體及實(shí)體間的聯(lián)系。

1.2關(guān)系數(shù)據(jù)庫(kù)

121關(guān)系模型

用二金表的形式表示實(shí)體及實(shí)體間的聯(lián)

系的數(shù)據(jù)模型稱關(guān)系數(shù)據(jù)模型。

一、關(guān)系術(shù)語(yǔ)

1、關(guān)系:一個(gè)關(guān)系就是一張二維表,每個(gè)關(guān)系有一個(gè)關(guān)系名。在VisualFoxPro中,一個(gè)

關(guān)系就是一個(gè)表文件。

2、屬性:二維表中垂直方向的列稱為屬性,

在VisualFoxPro中叫字段。

3、域:屬性的取值范圍。

4、元組:二維表中水平方向的行稱為元組,

在VisualFoxPro中叫記錄。

5、關(guān)鍵字:屬性或?qū)傩缘慕M合,其值能唯一標(biāo)識(shí)一個(gè)元組,分主關(guān)鍵字和候選關(guān)鍵字.

6、外部關(guān)鍵字:如果一個(gè)字段不是本表的主字或候選關(guān)鍵字,而是另外一個(gè)表的主關(guān)字或候選關(guān)鍵字,

則此字段(屬性)為外部關(guān)鍵字。

總結(jié).

1、關(guān)系是元組(或?qū)嶓w)的集合,對(duì)應(yīng)VFP中的表。

2、關(guān)系模式:實(shí)體屬性的集合,對(duì)應(yīng)表記錄的屬性。

3、元組:屬性值的集合,對(duì)應(yīng)VFP中的記錄。

4、關(guān)系模型:若干個(gè)相互聯(lián)系的關(guān)系模式的集合,在VFP中對(duì)應(yīng)數(shù)據(jù)庫(kù)。

1.2.2關(guān)系運(yùn)算

一、傳統(tǒng)的集合運(yùn)算

1、并:指由屬于兩個(gè)關(guān)系R,S元組組成的集合。

2、差:指屬于關(guān)系R但不屬于關(guān)系S的元組組成的集合,

即差運(yùn)算的結(jié)果是從R中去掉S中也有的元組。

3、交:由即屬于關(guān)系R又屬于關(guān)系S的元組組成的集合,即交運(yùn)算的結(jié)果是R和S的共同元組。

注:以上運(yùn)算均要求兩個(gè)關(guān)系R,S必須具有相同的實(shí)型體,即屬性集合要相同。

二、專門的關(guān)系運(yùn)算

關(guān)系運(yùn)算的操作對(duì)象是關(guān)系,運(yùn)算的結(jié)果仍為關(guān)系。

1、選擇

從關(guān)系中找出滿足給定條件的元組組成新的關(guān)系。

也就是說(shuō),選擇運(yùn)算是在二維表中選擇滿足指定條件的行。

例:在Student(學(xué)生基本情況)表中,若要找出所有女學(xué)生的元組,

就可以使用選擇運(yùn)算來(lái)實(shí)現(xiàn),條件是:Sex="女

2、投影

從在關(guān)系中指定若干個(gè)屬性組成新的關(guān)系。

投影是從列的角度進(jìn)行運(yùn)算,相當(dāng)于對(duì)關(guān)系進(jìn)行垂直運(yùn)算。

3、聯(lián)接

聯(lián)接運(yùn)算是將兩個(gè)關(guān)系模式拼接成一個(gè)更寬的關(guān)系模式,生成的新關(guān)系中滿足聯(lián)接條件的所有元組。(聯(lián)

接是關(guān)系的橫向結(jié)合)

聯(lián)接過(guò)程通過(guò)聯(lián)接條件來(lái)控制,聯(lián)接條件中將出現(xiàn)兩個(gè)表中的公共屬性名。

自然聯(lián)接

第二章:表的創(chuàng)建及常用命

VisualFoxPro6.0是一個(gè)32位數(shù)據(jù)庫(kù)開發(fā)系統(tǒng)

一、表的創(chuàng)建

表的組成:表由表結(jié)構(gòu)和表中數(shù)據(jù)組成

建立數(shù)據(jù)庫(kù)表(.dbf)即表結(jié)構(gòu)的四種方法:

(1)、通過(guò)項(xiàng)目管理器

(2)、通過(guò)“新建”菜單

(3)、通過(guò)數(shù)據(jù)庫(kù)設(shè)計(jì)器

(4)、通過(guò)命令方式

Create[TabieName]

eg:create學(xué)生表.dbf

eg:ceratexs.dbf

1、Null

在表設(shè)計(jì)器中,Null用于表示字段值是否允許為空,Null在此表示的是缺值或無(wú)確定的值,即中

數(shù)據(jù)庫(kù)中尚未存儲(chǔ)數(shù)據(jù)的字段,它與空字符串,數(shù)值0等含義不同。

二、修改表結(jié)構(gòu),啟用表單設(shè)計(jì)器

modifystructure

三、給當(dāng)前表追加新記錄

append命令或ctrl+y

命令格式

Append[Blank]

功能:該命令用于向當(dāng)前表末尾添加空記錄或以交互式填寫記錄。

命令說(shuō)明

(1)、Blank子句用于在表尾添中空記錄,若省略Blank參數(shù),則進(jìn)入記錄編輯對(duì)話框以交互式輸入記

錄。

(2)、若添加的是空記錄,要向表中輸入數(shù)據(jù),則還需用Edit,Change或Browse等命令來(lái)實(shí)現(xiàn)。

eg:use學(xué)生表

append

****四、補(bǔ)充四個(gè)標(biāo)識(shí)符

(1)、Bof(文件頭):BeginningOfFile具體的位置是最上面那一條記錄的上面。

(2)、Top(頂端):最上面的那條記錄,并不等同于1號(hào)記錄。

(3)、Eof(文件尾):EndOfFile最下面的那條記錄的下面。

(4)、Bottom最下面那條記錄,不一定是記錄號(hào)最大的記錄。

網(wǎng)學(xué)生表口回區(qū)I

BOF?姓名性別1大學(xué)英語(yǔ)1計(jì)算機(jī)1高數(shù)1

TOP?1001張三男80.508010

1002王小丫女60.0010080

1003李四女25.005060

1004張三豐男98.005010

BOTTOM—?1005王五丁80.009013

?

EOFy

五、三個(gè)常用函數(shù)

(1)、RecnoO測(cè)試當(dāng)前記錄的記錄號(hào),結(jié)果為N型。

(2)、Bof()測(cè)試當(dāng)前記錄指針是否指向BOF,結(jié)果為L(zhǎng)型。

(3)、Eof()測(cè)試當(dāng)前記錄指針是否指向EOF,結(jié)果為L(zhǎng)型。

六、go(或got。)指針的絕對(duì)定位。

eg:goN/Top/BottomoN是代表記錄號(hào)。

七、skip

?skip]

功能:以當(dāng)前記錄作為參考點(diǎn),向下或向上移動(dòng)指針。其中N是代表移動(dòng)的記錄數(shù)。

八:displaylist

格式:display[范圍]for表達(dá)式,如果沒(méi)的for表達(dá)式,表示范圍為顯示當(dāng)前記錄。

補(bǔ)充:VFP中的四個(gè)范圍

(1)All表示全部記錄,All與當(dāng)前的記錄無(wú)關(guān)。

(2)NextN

N代表的記錄數(shù),

表示從當(dāng)前記錄開始往下數(shù),總共有N條記錄,包括當(dāng)前記錄。

如:use學(xué)生表

go3

display

displayall

go2

displaynext2

(3)RecordN表示記錄為N那條記錄。與當(dāng)前記錄無(wú)關(guān)。

如:go2

displayrecord3注:顯示3號(hào)記錄

(4)Rest表示從當(dāng)前記錄開始,

往下到最后一條記錄,包括當(dāng)前記錄。

如:go2

displayrest(顯示的是:2、3、4條記錄)

八、list

格式:list[范圍]for表達(dá)式

功能:顯示記錄所有記錄

如:usexs

go2

list

?recno()2

九、使用Browse命令瀏覽記錄

命令格式

Browse

命令功能

該命令用于打開瀏覽窗口以瀏覽表中的記錄。

【例】假設(shè)已建立一個(gè)Student表,則要瀏覽Student表中的內(nèi)容,可采用如下命令:

UseStudent

Browse

十、insert命令

格式:Blank[Before][Blank]

功能:在表的任意位置插入一條記錄

說(shuō)明:

(1)、Before子句用于在當(dāng)前記錄前插入新記錄,缺省則在當(dāng)前記錄之后插入新記錄.

(2)、Blank子句用于插入空記錄,若缺省則出現(xiàn)記錄編輯對(duì)話框

(3)、若添加的是空記錄,則要向表中輸入數(shù)據(jù),還需用Edit,Change或Browse等命令來(lái)實(shí)現(xiàn)。

VFP中記錄的刪除要經(jīng)歷兩步:

(1)邏輯刪除,即先在要?jiǎng)h除的記錄上加刪除標(biāo)記;

(2)物理刪除,即用Pack命令將帶有刪除標(biāo)記的所有記錄從表中物理刪除。

VFP提供了三種刪除記錄的命令:

Delete(邏輯刪除即置刪除標(biāo)記)。

Pack(物理刪除)命令以及Zap(全部刪除)命令。另外,VFP也提供了對(duì)已標(biāo)記刪除標(biāo)記的記錄進(jìn)

行恢復(fù)的Recall命令。

H一、置刪除標(biāo)記Delete命令

邏輯刪除指在滿足條件的記錄上打上刪除標(biāo)記"*",并不真正將其從表中刪除。

格式:Delete[For1Expressionl]pack

功能:對(duì)當(dāng)前表上滿足條件的所有記錄加上刪除標(biāo)記"*

說(shuō)明:

For子句用于將滿足條件的所有記錄加上刪除標(biāo)圮,若缺省,則在當(dāng)前記錄置刪除標(biāo)記。

【例】若要邏輯刪除Student表中的第3條記錄,那么可以使用如下命令:

UseStudent

Go3

Delete

【例】若要邏輯刪除Student表中的所有的男生記錄,那么可以使用如下命令:

Use學(xué)生表

DeleteFor性別=“男”

十二、恢復(fù)記錄Recall命令

格式:Recall[ForlExpressionl]

功能:用于對(duì)已做了刪除標(biāo)記的記錄進(jìn)行恢復(fù)操作,即撤消記錄上的刪除標(biāo)記“

說(shuō)明:

For子句用于恢復(fù)所有滿足條件的記錄,若缺省則只恢復(fù)當(dāng)前記錄。若當(dāng)前記錄上無(wú)刪除標(biāo)記,則

什么都不做。

例:恢復(fù)當(dāng)前表中已經(jīng)刪除的女生記錄

RecallFor性別="女”

十三、物理刪除所有帶有刪除標(biāo)記的記錄Pack命令

格式:Pack

功能:對(duì)當(dāng)前表中所有已做了刪除標(biāo)記的記錄進(jìn)行物理刪除操作。

十四、物理刪除表中的所有記錄Zap命令

格式:Zap

功能:物理刪除當(dāng)前表中所有記錄,不管是否帶有刪除標(biāo)記。

說(shuō)明:

(1)、該命令只刪除表中的記錄,并不刪除表的結(jié)構(gòu)。

(2)、該命令等同于Delete和Pack兩條命令的組合。

(3)、該命令刪除時(shí)全部刪除,而不管記錄上是否帶有刪除標(biāo)記。

十五、Copyto

格式:Copy[范圍]To新表名For表達(dá)式Fields字段名列表。

功能:將當(dāng)前表中指定范圍內(nèi)滿足For表達(dá)式的記錄復(fù)制生成新的表文件。其中新的表文件所包含的

字段由Fields后面的字段列表決定。

例如:

Usexs

Copytoj:\student.dbf

Copytoj:\student.dbffields學(xué)號(hào),姓名

Usexs

Go2

DeleteNext2

Copytoj:\xsl.dbffordelete()

十六、Copystructureto

格式:Copystructureto表文件fields字段名表

功能:將當(dāng)前表的結(jié)構(gòu)復(fù)制生成新的表文件,生成的表是一個(gè)空表。

例如:

usexs

list

copystructuretonew.dbf

usenew

liststructure

modifystructure

注:第十五和十六條命令的to后面必須是一個(gè)新的文件或是一個(gè)處于關(guān)閉狀態(tài)下的表文件,如果是一

個(gè)處于打開的狀態(tài)下的表文件,則系統(tǒng)將會(huì)出現(xiàn)”文件正在使用“

closeall

十七、copystructureto結(jié)構(gòu)描術(shù)文件extended

功能:將當(dāng)前表文件的結(jié)構(gòu)生成一個(gè)結(jié)構(gòu)描術(shù)文件。結(jié)構(gòu)描術(shù)文件也是一個(gè)表文件,只是它的結(jié)構(gòu)是由

VFP自動(dòng)設(shè)置的。

例如:

usexs

copystructuretonewlextended

usenewl

liststructure

*十八、AppendFrom

格式:AppendFrom表文件for表達(dá)式

或AppendFromarray數(shù)組名for表達(dá)式

功能:將另一個(gè)表中滿足for表達(dá)式的記錄追加到當(dāng)前表中,或者將一個(gè)數(shù)組中滿足for表達(dá)式的數(shù)

據(jù)添加到當(dāng)前表。

例如

1、先打開表

useaa

2、使用appendfrom

Appendfromxs.dbf

則將xs.dbf中所有的記錄添加到aa.dbf的后面。

十九、Clear清屏作用

第三章:VFP基礎(chǔ)知識(shí)

3.1常量和變量

據(jù)計(jì)算機(jī)處理數(shù)據(jù)的形式來(lái)劃分,VFP除表中的數(shù)據(jù)外,還有常量,變量,表達(dá)式,函數(shù)四種

形式的數(shù)據(jù),而對(duì)于每一種數(shù)據(jù)來(lái)說(shuō),都有一定的類型,數(shù)據(jù)類型決定了數(shù)據(jù)的存儲(chǔ)方式和運(yùn)算方

式。

對(duì)一個(gè)表中的數(shù)據(jù),其類型是在定義表的結(jié)構(gòu)時(shí)定義的。常見的數(shù)據(jù)類型有:

1、字符型2、數(shù)值型3、貨幣型

4、日期型5、日期時(shí)間型6、邏輯型(L)

3.1.1常量

1、常量:指程序運(yùn)行期間其值不變的量,其類型主要有以下六種:

(1)字符型常量:

用定界符(單引號(hào)',、雙引號(hào)”“和方括號(hào)[])括起來(lái)的字符串。

(示例:"ade”<568,[book]“<book,的中文意思是,書,?!?

注意:

定界符不作為字符型常量本身,但它規(guī)定了常量的類型以及常量的起始與終止界限

字符型常量的定界符必須成對(duì)匹配(例:"myname,,[bcde”兩個(gè)表示均錯(cuò)]

若某種定界符也是字符串本身的內(nèi)容,則需要用另一種定界符作為該字符串的定界符.(例:

“'abed",[“abc[ned]”])

不包含任何字符的字符串(”“)叫空串,它與包含空格的字符串(”“)不同

(2)數(shù)值型常量:用來(lái)表示一個(gè)數(shù)量的大小

構(gòu)成:由數(shù)字,負(fù)號(hào),小數(shù)點(diǎn)構(gòu)成.

表示形式:一般:538,-10.5

科學(xué)記數(shù)法:56E-12,34E4,-1.05E+20

(3)貨幣型常量:用來(lái)表示貨幣值,書寫時(shí)應(yīng)加前導(dǎo)符"$"

注:貨幣型常量無(wú)科學(xué)記數(shù)表示法,其處理和運(yùn)算時(shí)采用4位小數(shù),如果一個(gè)貨幣型常量多于4位小數(shù),

則系統(tǒng)會(huì)自動(dòng)將多余的小數(shù)四舍五入。

例:$123.45678將存儲(chǔ)為$123.4568(超過(guò)4位自動(dòng)四舍五入)

例:S332E12(錯(cuò)誤)$435(正確)

(4)日期型常量:表示一個(gè)確切的日期,

「花括號(hào)作為}定界符,分隔符為斜杠(/),連字符(-)或空格中任一種,默認(rèn)為斜杠(/)。12-22-1980

影響日期格式的命令:

(l)SETMARKTO[日期分隔符]

功能:設(shè)置日期的分隔符

分隔符可設(shè)置為“/“,“,缺省時(shí)系統(tǒng)統(tǒng)默認(rèn)為斜杠

(2)SETDATE[TO]AMERICAN|ANSI|YMD等

功能:設(shè)置日期的的顯示格式,默認(rèn)為美國(guó)格式

(3)SETCENTURYON/OFF

功能:設(shè)置日期型數(shù)據(jù)顯示時(shí)年份以2位還是以4位顯示。

(4)SETSTRICTDATETO[0/1/2]

功能:用設(shè)置是否對(duì)日期格式進(jìn)行檢查

0表示不進(jìn)行嚴(yán)格日期格式檢查,與早期FoxPro兼容

1表示進(jìn)行嚴(yán)格日期格式檢查,系統(tǒng)默認(rèn)

2表示進(jìn)行嚴(yán)格日期格式檢查,且對(duì)CTOD()和CDOT()函數(shù)也有效。

(5)邏輯型常量:只有邏輯真或邏輯假兩個(gè)值,用句點(diǎn)(??)來(lái)作定界符

邏輯真的表示形式有:.「,.t.,.Y.,.y.

邏輯假的表示形式有:.F.,.f.,.N.,.n.

(示例:.t..T..f..F..Y..N..y..n.)

注:邏輯型常量的定界符不能省略

3.1.2變量

變量:在使用過(guò)程中其值可以改變的量。分為字段變量、內(nèi)存變量?jī)纱箢?/p>

1、字段變量

2、內(nèi)存變量

(1)、內(nèi)存變量:它是內(nèi)存中的一個(gè)區(qū)域,其值就是存儲(chǔ)于該區(qū)域里的數(shù)據(jù),它常用來(lái)存儲(chǔ)常數(shù)、中間

結(jié)果或最終結(jié)果。

(2)、內(nèi)存變量的類型包括:

字符型(C),貨幣型(Y),

日期型(D),日期時(shí)間型(T),

數(shù)據(jù)型(N),邏輯型(L)六種.

(3)、當(dāng)內(nèi)存變量名與字段變量名同名時(shí),字段名優(yōu)先于內(nèi)存變量名,若確實(shí)要使用內(nèi)存變量,則可在

其前加上”乂->或(M.)”以示訪問(wèn)的是內(nèi)存變量,而非字段變量。

3.1.3內(nèi)存變量常用命令

一、內(nèi)存變量的賦值

格式1:

STORE(表達(dá)式)T0

store〈變量名列表或數(shù)組名列表》

功能:將表達(dá)式的值賦給一個(gè)或多個(gè)內(nèi)存變量.

格式2:

內(nèi)存變量名*表達(dá)式>

格式2只能給一個(gè)變量賦值,而格式1可給多個(gè)內(nèi)存變量或數(shù)組賦值。

【例如】

store3*4toal,a2,a3,a4,a5則al,a2值均為12

【例如】

bl=3將bl賦值3;

b2=bl+2將bl加2后的值賦給b2,此時(shí)b2等于5;

b2=b2+3將b2加3后的值再賦給b2,此時(shí)b2等于8。

說(shuō)明:

一個(gè)變量的值可以不斷變化,最終結(jié)果是它最后一次的賦值,在此,”="不是等于運(yùn)算符,而賦值運(yùn)算

符。

2、表達(dá)式值的顯示

?

??

3、顯示內(nèi)存變量

格式:

LIST/DISPLAYMEMORY[LIKE〈通配符>][TOPRINTER/TOFILE<文件名>]

說(shuō)明:

◎通配符指"?“和“

?:表示任意的一個(gè)字符。

*:表示任意多個(gè)字符。

like短語(yǔ)用于顯示與通配符匹配的內(nèi)存變量

list和display區(qū)別為:

4、釋放內(nèi)存變量

格式1:RELEASE〈內(nèi)存變量名表》

格式2:RELEASEALL[LIKE〈通配符>/EXCEPT〈通配符》]

格式3:RELEASEALL[EXTEND]

格式4:CLEARMEMORY

說(shuō)明:

(1)、格式1用釋放指定的內(nèi)存變量。

(2)、格式2:選用LIKE短語(yǔ)用于清除與通配符本匹配的內(nèi)存變量,若選用EXCEPT短語(yǔ),用于清除與

通配符不相匹配的變量。

(3)、格式3用于清除所有內(nèi)存變量。

(4)、格式4用于在關(guān)閉所有文件的同時(shí)清除所有的內(nèi)存變量。

示例:RELEASEALL

RELEASEX,Y,Z

RELEASEALLLIKEA*

二、數(shù)組

2、數(shù)組的定義

命令格式:

Dimensiondeclare〈數(shù)組名1>(<下標(biāo)上限1>[,<下標(biāo)上限2>])

說(shuō)明

(1)〈下標(biāo)上限》為數(shù)組下標(biāo),對(duì)一維數(shù)組來(lái)說(shuō),指的是數(shù)組元素的個(gè)數(shù);對(duì)二維數(shù)組來(lái)說(shuō),指的是數(shù)組

的最大行號(hào)和最大列號(hào)。

(2)數(shù)組的下標(biāo)允許使用圓括號(hào)或方括號(hào)括起來(lái)。

(3)在同一個(gè)數(shù)組中,不同的數(shù)組元素?cái)?shù)據(jù)類型可以不同。

(4)數(shù)組一旦被定義之后,

該數(shù)組的每個(gè)元素的初值為邏輯假值,

即.F.,可以使用有關(guān)的命令給數(shù)組元素賦值。

(5)數(shù)組應(yīng)先定義,再使用,這與普通的內(nèi)存變量不一樣。

例如:Dimensionaa(3),C[2,3]

二維數(shù)組舉例:

DIMENSIONA(2,3)

A(l,1)=1A(l,2)=2A(l,3)=3

A(2,1)=4A(2,2)=5A(2,3)=6

123

456

?a(l,1)

二維數(shù)組元素的存放:按行存放

例如:給二維數(shù)組X和一維數(shù)組Y進(jìn)行賦值。

DIMENSIONX(3,4),Y(3)

STORE5TOX

Y(1)=325

Y(2)="ABC”

Y(3)=.T.

5、表中數(shù)據(jù)與數(shù)組數(shù)據(jù)之間的交換

(1)、表中的數(shù)據(jù)傳送到數(shù)組的語(yǔ)句

格式1:

SCATTERTO〈數(shù)組名〉

例:DIMEA(9)

USE學(xué)生表.dbf

SCATTOA

?A(l),A(2),A(3)

(2)數(shù)組中的數(shù)據(jù)復(fù)制到表的的當(dāng)前記錄

格式1:

GATHERFROM〈數(shù)組名>[FIELDS〈字段名表>][MEMO]

格式2:

格式1:將數(shù)組中的數(shù)據(jù)作為一個(gè)記錄復(fù)制到表的當(dāng)前記錄中,從第一個(gè)數(shù)組元素開始,依次向指定的

字段填寫數(shù)據(jù)。

例dimeA(3)

STORE“0”TOA

USE學(xué)生表

GATHFROMA

3.2表達(dá)式

1、表達(dá)式是指用運(yùn)算符將常量、變量、字段或函數(shù)連接起來(lái)的有意義的式子。

2、表達(dá)式值:表達(dá)式最終計(jì)算結(jié)果

3、表達(dá)式的類型:由表達(dá)式值的數(shù)據(jù)類型決定,主要有:數(shù)值型、字符型、日期型、關(guān)系型、邏輯型

等。

3.2.1數(shù)值、字符與日期時(shí)間表達(dá)式

1、數(shù)值表達(dá)式

數(shù)值表達(dá)式是由算術(shù)運(yùn)算符將常量、變量、字段或函數(shù)連接起來(lái)的式子,其結(jié)果仍為數(shù)值型數(shù)據(jù)。

(1)、數(shù)值運(yùn)算符:圓括號(hào)()、乘方(**或,)、乘(*)、除(/)、取余(%)、加(+)、減(-)?

(2)、數(shù)值表達(dá)式:由數(shù)值運(yùn)算符將數(shù)值型常量、變量、函數(shù)等連接起來(lái)的式子,其結(jié)果為數(shù)值型。

(3)、運(yùn)算符的優(yōu)先順序:括號(hào)、乘方、乘除與取模、加減。

例:取余運(yùn)算符閭的應(yīng)用。?10%3?-10%3

2、字符表達(dá)式

字符表達(dá)式是由字符運(yùn)算符將常量、變量、字段或函數(shù)連接起來(lái)的式子,其結(jié)果仍為字符型數(shù)據(jù)。

在字符運(yùn)算符兩邊的數(shù)據(jù)必須是字符型數(shù)據(jù)。

(1)字符串運(yùn)算符:+、-、字符串包含運(yùn)算符($)和精確比較運(yùn)算符仁=)o

說(shuō)明:

+:兩個(gè)字符串首尾連接形成新字符串;

-:當(dāng)?shù)谝粋€(gè)字符串的尾部有空格時(shí),

將第一個(gè)字符串尾部的空格移到第二個(gè)字符串的尾部,然后,再將兩個(gè)字符串連接起來(lái)。

【例】?"ABC"+”DEF”="ABCDEF”

?“ABC“DEF”="ABCDEF”

包含運(yùn)算符$:檢測(cè)左邊的字符串是否被包含在右邊的字符串中。

如果包含,返回邏輯真值(」.),否則返回邏輯假值(.F.)。

精確比較運(yùn)算符==:只有當(dāng)兩邊的字符串完全相等時(shí),才返回邏輯真值(.「),反之假(.F.)。

(2)字符表達(dá)式:由字符串運(yùn)算符將字符型常量、變量、函數(shù)等連接起來(lái)的式子。

例:?”abc"+"bed"結(jié)果為“abcbed”

?”abcbed"結(jié)果為"abcbed'

?"book"$"bookstore"結(jié)果為(.T.)

?“the”$"this”結(jié)果為(.F.)

?“that”=="that”結(jié)果為(?「)

?”that“=="that”結(jié)果為(.F.)

3、日期時(shí)間表達(dá)式

(1)日期型運(yùn)算符:(+)、(-)

例如

?{04/03/99,12:30:20}+20結(jié)果為:{04/23/99,12:30:40)

?{04/03/99,12:30:20}-20結(jié)果為:{03/14/99,12:30:00)

?{03/03/99,12:30:20}-{03/3/99,11:30:20}結(jié)果為3600

例如:已知某個(gè)人的出生日期為1979年7月20日,計(jì)算其現(xiàn)在年齡為多少?

(「2008/1/17}-「1979/7/20})/365

注意:

(1)兩個(gè)日期及日期時(shí)間型數(shù)據(jù)的相加是無(wú)意義的。

(2)+和-既可作為日期運(yùn)算符,也可作算術(shù)和字符串運(yùn)算符,而使用時(shí)具體做何種運(yùn)算符受其所連接運(yùn)

算對(duì)象決定。

3.2.2關(guān)系表達(dá)式

(1)關(guān)系運(yùn)算符:小于(<)、大于(>)、等于(=)、不等于(<>、#或!=)、小于等于(<=)、大于等于(>=)。

(2)關(guān)系表達(dá)式:由關(guān)系運(yùn)算符、數(shù)值表達(dá)式、字符表達(dá)式或日期表達(dá)式組合而成的式子,返回結(jié)果為

邏輯型數(shù)據(jù)。

(3)關(guān)系運(yùn)算符的兩邊,可以是字符表達(dá)式、數(shù)值表達(dá)式或者日期表達(dá)式,但兩邊的數(shù)據(jù)類型必須一致

才能進(jìn)行比較。

(4)=與==不完全相同。前者稱為普通比較,后者稱為精確比較。

當(dāng)環(huán)境設(shè)定為SETEXACTON時(shí),二者有一定區(qū)別;當(dāng)環(huán)境設(shè)定為SETEXACTOFF時(shí),結(jié)果是不同的。

比較時(shí),使用右字符串去比較左字符串。當(dāng)右字符串比較完,則比較結(jié)束。如果此時(shí)的比較結(jié)果相同,

則=比較的值為.「,而不管左字符串是否結(jié)束;相反,==則要求左右必須完全一致,結(jié)果才為.T.。

【例】?”abede”=“abc”

當(dāng)設(shè)置了SETEXACTOFF時(shí),上述關(guān)系表達(dá)式結(jié)果為.T.

當(dāng)設(shè)置了SETEXACTON時(shí),上述關(guān)系表達(dá)式結(jié)果為.F.

(5)比較大小時(shí),

日期早的日期型數(shù)據(jù)小于日期晚的日期型數(shù)據(jù);

越早的越小,越晚的越大

如:{*2000-06-11}>{*2008-12-15}

(6)字符型數(shù)據(jù)比較時(shí)從左到右逐個(gè)比較,當(dāng)某個(gè)字符不一樣時(shí),則兩個(gè)不同字符的大小決定兩個(gè)字符

串的大小,字符的大小受命令設(shè)置影響.

例:?"abc”>“ab”結(jié)果為(.T.)

(7)字符串包含運(yùn)算符"$”用于比較左字符串是否存在于右字符串中,如果存在,則為.T.,反之為.F.。

(8)比較貨幣或數(shù)值時(shí),按數(shù)值及貨幣的大小比較

例:?$564>$234結(jié)果為(.T.)

例:?“王”$"王紅”結(jié)果為.T.

1、字符排序次序的設(shè)置

當(dāng)比兩個(gè)字符串時(shí),系統(tǒng)對(duì)兩個(gè)字符串的字符自左向右逐個(gè)進(jìn)行比較,一旦發(fā)現(xiàn)兩個(gè)對(duì)應(yīng)的字符不

同,則根據(jù)這兩個(gè)字符的排列次序決定兩個(gè)字符串的大小,其字符的排列次序(即字符的大?。┦茉O(shè)置命

令的影響,其命令設(shè)置方法:

(1)在“工具”菜單下選擇"選項(xiàng)“,打開”選項(xiàng)對(duì)話框,選擇其中的”數(shù)據(jù)選項(xiàng)卡,再選擇右上方的”

排列序列''下列框中選擇"Machine(機(jī)器)","PinYin(拼音)”,或者"Stroke(筆畫)”

(2)命令設(shè)置方式

命令:SETCOLLATETO“〈排序次序名>“

次序名可以是:"Machine","PinYin”,或"Stroke”

(3)字符的排列次序

Machine(機(jī)器)次序:西文字符按照ASCII碼值排列,空格在最前面,大寫ABCD字母序列在小寫abed

字母序列的前面,因此大寫字母小于小寫字母;對(duì)于漢字,據(jù)它們的拼音順序決定其大小,其拼音第一

個(gè)字母在后的值大.

例:?"計(jì)算機(jī)”>“電腦”結(jié)果為(.T.)

?"a”<“A”結(jié)果為(.F.)

PinYin(拼音)次序:按照拼音次序排序,對(duì)于西文字符,空格在最前面,小寫abed字母序列在前,大

寫ABCD字母序列在后,即大寫字母大于小寫字母。

Stroke(筆畫)次序:中文按照書寫筆畫的多少排序;對(duì)于西文與拼音方式相同。

3.2.3邏輯表達(dá)式

邏輯表達(dá)式是由邏輯運(yùn)算符將關(guān)系表達(dá)式連接起來(lái)的表達(dá)式,結(jié)果為邏輯真和邏輯假。

邏輯運(yùn)算符有:.NOT(非).、.AND(與).和.OR(或)…

優(yōu)先級(jí)別:.NOT.、.AND.、.OR.。

運(yùn)算規(guī)則為:

注意點(diǎn)總結(jié):

And邏輯與遇假則假

Or邏輯或遇真則真

not或!邏輯非真假互換

【例】已知某28歲女職工工資為600元

?NOT.(性別=“女”)結(jié)果為.F.

?性別="女”.AND.年齡>=28結(jié)果為.T.

?性別="男”.AND.年齡>=28結(jié)果為.F.

?性別=“女”.OR.年齡<28結(jié)果為.T.

3.2.4運(yùn)算符的優(yōu)先級(jí)

同一類運(yùn)算符可同時(shí)出現(xiàn)在一個(gè)表達(dá)式中,其運(yùn)算具有優(yōu)先級(jí),而對(duì)不同類型的運(yùn)算符也有可能出

現(xiàn)于同一表達(dá)式,此時(shí)也要據(jù)它們的優(yōu)先級(jí)順序來(lái)決定表達(dá)式的運(yùn)算順序.

不同類型運(yùn)算符在同一表達(dá)式中的運(yùn)算符優(yōu)先級(jí)順序?yàn)椋?/p>

1、算術(shù)運(yùn)算符:(),**或八,*/%,+-

2、字符串運(yùn)算符和日期時(shí)間運(yùn)算符:+-

3、關(guān)系運(yùn)算符

4、邏輯運(yùn)算符:NOT,AND,OR

例:12>2.AND.,人,<,人民,.OR..T.<.F.

先判數(shù)12>2,再判斷‘人'<'人民',再運(yùn)算AND,之后再運(yùn)算.T.<.F.,最后運(yùn)算0R.

例:((10%3)AND(15%2=0))OR,電腦,!=,計(jì)算機(jī),

3.3常用函數(shù)

函數(shù)是用程序來(lái)實(shí)現(xiàn)的一種數(shù)據(jù)運(yùn)算或轉(zhuǎn)換,每一個(gè)函數(shù)都有特定的數(shù)據(jù)運(yùn)算或轉(zhuǎn)換功能,它往往

需要若干個(gè)自變量,即運(yùn)算對(duì)象或參數(shù),但函數(shù)只能有一個(gè)返回值,稱為函數(shù)值或返回值,函數(shù)值的類

型決定了函數(shù)的類型,其常見類型有:

函數(shù)的格式:函數(shù)名(參數(shù)1,參數(shù)2)

3.3.1數(shù)值型函數(shù)

(IX絕對(duì)值函數(shù)

格式:ABS(〈數(shù)值表達(dá)式〉)

功能:返回?cái)?shù)值表達(dá)式的絕對(duì)值。

【例】?ABS(-12.34)結(jié)果為12.34

(2)、最大值函數(shù)

格式:MAX(〈數(shù)值表達(dá)式1>,<數(shù)值表達(dá)式2>)

功能:計(jì)算各數(shù)值表達(dá)式的值并返回最大值。

【例】?MAX(5*4,60/2)結(jié)果為30

(3)、最小值函數(shù)

格式:MIN(〈數(shù)值表達(dá)式1>,(數(shù)值表達(dá)式2>)

功能:計(jì)算數(shù)值表達(dá)式的值,返回最小值。

(4)、平方根函數(shù)

格式:SQRT(〈數(shù)值表達(dá)式〉)255

功能:計(jì)算數(shù)值表達(dá)式的平方根。

注:其自變量表達(dá)式不能為負(fù)

【例】?SQRT(25*4)結(jié)果為10

?-SQRT(ABS(zz))

(5)、取整函數(shù)

格式:INT(〈數(shù)值表達(dá)式》)

CEILING(〈數(shù)值表達(dá)式》)

FLOOR(〈數(shù)值表達(dá)式》)

功能:

INTO返回?cái)?shù)值表達(dá)式的整數(shù)部分.

【例】?INT(-4.68)結(jié)果為-4

****(6)四舍五入函數(shù)

格式:ROUND(〈數(shù)值表達(dá)式),〈保留小數(shù)位數(shù)》)

功能:返回指定數(shù)值表達(dá)式指定位置后的結(jié)果。

說(shuō)明:如果保留小數(shù)位數(shù)為正數(shù)n,

則對(duì)小數(shù)位進(jìn)行四舍五入,

如果保留小數(shù)位數(shù)為負(fù)數(shù)n,

則對(duì)整數(shù)位進(jìn)行四舍五入.

第0位指整數(shù)部分的第一位數(shù)即個(gè)位

【例】?ROUND(123.34567,3)結(jié)果為123.346

?ROUND(753.34567,-3)結(jié)果為1000

(7)圓周率函數(shù)

格式:PI()

功能:返回圓周率(數(shù)值型),無(wú)自變量

(8)求余函數(shù)(與%等同)

格式:MOD(〈數(shù)值表達(dá)式1>,<數(shù)值表達(dá)式2>)

功能:

返回兩個(gè)數(shù)相除后的余數(shù).3%5

〈數(shù)值表達(dá)式1》為被除數(shù),

〈數(shù)值表達(dá)式2>為除數(shù),

余數(shù)的符號(hào)與被除數(shù)相同,

如果被除數(shù)與除數(shù)同號(hào),

則函數(shù)值即為兩數(shù)相除的余數(shù);

若被除數(shù)與除數(shù)異號(hào),

則函數(shù)值為兩數(shù)相除的余數(shù)再加上除數(shù)的值.

例:

?MOD(1O,3),MOD(10,-3),MOD(-10,3),MOD(-10,-3)

則結(jié)果為:1-22-1

注:首先將除數(shù)和被除數(shù)的符號(hào)忽略進(jìn)行求余運(yùn)算,得到X=L

再將X的符號(hào)定為被除數(shù)的符號(hào),得到Y(jié)=T。

由于除數(shù)和被除數(shù)是異號(hào),所以結(jié)果是:Y+除數(shù)=-1+3=2。

mod(15,-4)=-l3+(-4)15-12=3+(-4)=-1

mod(-15,4)=1-3+4-15+12=-3+4=l

1、滿足MOD(X,2)=0這個(gè)表達(dá)式時(shí),說(shuō)明X是一個(gè)偶數(shù)。

2、滿足MOD(X,2)=1這個(gè)表達(dá)式時(shí),說(shuō)明X是一個(gè)奇數(shù)。

3、MOD(X,5)=0

如下數(shù)列請(qǐng)描術(shù)它的通項(xiàng)公式。

(1)1、9、17、25、33...

(2)3、7、11、19、23...

MOD(X,8)=1或MOD((X-1),8)=0

MOD(X,4)=3或MOD((X+l),4)=0

3.3.2字符型函數(shù)

字符型函數(shù)主要對(duì)字符型數(shù)據(jù)進(jìn)行運(yùn)算。

(IX求子串位置函數(shù)

格式:

AT(〈字符表達(dá)式1>,〈字符表達(dá)式2>,[<數(shù)值表達(dá)式n>])

ATC(〈字符表達(dá)式1>,〈字符表達(dá)式2>,[<數(shù)值表達(dá)式n>])

功能:

著找〈字符表達(dá)式1>在〈字符表達(dá)式2>中的起始位置。如果有<數(shù)值表達(dá)式n>,則確定〈字符型表達(dá)

式1>在<字符型表達(dá)式2>中的第n次出現(xiàn)的起始位置,若缺省〈數(shù)值表達(dá)式n>默認(rèn)為1;如果字符表達(dá)

式1不是字符表達(dá)式2的子串,則返回為0。

結(jié)

界H

T0

【例】?AT(“A”,"BCDE”)K

結(jié)

劣m1

?AT("A","ABADE”)/l

結(jié)

身n4

?AT(“A”,"ABCADE”,2)=T

ATC函數(shù)不區(qū)分大小寫

?ATC("a","ABCDA”,1)

(2)、截取子串函數(shù)

*****格式:SUBSTR(〈字符表達(dá)式》,〈起始位置>,[<長(zhǎng)度>])

功能:從指定的〈起始位置》開始,在〈字符表達(dá)式》中截取指定〈長(zhǎng)度》的字符串。

說(shuō)明:假設(shè)起始位置為m,長(zhǎng)度為n。若省略n,則從m開始截取以后的所有字符串;若n大于從m開

始的字符串長(zhǎng)度,則從m開始截取以后的所有字符串;若m大于字符表達(dá)式的長(zhǎng)度,則截取的字符串為

空白字符串。

【例】

?SUBSTR(“HARDWORK”,3,4)結(jié)果為“RDWO”

?SUBSTR(“HARDWORK”,2)結(jié)果為“ARDWORK”

?SUBSTR(“HARDWORK”,3,9)結(jié)果為“RDWORK”

?SUBSTR(“HARDWORK”,9,5)結(jié)果為““

(3)、左截取子串函數(shù)

格式:LEFT(〈字符表達(dá)式>,〈數(shù)值表達(dá)式》)

功能:從字符表達(dá)式左邊開始,截取〈數(shù)值表達(dá)式>指定長(zhǎng)度的字符串。

【例】

?LEFT("HARDWORK",3)'結(jié)果為“HAR”

(4)、右截取子串函數(shù)

格式:RIGHT(〈字符表達(dá)式>,〈數(shù)值表達(dá)式》)

功能:從字符表達(dá)式右邊開始向左截取〈數(shù)值表達(dá)式)指定長(zhǎng)度的字符串o

【例】

?RIGHT(“HARDWORK”,3),結(jié)果為“ORK”

(5)、生成空字符串函數(shù)

格式:SPACE(〈數(shù)值表達(dá)式》)

功能:生成指定空格數(shù)的空字符串。

【例】?SPACE(3)'結(jié)果為““

(6)、字符串長(zhǎng)度函數(shù)

格式:LEN(〈字符表達(dá)式》)

功能:求字符串的長(zhǎng)度(包括空格)。

【例】?LEN("howareyou")11

'結(jié)果為11

?Len(space(3)-space(6))

(7)、字符串替換函數(shù)

格式:

***STUFF(〈字符表達(dá)式1>,〈起始位置〉,〈長(zhǎng)度〉,〈字符表達(dá)式2〉)

功能:從指定的起始位置開始,用字符表達(dá)式2替換字符表達(dá)式1中指定個(gè)數(shù)的子串。

說(shuō)明:替換與被替換的字符個(gè)數(shù)不一定相等;若長(zhǎng)度為0,則將〈字符表達(dá)式2>插入到字符表達(dá)式1中;

若〈字符表達(dá)式2>為空,則指定長(zhǎng)度的字符串被刪除.

【例】7STUFF(wcomputerw,3,4,“abc”)'結(jié)果為"coabcer”

?STUFF("computer”,3,1,“abc”)'結(jié)果為"coabcputer”

?STUFF("computer”,3,4,”“)‘結(jié)果為“coer”

(8)、刪除前后空格函數(shù)

格式:TRIM(〈字符表達(dá)式》)

LTRIM(〈字符表達(dá)式》)

ALLLTRIM(〈字符表達(dá)式))

功能:

TRIM。返回指字符表達(dá)式值去掉尾部空格后形成的字符串

LTRIM0返回指字符表達(dá)式值去掉前導(dǎo)空格后形成的字符串

ALLTRIM()返回指字符表達(dá)式值去掉前導(dǎo)和尾部空格后形成的字符串

例:

STORESPACE(1)+“TEST'+SPACE(3)TOSS

?TRIM(SS)+LTRIM(SS)+ALLTRIM(SS)

結(jié)果為:”TESTTESTTEST”

?LEN(SS),LEN(TRIM(SS)),LEN(LTRIM(SS)),LEN(ALLTRIM(SS))

結(jié)果為:8574

(9)、計(jì)算子串出現(xiàn)次數(shù)函數(shù)

格式:OCCUS(〈字符表達(dá)式1>,<字符表達(dá)式2>)

功能:

返回第一個(gè)字符串在第二個(gè)字符串中出現(xiàn)的次數(shù),若第一個(gè)字符串不是第二個(gè)字符串的子串,則返

回0.

例:STORE'abracadabra'TOS

?OCCUS('a',S),OCCUS('b',S),OCCUS('c',S),OCCUS('e',S)

結(jié)果為:5210

(口)、字符串匹配函數(shù)(等同于==)

格式:LIKE(〈字符串表達(dá)式1》,〈字符串表達(dá)式2>)

功能:

比較兩個(gè)字符串對(duì)應(yīng)位置上的字符,若所有對(duì)應(yīng)字符都相匹配,函數(shù)返回邏輯真(」.),反之,返

回邏輯假(.F.)

〈字符表達(dá)式1>中可包含有通配符"*“和“?”

例:STORE“abc”TOx

STORE“abed”TOy

?LIKE(“ab”,x),LIKE(“ab*”,y),LIKE("?b”,x),LIKE(“Abe”,x)

結(jié)果為:.F..T..F..F.(大小寫區(qū)分)

(12)、字符替換函數(shù)

格式:Chrtran(〈字符表達(dá)式1>,〈字符表達(dá)式2>,<字符表達(dá)式3>)

功能:

當(dāng)?shù)谝粋€(gè)字符串中的一個(gè)或多個(gè)字符與第二字符串中的某個(gè)字符相匹配時(shí),就用第三個(gè)字符串中的

對(duì)應(yīng)字符(即與第二個(gè)字符串位置對(duì)應(yīng))替換這些字符,若第三個(gè)字符串包含的字符個(gè)數(shù)少于第二個(gè)字符

串包含的字符個(gè)數(shù),即無(wú)對(duì)應(yīng)字符,則第一個(gè)字符串中相匹配的字符被刪除;反之,若多余,則多余字

符被忽略.

例:X1=CHRTRAN(“ABACAD”,“ACD”,“X12”)

CHRTRAN("ABACAD”,“ACD”,“X12”)

CHRTRAN(“XBACAD”,“ACD”,“X12”)

CHRTRAN(“XBXCAD”,“ACD”,“X12”)

CHRTRAN(“XBX1AD”,“ACD”,“X12”)

CHRTRAN(“XBX1X”,“AC”,“XI”)

CHRTRAN(“XBX1X2”,“ACD”,“X12”)

yl=CHRTRAN(“計(jì)算機(jī)ABC”,“計(jì)算機(jī)“,"電腦

Z1=HCRTRAN(“大家好”,“大家”,“你”)

?XI,yl,zl

結(jié)果等于多少?

3.3.3日期函數(shù)

(1)、系統(tǒng)時(shí)間函數(shù)

格式:TIME()

功能:返回當(dāng)前系統(tǒng)時(shí)間。時(shí)間格式為HH:MM:SS

說(shuō)明:此函數(shù)返回值不是日期時(shí)間型,

****而是字符型

【例】?TIME()

(2)、系統(tǒng)日期函數(shù)

格式:DATE()

功能:返回當(dāng)前系統(tǒng)日期,函數(shù)值為日期型

(3)、系統(tǒng)日期時(shí)間

格式:DATETIME()

功能:返回當(dāng)前系統(tǒng)的日期時(shí)間,函數(shù)值為日期時(shí)間型

【例】SETDATETOYMD

?DATE()

'假設(shè)當(dāng)前日期為2001/2/17,那么結(jié)果為01/02/17

(4)、年函數(shù)

格式:YEAR(〈日期型|日期時(shí)間型〉)

功能:輸出日期型表達(dá)式的年份。

【例】?YEAR(DATE())'假設(shè)當(dāng)前日期為2001/2/17,那么結(jié)果為2001。

(5)、月函數(shù)

格式:MONTH(<日期型|日期時(shí)間型》)

功能:輸出日期型表達(dá)式的月份。

【例】?MONTH(DATE())'假設(shè)當(dāng)前日期為2001/2/17,那么結(jié)果為2

(6)、日函數(shù)

格式:DAY(〈日期型|日期時(shí)間型》)

功能:輸出日期型表達(dá)式的日。

【例】?DAY(DATE())'假設(shè)當(dāng)前日期為2001/2/17,那么結(jié)果為17

(7)、時(shí),分,秒函數(shù)

格式:HOUR(〈日期時(shí)間表達(dá)式》)

MINUTE(〈日期時(shí)間表達(dá)式》)

SEC(<日期時(shí)間表達(dá)式〉)

功能:返日期時(shí)間型表達(dá)式的當(dāng)前小時(shí),分鐘和秒數(shù)

注:此三函數(shù)的參數(shù)只能為日期時(shí)間型,而不能是日期型.

3.3.4轉(zhuǎn)換函數(shù)

數(shù)據(jù)的運(yùn)算要求符合數(shù)據(jù)類型一致的原則,因此,若要對(duì)不同類型的數(shù)據(jù)進(jìn)行運(yùn)算,那么必須通過(guò)

轉(zhuǎn)換函數(shù)將其轉(zhuǎn)換為一致的數(shù)據(jù)類型。

(IX數(shù)值型轉(zhuǎn)換為字符型函數(shù)

格式:STR(〈數(shù)值表達(dá)式>[,<長(zhǎng)度>][,<小數(shù)位數(shù)>])

功能:將數(shù)值表達(dá)式按設(shè)定的長(zhǎng)度和小數(shù)位數(shù)轉(zhuǎn)換成字符型數(shù)據(jù)。

說(shuō)明:轉(zhuǎn)換后字符串的理想長(zhǎng)度應(yīng)為L(zhǎng),即剛好等轉(zhuǎn)換后的數(shù)值所有位,包括小數(shù)點(diǎn)及負(fù)號(hào)在內(nèi)。

〈長(zhǎng)度》為轉(zhuǎn)換后的字符串位數(shù),若〈長(zhǎng)度〉的設(shè)定值大于L,則轉(zhuǎn)換后的字符串前補(bǔ)”空格”;若〈長(zhǎng)度》

的設(shè)定值小于L而大于實(shí)際數(shù)值的整數(shù)部分位數(shù),則優(yōu)先滿足整數(shù)部分而自動(dòng)調(diào)整小數(shù)位數(shù);若〈長(zhǎng)度〉

的設(shè)定值小于L又小于實(shí)際數(shù)值的整數(shù)部分位數(shù),則返回一串星號(hào)(*)

【例】?STR(123.4567,6,2)'結(jié)果為123.46

?STR(123.4567,9,2)'結(jié)果為"123.46”

?STR(123.4567,6,3)'結(jié)果為123.46

?STR(123.4567,1,2)'結(jié)果為*

(2)、字符型轉(zhuǎn)換為數(shù)值型函數(shù)

格式:VAL(〈字符型表達(dá)式》)

功能:將數(shù)字字符串轉(zhuǎn)換為數(shù)值。

說(shuō)明:轉(zhuǎn)換時(shí)遇到非數(shù)字字符時(shí)停止;

***若第一個(gè)字符就不是數(shù)字,則值為0.00

【例】VAL("123.45AB")'結(jié)果為123.45

VAL(“A123.45AB”)'結(jié)果為0.00

(3)、字符轉(zhuǎn)換為ASCH函數(shù)

格式:ASC(〈字符型表達(dá)式〉)

功能:返回字符表達(dá)式第一個(gè)字符的ASCH碼值。

【例】ASC(“abc")'結(jié)果為97

(4)、ASCII碼轉(zhuǎn)換為字符函數(shù)

格式:CHR(〈數(shù)值型表達(dá)式》)

功能:將ASCII碼轉(zhuǎn)化為相應(yīng)的字符。

A=65

a=97

0=48

【例】CHR(65)'結(jié)果為A

(5)、日期型或日期時(shí)間型轉(zhuǎn)換為字符型

格式:DTOC(〈日期型表達(dá)式日期時(shí)間型>[,1])

TT0C(〈日期時(shí)間表達(dá)式>[,1])

功能:DT0C將日期型或日期時(shí)間型轉(zhuǎn)換為字符型

功能:TT0C將日期時(shí)間型表達(dá)式轉(zhuǎn)換為字符串。

說(shuō)明:若使用選項(xiàng)LU,則轉(zhuǎn)換為年月日無(wú)分隔符的形式。

【例】?DTOC(DATE())

假設(shè)當(dāng)前日期為2001/2/17,那么結(jié)果為02/17/01

?DTOC(DATE(),1)

假設(shè)當(dāng)前日期為2001/2/17,那么結(jié)果為20010217

(6)、字符型轉(zhuǎn)換為日期型函數(shù)

格式:CTOD(〈字符型表達(dá)式》)

CTOT(〈字符型表達(dá)式》)

功能:CTOD將字符型表達(dá)式轉(zhuǎn)換為日期型。

CTOD將字符型表達(dá)式轉(zhuǎn)換為日期時(shí)間型

說(shuō)明:字符串表達(dá)式的內(nèi)容必須是0-9之間的字符,否則出錯(cuò)

【例】?CTOD(“02/17/64")'結(jié)果為02/17/64

(7)大寫字母轉(zhuǎn)換為小寫字母函數(shù)

格式:LOWER(〈字符型表達(dá)式〉)

功能:將字符型表達(dá)式中的大寫字母轉(zhuǎn)換為小寫字母。

【例】?LOWER(“AaBbCc")'結(jié)果為aabbcc

(8)小寫字母轉(zhuǎn)換為大寫字母函數(shù)

格式:UPPER(〈字符型表達(dá)式》)

功能:將字符型表達(dá)式中的小寫字母轉(zhuǎn)換為大寫字母。

【例】?UPPER(“AaBbCc")'結(jié)果為AABBCC

3.3.5測(cè)試函數(shù)

1、系統(tǒng)對(duì)表的記錄是逐個(gè)處理的,對(duì)于一個(gè)打開的表來(lái)說(shuō),在每一時(shí)刻只能處理一條記錄,VFP為每

一個(gè)打開的表設(shè)置一個(gè)內(nèi)部使用的記錄指針,指向正在被操作的記錄,該記錄稱為當(dāng)前記錄.記錄指針

的作用是標(biāo)識(shí)表的當(dāng)前記錄.

2、表的邏輯結(jié)構(gòu)如圖所示,最上面的記錄是首記錄,記為TOP,最下面的記錄是尾記錄,記為BOTTOM.

在第一個(gè)記錄之前有一個(gè)文件起始標(biāo)識(shí),稱為BeginningofFile(BOF);在最后一個(gè)記錄的后面還有

一個(gè)文件結(jié)束標(biāo)志,稱為EndofFile(EOF).使用測(cè)試函數(shù)能夠得到指針的位置,剛打開表時(shí),記錄

指針總是指向首記錄.

(1)、值域測(cè)試函數(shù)

格式:BETWEEN(〈表達(dá)式T〉,〈表達(dá)式L〉,〈表達(dá)式H>)

功能:判斷〈表達(dá)式T>的值是否在〈表達(dá)式L>與〈表達(dá)式H〉之間,若在,則返回真.T.,反之返回假.F>;.

若〈表達(dá)式L>和〈表達(dá)式H>中有任一個(gè)為NULL是,則返回NULL.

【例】STORENULLTOX

STORE100TOY

?BETWEEN(150,Y,Y+100),BETWEEN(90,X,Y)

結(jié)果為:.T..NULL.

(2)、記錄個(gè)數(shù)測(cè)試函數(shù)

格式:RECCOUNT(〈工作區(qū)號(hào))|〈別名>))

功能:測(cè)試指定表或當(dāng)前表的記錄個(gè)數(shù)。

說(shuō)明:(1)標(biāo)識(shí)了邏輯刪除的記錄也包括在內(nèi),即返回表文件中物理

上存在的記錄個(gè)數(shù)。

(2)若指定表沒(méi)有打開,則返回0

(3)、工作區(qū)測(cè)試函數(shù)

格式:SELECT(〈工作區(qū)號(hào)》|〈別名〉))

功能:測(cè)試指定表或當(dāng)前表所在的工作區(qū)號(hào)。

【例】SELECT1

USEStudent

SELECT2

USEScore

?SELECT()'結(jié)果為2

(4)、數(shù)據(jù)類型測(cè)試函數(shù)

格式:VARTYPE(〈表達(dá)式>[,邏輯表達(dá)式])

功能:測(cè)試表達(dá)式的數(shù)據(jù)類型,返回一個(gè)大寫字母即代表數(shù)據(jù)類型的字母,具體參見課本P77表3.8。

表達(dá)式若為常量,則需用定界符界定。

說(shuō)明:若〈表達(dá)式〉為一個(gè)數(shù)組,則返回第一個(gè)數(shù)組的元素的類型;

當(dāng)表達(dá)式的運(yùn)算結(jié)果為NULL時(shí),則據(jù)〈邏輯表達(dá)式>的值返回表達(dá)式的值,若〈邏輯表達(dá)式>為.工,則返

回表達(dá)式的原數(shù)據(jù)類型;若〈邏輯表達(dá)式為.F.或缺省,則返回X以表明〈表達(dá)式》的運(yùn)算結(jié)果是NULL;

若〈表達(dá)式〉運(yùn)算的結(jié)果是NULL,則返回X,表示運(yùn)算結(jié)果是NULL

【例】x="AAA”

STORE10TOy

STORE.NULL.TOx

STORE$100.2TOz

?VARTYPE(X),VARTYPE(X,.F.),VARTYPE(X,.T.),

?VARTYPE(y),VARTYPE(z)

結(jié)果為:XXCNY

(5)、空值(NULL)測(cè)試函數(shù)

格式:ISNULL(〈表達(dá)式〉)

功能:判斷〈表達(dá)式》的運(yùn)算結(jié)果是否為NULL值,若是NULL值返

回邏輯真(.「),反之為假(.F.)

(6)、“空”值測(cè)試函數(shù)

格式:EMPTY(〈表達(dá)式〉)

功能:判斷〈表達(dá)式》的結(jié)果是否為“空值”,若是則返回邏輯具(.T.),反之返回邏輯假(.F.)

NULL與“空”的區(qū)別:

NULL表示一個(gè)不確定的值,而“空”表示不同數(shù)據(jù)類型所代

(7)、條件測(cè)試函數(shù)

格式:IIF(〈邏輯表達(dá)式》,〈表達(dá)式1〉,〈表達(dá)式2>)

功能:測(cè)試〈邏輯表達(dá)式>的值,若為真(.「),函數(shù)返回〈表達(dá)式1>的值,反之返回〈表達(dá)式2>的值,

其中表達(dá)式1與表達(dá)式2的類型可以不一樣

(8)、記錄刪除測(cè)試函數(shù)

格式:DELETED(k別名)|〈工作區(qū)號(hào)>])

功能:測(cè)試指定表或當(dāng)前表的當(dāng)前記錄是否有刪除標(biāo)記"*",若有則返回真(.T.),反之返回假

(.F.)

(9)宏替換函數(shù)

格式:&<字符型變量》

功能:替換出字符型變量的內(nèi)容,即&的值是變量中的字符串,如果該函數(shù)與其后的字符無(wú)明確分界,

則要用”.”作函數(shù)結(jié)束標(biāo)識(shí).

例:STORE'職工'TODB

USE&DB

XM=“姓名”

?&XM+結(jié)果為李小明你好

SKIP

?XM,結(jié)果姓名李新

值為

3.5.6程序設(shè)計(jì)

定義:是為完成某種任務(wù)的命令序列,這些命令序列按照一定的結(jié)構(gòu)合理地、有機(jī)地組合在一起,

并以文件的形式存儲(chǔ)在磁盤上,稱命令文件。

程序執(zhí)行時(shí),從磁盤上調(diào)入內(nèi)存,系統(tǒng)按照文件中排列的順序從第一條命令逐條執(zhí)行,直到結(jié)束。

2、關(guān)于程序的幾點(diǎn)說(shuō)明

⑴注釋

?代碼行注釋:以NOTE或*開頭的注釋,獨(dú)立占用一

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論