VFP二級培訓教程_第1頁
VFP二級培訓教程_第2頁
VFP二級培訓教程_第3頁
VFP二級培訓教程_第4頁
VFP二級培訓教程_第5頁
已閱讀5頁,還剩138頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

VFP二級培訓教程

VisualFoxPro6.0

數據庫治理系統

趙兵

目錄

開篇錯誤!未定義書簽。

第一章差不多概念錯誤味定義書簽。

第二章走進VFP3

第三章VFP的數據形式、類型及運算12

第四章數據庫及其操作32

第五章SQL語言58

第六章查詢與視圖74

第七章程序設計基礎80

第八章表單設計與應用97

第九章菜單設計與應用125

第十章報表設計130

第十一章數據庫應用系統的開發136

第一章數據庫系統基礎知識

1.1數據庫系統概述

1.1數據庫基礎知識

1數據與數據處理

數據是指儲備在某一種媒體上能夠識別的物理符號。

數據處理的中心咨詢題是數據治理。

2運算機數據治理

(1)人工治理。

(2)文件系統。

(3)數據庫系統。

(4)分布式數據庫系統。

(5)面向對象數據庫系統。

3數據庫治理系統

為數據庫的建立、使用和愛護而配置的軟件稱為數據

庫治理系統DBMS(DataBaseManagementSystem)□

2數據庫系統

1有關數據庫的概念

(1)數據庫(DataBase):儲備在運算機儲備設備上、結

構化的有關數據的集合。

(2)數據庫應用系統(DBAS):是由系統開發人員利用

數據庫系統資源開發出來的,面向某一類實際應用的應用軟件

系統。

(3)數據庫治理系統(DBMS):對數據實行專門治理,

提供安全性和完整性等統一機制,能夠對數據庫的建立、使用

和愛護進行治理。

(4)數據庫系統(DBS):是指引進數據庫技術后的運算

機系統,實現有組織地、動態地儲備大量有關數據,提供數據

處理和信息資源共享的便利手段。數據庫系統由硬件系統、數

據庫、數據庫治理系統及有關軟件、數據庫治理員和用戶等部

分組成。

2數據庫系統的特點

(1)實現數據共享,減少數據冗余。

(2)采納特定的數據模型。

(3)具有較高的數據獨立性。

(4)具有統一的數據操縱功能。

3數據模型

1實體的描述

⑴實體。

(2)實體的屬性。

(3)實體集和實體型。

2實體間聯系及聯系的種類

(1)一對一聯系。

(2)一對多聯系。

(3)多對多聯系。

3數據模型簡介

為了反映事物本身及事物之間的各種聯系,數據庫中

的數據必須有一定的結構,這種結構用數據模型來表示,通常

有以下3種。

(1)層次數據模型。

(2)網狀數據模型。

(3)關系數據模型。

小提示:

數據庫DB、數據庫系統DBS和數據庫治理系統DB

MS之間的關系是DBS包括DB和DBMS。

1.2關系模型

關系模型的用戶界面專門簡單,一個關系的邏輯結構

確實是一張二維表。這種用二維表的形式表示實體和實體間聯

系的數據模型稱為關系數據模型。

1關系術語

(1)關系:一個關系確實是一張二維表,每個關系有一

個關系名。在VisualFoxPro中一個關系儲備為一個文件,擴

展名為DBF,稱為“表二

對關系的描述稱為關系模式,一個關系模式對應一個

關系的結構,格式為:

關系名(屬性名1,屬性名2,…,屬性

名n)

(2)元組:在一個二維表中,水平方向的行稱為元組,

每一行為一個元組。

(3)屬性:將二維表中垂直方向的列稱為屬性,每一列

都有一個屬性名。

(4)域:屬性的取值范疇,即不同元組對同一個屬性的

取值所限定的范疇。

(5)關鍵字:屬性或屬性的組合,其值能夠唯獨地標識

一個元組。在VisualFoxPro中,主關鍵字和候選關鍵字就起

唯獨標志一個元組的作用。

(6)外部關鍵字:如果表中一個字段不是本表的主關鍵

字或候選關鍵字,而是另一個表的主關鍵字或候選關鍵字,那

么那個字段(屬性)就稱為外部關鍵字。

2關系的特點

(1)關系必須規范化。

(2)在同一個關系中不能顯現同名屬性,VisualFoxPr

o中表示為字段名的不同。

(3)關系中不承諾有完全相同的元組,即冗余。

(4)在一個關系中元組的次序無關緊要。

(5)在一個關系中列的次序無關緊要。

5關系運算

對關系數據庫進行查詢時,需要找到用戶感愛好的數

據,這就需要對關系進行一定的關系運算,關系的差不多運算

有兩類:傳統的集合運算和專門的關系運算。

1傳統的集合運算

(1)并:兩個相同結構關系的并是由屬于這兩個關系的

全部元組組成的集合。

(2)差:兩個相同結構關系的差是由屬于前一個關系的

元組而不屬于后一個關系的元組組成的集合。例如,關系R和

S的差結果是由屬于R但不屬于S的元組組成的集合。

(3)交:兩個相同結構關系的交是由屬于這兩個關系所

共有的元組組成的集合。

2專門的關系運算

(1)選擇:從關系中找出滿足給定條件的元組的操作。

(2)投影:從關系模式中指定若干個屬性組成新的關

系:

(3)連接:關系的橫向結合,將兩個關系模式拼接成一

個更寬的關系模式。

(4)自然連接:在連接運算中,按照字段值對應相等為

條件進行的連接操作稱為等值連接。自然連接是去掉重復屬性

的等值連接。

小提示:

選擇和投影運算的操作對象只是一個表,相當于對一

個二維表進行切割。連接運算則需要把兩個表作為操作對象。

如果兩個表以上進行連接,應當兩兩進行連接。

1.3數據庫設計基礎

6數據庫設計步驟

1設計原則

(1)關系數據庫的設計應遵從概念單一化“一事一地”

的原則。

(2)幸免在表之間顯現重復字段。

(3)表中的字段必須是原始數據和差不多數據元素。

(4)用外部關鍵字保證有關聯的表之間的聯系。

2設計步驟

利用VisualFoxPro來開發數據庫應用系統,能夠按

照以下步驟來設計。

(1)需求分析。

(2)確定需求表C

(3)確定需求字段。

(4)確定聯系。

(5)設計精確

1.4VisualFoxPro系統概述

7VisualFoxPro的特點

(1)增強項目與數據庫治理。

(2)提升應用程序開發的生產率。

(3)互操作性與支持Internet。

(4)充分利用已有數據

第二章走進VFP

一、VFP簡介

1、VFP的認識

VFP是一個適合小型數據庫治理的數據庫治理系統。

2、VFP之前統領小型數據庫治理領域的數據庫治理系統是

dBASE,其要緊版本:dBASEH-dBASEHI-dBASEIIIPlu

s-dBASEIV

3、VFP的進化軌跡

FoxBase2.0/2.1-FoxPro2.0-*FoxPro2.5-FoxPro2.6-

VisualFoxPro3.0-*VisualFoxPro5.0-*VisualFoxPro6.0

我們學習的是VisualFoxPro6.0。

4、VisualFoxPro(包括3.0、5.0、6.0版本)的差不多特

點:

?以可視化方式開發軟件界面。

?采納面向對象的軟件開發技術。

二、接近VFP

1、VFP的安裝(略)

2、VFP的啟動

3、VFP差不多界面的認識

?菜單欄

?工具欄

?狀態欄

?主屏幕:顯示交互操作結果。

?命令窗口

作用:供輸入操作命令的場所。一個命令輸完后按下回車

鍵,VFP才會執行相應的命令。

命令窗口的關閉與顯示

快捷鍵操作一Ctrl+F4:關閉;Ctrl+F2:顯示。

4、VFP的差不多命令

,clear:清除主屏幕上的顯示。

??:在主屏幕當前行的下一行顯示其后要顯示的內容。

???:在主屏幕當前行內容之后顯示其后要顯示的內容。

講明:差不多使用過的命令能夠再用。

5、VFP的退出

鼠標操作:見演示。

鍵盤操作:

?快捷鍵:Alt+F4o

?退出命令:QUITo

三、設置VFP

1、設置VFP是指對VFP的工作環境進行一些設置,如日

期的格式等。這些設置能夠通過相應命令進行,也可在“選項”

對話框中進行。

2、“選項”對話框設置VFP。

1)狀態欄的設置

2)日期格式設置

3)默認名目(工作名目)設置

?了解默認名目(工作名目)

?sys(5)+sys(2OO3)

sys(5)一默認名目中的盤;sys(2003)一默認名目中的

路徑。

?設置

,意義(doformgzml.scx)

4)使設置長期有效

四、學習VFP

1、VFP提供的關心系統是我們學習VFP的一本專門好教

科書,建議同學們經常使用。

2、使用關心系統而不要依靠關心系統,如此不利于我們通

過二級考試。

第三章VFP的數據形式、類型及運算

一、常量

1、常量是表示一個確定值的數據。常量有數值型、貨幣型、

字符型、邏輯型、日期型、日期時刻型6種。

2、數值型常量

?數值型常量表示的是一個具體的數,因此,數值型常量

也稱為常數。

?數值型常量的書寫方法:

(1)日常表示法

如12、+56、-64.8等。

(2)科學表示法

1.6E12表示1.6X1012;

1.6E-12表示1.6X10-12;

-L6E12表示-1.6X1012;

-1.6E-12表示-1.6X10-12。

3、貨幣型常量

?貨幣型常量用來表示一個具體的貨幣值。貨幣型常量的

小數位數采納4位。

?貨幣型常量的書寫方法:

如$12,$12.68,-$12.68等。

4、字符型常量

?字符型常量用來表示一串確定的字符,因此,字符型常

量也稱為字符串。

?字符型常量的書寫方法:

'abed'、"abed",[abed]均表示字符串abed。

?講明

(1)表示字符型常量前后的,、"或口稱為字符型常量的定

界符,它表示字符串的開始和終止,不是字符串的組成內容。

字符串的前后定界符必須一致,如,abed"等是錯誤的。

(2)當字符串中包含,、"或口時,必須使用其它的定界符,

如字符串ab'ed應表示為"ab,cd"或[ab'ed]。

(3)字符型數據中的字母大小寫是區分的,例如"abed"和

"ABCD"是不同的兩個字符串。順便講一下,命令中的字母大小

寫是不區分的,如Clear、cleAr、CLEAR等均表示清除主屏幕

顯示命令。

(4)兩個單引號(”)、兩個雙引號("")、一對中括號([])

均表示沒有組成內容的字符串,如此的字符串稱為空串。

(5)組成字符串的內容也能夠有空格,如"abcd"、"a

bed\""等差不多上正確的字符串。

(6)注意定界符應是英文符號,不能是中文符號。順便講

一下中英文符號咨詢題:除了字符串中能夠隨意使用符號以外,

其它場合均只能使用英文符號!

5、邏輯型常量

?邏輯型常量用來表示一確定的邏輯值。邏輯值只有真值

和假值兩個。

?邏輯型常量的書寫方法:

真值:.T.、.t.、.Y.、.y.;

假值:.F.、.f.、.N.、.n.。

6、日期型常量

?日期型常量用來表示一確定的日期。

?日期型常量的書寫方法:

2004年7月14日可表示為:{人2004-7-14}、{人2004.7.14}、

{人2004/7/14}、{人2004714}。

7、日期時刻型常量

?日期時刻型常量用來表示一確定的日期和時刻。

?日期時刻型常量的書寫方法:

格式:{人日期,時刻}

其中,日期的書寫格式同日期型常量,時刻的書寫格式有:

8:10:30、18:15:25、8:10:30A,8:10:30AM,8:10:30P,8:10:30P

Mo

二、變量

1、變量是表示可變值的數據。變量用一名稱來表示,該名

稱稱為變量名。變量名一樣以字母或漢字開始,其后能夠是字

母、漢字、數字及某些符號(如下劃線)。

摸索:a,aa,bl2,c_l,alB2,2d4,同學們,“同學們”。

2、變量的值能夠通過賦值命令獲得:

a=12表示為變量a賦一個值12;

store34.2toa,b,c表示將值34.2分別賦給變量a,b,

Co

3、賦值命令的格式:

變量=表達式

store表達式to變量1,變量2,

4、變量的類型由其值的類型決定。

5、變量的另一種使用形式一一數組

?一般變量是一個變量對應一個值,而數組變量卻一個變

量對應多個值。數組變量中的每一個值稱為數組元素。

?數組變量的取名同一般變量,數組元素用數組變量名加

下標的方法來表示,如a(1)、a(2)、b(1,1)、b(1,2)

等。也確實是講,數組用下標來區分其元素。

?如果一個數組,其元素只用一個下標,則該數組稱為一

維數組;如果一個數組,其元素使用兩個下標,則該數組稱為

二維數組。

?數組變量的使用與一般變量的使用有所不同:數組變量

必須先定義,然后才能使用。

?定義一維數組變量:

dimension/declare數組名(下標上限)

下標上限指下標的最大值。下標下限指下標的最小取值。

VFP中,下標的下限規定為1,因此無須在定義數組時指定。

?定義二維數組變量:

dimension/declare數組名(第一個下標上限,第二個下標

上限)

?數組變量定義后,如果未對其賦值,則各元素為假值。

?給數組變量賦一個值時,其元素均得到該值,也能夠為

其元素分別賦以不同的值。

?數組變量不直截了當參加運算,其元素能夠。

6、和變量有關的常用命令

,listmemory命令

格式:p60o

功能:顯示變量信息。

講明:

。書中命令格式的書寫約定:中括號部分表示選項;尖括

號部分內容(漢字部分)要按照要求提供;豎杠(斜杠)兩邊

內容表示只能選擇其一。

。顯示的變量信息不僅有我們自己使用的變量,而且包括

VFP本身所固有的變量(這些變量稱為系統變量,系統變量名

均以下劃線開始)。

O"like〈通配名〉”表示只顯示和通配名一致的變量信息。

通配名是指包含?或*的名稱,其中,?表示該位置能夠是任意

的某個符號,*表示該位置能夠是任意多的符號。例如a?c表示

如此的一些名稱:第一位是a,第二為任意,第三位是c;a*c

表示如此的一些名稱:第一位是a,最后一位是c,中間內容任

思、O

O“toprinter"表示將變量信息同時送打印機打印;“tof

ile〈文件〉”表示將變量信息同時存入到指定的文件中。

。當顯示的變量信息超出一個屏幕時,前面的信息會滾出

屏幕。

OVFP命令中規定使用的英文單詞稱為保留字。使用時,

保留字能夠只寫出前面部分,但至少要有4位。

,displaymemory命令

格式:p60o

功能:顯示變量信息。

講明:與listmemory命令的唯獨區別在于:當顯示的變量

信息超出一個屏幕時,該命令能做到一個屏幕一個屏幕地顯示。

,clearmemory命令

格式:clearmemory

功能:清除所有變量。

講明:系統變量是我們清除不掉的。

,release命令

格式1:release變量1,變量2,……

功能:清除指定的變量。

格式2:releaseall

功能:清除所有變量。

格式3:releasealllike通配名

功能:清除和通配名一致的變量。

格式4:releaseallexcept通配名

功能:清除和通配名不一致的變量。

二、表達式

1、表達式是對數據(常量、變量)進行運算的式子。運算

能夠通過運算符,也能夠通過函數。為改變運算的順序,也能

夠在表達式中使用圓括號。

講明:

?運算機中,表達式里的所有字符均并列書寫。

?單個常量或變量是表達式的特例,即屬于表達式范疇。

2、數值表達式

?對數值型、貨幣型數據進行運算的式子,其值為數值型

或貨幣型。

?算術運算符:

**或人:乘方運算;

*:乘法運算;

/:除運算;

%:求余運算;

+:加運算;

-:減運算。

3、字符表達式

?對字符型數據進行運算的式子,其結果仍為字符型。

?字符運算符:

+:將前后兩個字符串進行合并,如[abc]+[def],其結果

為字符串[abcdef]。

-:將前后兩個字符串進行合并,但將前面字符串尾部的空

格挪到合并后的新字符串尾部。如[abc]-[def],其結果為字符

串[abcdef]0

兩個字符運算符的優先級相同。

4、日期時刻表達式

?對日期時刻型數據進行運算的式子,其結果類型依情形

而定。

?日期時刻表達式類型:p64表3.3。

5、關系表達式

?通過關系運算符進行比較的式子。如果比較成立,結果

為邏輯值真,否則為假。

?關系運算符:p65表3.4。關系運算符的優先級相同,但

低于前面的運算符。

?關系運算符前后參與比較的數據要求是同一類型(數值

型能夠和貨幣型比較)。

?關系表達式的運算結果和關系運算符兩邊的數據大小緊

密有關,VFP中,數據大小的規定:

(1)數值型、貨幣型

同算術中大小。

(2)日期型、日期時刻型

靠后的日期、時刻大。

(3)邏輯型

真大于假。

(4)字符型

【單個字符大小的規定】

當設置為Machine(機器)順序時:

字符大小:空格〈數字字符('0'至『9')〈大寫字母〈小

寫字母;

漢字大小:常用漢字以拼音順序排大小,如‘李'<'張

當設置為PinYin(拼音)順序時:

字符大小:空格(數字字符('0'至『9')<'a'<'N

<,b,<,B,……;

漢字大小:以拼音順序排大小,如‘李'<'張'。

當設置為Stroke(筆畫)順序時:

字符大小:空格(數字字符('0'至『9')<'a'<'N

<,b,<,B,……;

漢字大小:以書寫筆畫多少確定大小,筆畫多的大。

【三種順序的設置】

方法一:“選項”對話框中設置。

方法二:用命令設置:

setcollateto“Machine”

setcollateto"PinYin”

setcollateto“Stroke”

【字符型數據的大小】

兩個字符串大小的判定規則:

自左至右,逐個字符進行比較,直到某個字符能辨論出大

小為止。七,(字符型數據大小規則圖解)

非精確比較方式(默認方式):

兩個字符串的比較以右邊字符串的終止而終止。亡(比較

方式圖解)

精確比較方式:

兩個字符串的比較以最長字符串的終止而終止。e(比較

方式圖解)

【比較方式的設置】

方法一:“選項”對話框中進行。

方法二:命令

SETEXACTON&&設置為精確比較方式

SETEXACTOFF&&設置為非精確比較方式

【摸索、練習與提示】

1)了解當前比較方式。提示:通過SETCEXACT)函數也

可了解。

2)分別在非精確比較方式和精確比較方式下判定下述關系

表達式的值:

'XYZ'='XY'XY'='XYZ','XYZ'=='XY'

XY'=='XYZ';XY'<'XYZ'XYZ'〉'XY'。

6、邏輯表達式

?對邏輯型數據進行運算的式子,結果為邏輯型。

?邏輯運算符:

.not.或not或!:非運算;

.and.或and:與運算;

.or.或or:或運算。

優先級(高一低):非、與、或。但它們的優先級均低于前

面的運算符。

講明:如果一個運算符只對一個數據進行運算,稱之為單

目運算符;如果對兩個數據進行運算,稱為雙目運算符。

7、邏輯表達式、關系表達式的意義

VFP中,使用邏輯表達式、關系表達式表示條件。當邏輯

表達式、關系表達式的值為真時,所表示的條件成立;當邏輯

表達式、關系表達式的值為假時,所表示的條件不成立。

例:試用關系表達式或邏輯表達式表示如下條件,并驗證

條件的成立與否和表達式真假值之間的關系。

1)A大于5

2)A不大于5

3)A大于5且B小于10

4)A大于5或B小于10

5)A在5和20之間

四、常用函數

1、函數是進行數據運算的另一種途徑。

2、函數的一樣使用格式:

函數名(自變量,自變量,……)

自變量又稱參數。無自變量時,圓括號也要寫上,如DAT

E()等。

3、常用函數

(1)數值處理函數

?ABS函數

功能:求一個數的絕對值。

例:ABS(67),ABS(-67+89),ABS(-82)

?SIGN函數

功能:當自變量值正時,返回1;當自變量值負時,返回-

1;當自變量值為0時,返回0。

例:當變量A的值為正時,B賦以值8+20;當變量A的

值為負時,B賦以值8-20;當變量A的值為。時,B賦以值8。

?SQRT函數

功能:求正數的平方根。

例:SQRT(2)

講明:默認運算結果為2位小數。SETDECIMALSTO命

令可設置運算結果的小數位數。

?PI函數

功能:得到n的值。

例:PIo

?INT函數

功能:返回自變量的整數部分。

例:INT(1.3),INT(1.6),INT(-1.3),INT(-1.6)

?CEILING函數

功能:返回大于或等于自變量的最小整數。

例:CEILING(1.3),CEILING(2),CEILING(-1.3),C

EILING(-2)

?FLOOR函數

功能:返回小于或等于自變量的最大整數。

例:FLOOR(1.3),FLOOR(2),FLOOR(-1.3),FLOO

R(-2)

?ROUND函數

功能:對自變量的值進行四舍五入運算。運算時,第二個

自變量表示精確到哪一位。

例:ROUND(345.345,2),ROUND(345.345,1),RO

UND(345.345,0),ROUND(345.345,-1)

?MOD函數

功能:求兩個整數相除以后的余數。

例:MOD(10,3),MOD(9,3),MOD(11,3)

講明:有負數的求余不考慮。

?MAX函數

功能:從多個自變量中挑出最大的值。

例:MAX(1,2,7,4,5),MAX('A','ABC','BC')

講明:自變量的類型應一致。

?MIN函數

功能:從多個自變量中挑出最小的值。

例:MIN(1,2,7,4,5),MIN「A"'ABC','BC')

講明:自變量的類型應一致。

(2)字符處理函數

?LEN函數

功能:求字符串的長度。

講明:一個漢字長度為2,一個英文字符(包括空格)長

度為lo

例:LEN(“二級VisualFoxPro培訓班”)

?LOWER函數

功能:將自變量中的所有字母轉化為小寫字母。

例:LOWER(“二級VisualFoxPro培訓班”)

?UPPER函數

功能:將自變量中的所有字母轉化為大寫字母。

例:UPPER(“二級VisualFoxPro培訓班”)

?SPACE函數

功能:產生指定個數空格組成的字符串。

例:SPACE(10)

?REPLICATE函數

功能:由指定字符串重復組合產生字符串。

例:REPLICATE('*',10),REPLICATE('ABCD',5)

?TRIM函數

功能:將字符型自變量右邊空格去掉。

例:TRIM("VisualFoxPro”)

?LTRIM函數

功能:將字符型自變量左邊空格去掉。

例:LTRIM("VisualFoxPro”)

?ALLTRIM函數

功能:將字符型自變量左、右兩邊的空格均去掉。

例:ALLTRIM("VisualFoxPro”)

?LEFT函數

功能:從一個字符串左邊開始取子串。

例:LEFT(“上午好!”,2),LEFT(“上午好!”,4)

?RIGHT函數

功能:從一個字符串右邊取子串。

例:RIGHT(“上午好!”,2),RIGHT(“上午好!”,4)

?SUBSTR函數

功能:從一個字符串中取子串。

例:SUBSTR(“上午好!”,3,2),SUBSTR(“上午好!”,

3,4)

?OCCURS函數

功能:求第一個字符串在第二個字符串中顯現的次數。

例:OCCURS("ab","huabhgtabagfbyrba"),OCCURS("a

b","huahgtbagfbyrba")

?AT函數

功能:求第一個字符串在第二個字符串中顯現的位置。

例:AT("ab","huABygabhgtabagf"),AT("ab","huAByga

bhgtabagf",2)

?ATC函數

功能:求第一個字符串在第二個字符串中顯現的位置,但

不區分字母大小寫。

例:ATC("ab","huABygabhgtabagfATC("ab","hu

ABygabhgtabagf",2)

?STUFF函數

功能:用第二個字符串替換第一個字符串中的內容。

例:STUFF("gtyabku",3,4,"AA")

摸索:

1)在"ab"的a、b之間插入"和"。

2)將"淮北煤炭師范學院”中的“煤炭”二字刪除。

?CHRTRAN函數

功能:對第一個字符串中的字符進行替換。

例1:CHRTRAN("ABACAD","ACD","X12")

例2:CHRTRAN("大伙兒好大伙兒你")

?LIKE函數

功能:第一個字符串中的字符和第二個字符串中字符是否

對應相同,是返回真,否則返回假。

例1:LIKE("ABA","ABAD")

講明:第一個字符串中能夠使用通配符。

例2:LIKE("AB*","ABAD")

(3)日期、時刻函數

?DATE函數

功能:返回當前系統日期。

例:DATE()

?TIME函數

功能:返回當前系統時刻。

例:TIME()

講明:函數值為字符型。

?DATETIME函數

功能:返回當前系統日期及時刻。

例:DATETIMEO

?YEAR函數、MONTH函數、DAY函數

功能:分別返回日期或日期時刻型自變量對應的年份、月

份和生活。

例:YEAR(DATE()),MONTH(DATEQ),DAY(DATE())

?HOUR函數、MINUTE函數、SEC函數

功能:分別返回日期時刻型自變量對應的時、分、秒。

例:HOUR(DATETIME()),MINUTE(DATETIME()),SEC

(DATETIMEO)

摸索:10小時后是幾點?

(4)轉換類函數

?STR函數

功能:將數值型自變量轉換為字符型。

例1:STR(123.456)

講明:函數值默認10位,不帶小數部分。能夠加上第2、

第3個參數,用來分別表示總位數和小數位數。默認或指定位

數比實際位數多時,函數值的左邊補以相應個數的空格,以保

證總位數。

例2:STR(123.456,5),STR(123.456,5,1),STR(123.4

56,5,2),STR(123.456,6,2),

STR(123.456,3,2),STR(123.456,2)

,VAL函數

功能:將字符型自變量轉換為數值型。

例:VAL([1234.56]),VAL([123a]),VAL([下午好])

?DTOC函數

功能:將日期型自變量轉換為日期形式的字符串。

例1:DTOC(DATEO)

講明:轉換后的字符串組成和當前日期格式有關,但加上

1參數后,將轉化為YYYYMMDD這種固定格式的字符串。

例2:DTOC(DATE(),1)

?TTOC函數

功能:將日期時刻型自變量轉換為日期時刻形式的字符串。

例1:TTOC(DATETIME())

講明:轉換后的字符串組成和當前日期、時刻格式有關,

但加上1參數后,將轉化為YYYYMMDDHHMMSS這種固定

格式的字符串。

例2:TTOC(DATETIME(),1)

?CTOD函數

功能:將日期形式的字符串轉化為日期型。

例:CTOD("2004/7/16")

講明:字符串的日期形式應和當前日期格式一致,否則將

轉化為空日期。

?CTOT函數

功能:將日期時刻形式的字符串轉化為日期時刻型。

例:CTOT("2004/7/1610:10")

(5)測試類函數

?BETWEEN函數

功能:判定一個數據是否在另兩個數據之間,是為真,否

則為假。

例:BETWEEN(2,1,16),BETWEEN("2","1","16")

?EMPTY函數

功能:判定一個數據是否空值(p76表3.7),是為真,否

則為假。

例:EMPTY(0),EMPTY("0"),EMPTYEMPTY("

"),EMPTY({})

?VARTYPE函數

功能:判定一個數據的類型。

例:VARTYPE(A)

4、典型函數介紹

?條件函數

用法:HF(邏輯型表達式,表達式1,表達式2)

功能:如果邏輯型表達式的值為真,則表達式1的值作為

函數值,否則,表達式2的值作為函數值。

例:函數IIF(X>10,'AAA'BBB')

摸索:當變量X分別取值10、0、100時,函數nF(X>10,'

AAA',IIF(X<10/BBB'/CCC'))的值。

?宏替換函數

用法:&字符型變量.

功能:用字符型變量的值(不帶定界符)替換整個宏替換

函數。

例:假設A=,76+28',咨詢表達式1+A和1+&A.分別等

價于什么?

講明:

(1)該函數是一個十分有用又十分專門的一個函數。

(2)宏替換函數顯現在字符串中時也還有效,而其它函數

顯現在字符串中時被當作一個個字符處理。即:

<A='ABC,則X&A.Y,等價于XABCY,;而,ABS(-86),卻

不等價于,861

(3)宏替換函數最后的小數點是宏替換函數的終止標記。

當宏替換函數和其后的內容能夠明確區分清晰時,該終止標記

能夠省略。

摸索:下面的表達式中,哪些宏替換函數的終止標記能夠

省略?假設A='76+28\

&A.+52,&A.6-285&A.BCDEFG'。

第四章數據庫及其操作

一、認識VFP數據庫

1、VFP中,數據庫是一個擴展名為DBC的文件,但為了

儲存與數據庫有關的其它信息,VFP還會自動地為每個數據庫

文件建立同差不多名但不同擴展名的另兩個文件:擴展名為D

CT的數據庫備注文件和擴展名為DCX的數據庫索引文件。

摸索:假設我們建立了數據庫SJK.DBC,咨詢:實際會產

生哪些文件?

2、VFP數據庫要緊由表組成。組成數據庫的表能夠是一個,

也能夠是多個。

3、VFP中,表是一個擴展名為DBF的文件。

4、VFP中,表就相當于我們日常生活中所見的各種表格。

日常表格中,表頭上所列出的各項在VFP中叫字段;表格中的

一行內容在VFP中叫作一個記錄。,拶(字段與記錄)

5、盡管數據庫包含表,但數據庫文件和表文件從文件夾中

看差不多上獨立的文件。t(數據庫和表的關系)

6、VFP中,數據庫建立的一樣步驟是:

(1)建立數據庫。

(2)在數據庫中建立表。

(3)重復(2),創建數據庫中的其它表。

(4)關閉數據庫。

講明:關閉數據庫后,其所屬的表也被關閉。或者,先關

閉表,再關閉數據庫。

7、VFP中,使用數據庫的一樣步驟:

(1)先打開數據庫,再打開表。或直截了當打開表(現在,

表所屬的數據庫也會自動打開)。

(2)對表進行操作。

(3)關閉數據庫。或者先關閉表,再關閉數據庫。

二、數據庫及表的差不多操作

1、建立數據庫

?菜單方法

?命令方法

CREATEDATABASE[數據庫]

講明:

1)命令中,不指定要建立的數據庫時,會顯現對話框,通

過對話框來選擇數據庫的位置及提供數據庫名。

2)命令中,指定要建立的數據庫時,能夠省略數據庫擴展

名。如果要建立的數據庫文件不想放在默認名目,則文件名前

面還必須提供文件位置。如果文件位置或文件名中用到空格,

則所提供的內容前后應加上字符定界符。

3)菜單方式建立數據庫后,會自動顯示出“數據庫設計器”

窗口(我們今后簡稱為“數據庫窗口”),命令方式建立時可不

能。執行“MODIFYDATABASE”命令可顯示數據庫窗口。

4)不管顯示不顯示數據庫窗口,新建的數據庫都將是打開

狀態。即關閉數據庫窗口,不表示關閉數據庫。

5)分別建幾個數據庫時,這些數據庫差不多上打開狀態,

但叫“當前數據庫”的只有一個。從“常用”工具欄能夠看出

差不多打開的數據庫、當前數據庫,也能夠選擇當前數據庫。

2、在數據庫中建立表

?菜單方法

?命令方法

CREATE[表]

講明:

1)命令中,不指定要建立的表時,會顯現對話框,通過對

話框來選擇表的位置及提供表名。

2)命令中,指定要建立的表時,能夠省略表擴展名。如果

要建立的表文件不想放在默認名目,則文件名前面還必須提供

文件位置。如果文件位置或文件名中用到空格,則所提供的內

容前后應加上字符定界符。

3)一個表的組成字段稱為表的結構。

4)如果當前有多個數據庫是打開狀態,則新建的表將屬于

當前數據庫。

5)表建好后,自動處在打開狀態,但看不到表內容。

6)一樣情形下,打開一個表將自動關閉差不多打開的表。

即一樣情形下,只能打開一個表。當前所打開的表從狀態欄能

夠看出有關信息。從狀態欄所看到的表稱為當前表。

3、關閉表和數據庫

關閉表

?命令方法

USE

關閉數據庫

?命令方法

CLOSEDATABASES&&關閉當前數據庫

CLOSEDATABASESALL&&關閉所有數據庫

4、打開數據庫

?菜單方法

?命令方法

OPENDATABASE[數據庫]

講明:用“OPENDATABASE”打開數據庫時并不自動

顯示數據庫窗口,要想顯示,須再執行“MODIFYDATABAS

E”命令。

5、打開表

?菜單方法

?命令方法

USE表[EXCLUSIVE/SHARED]

講明:

1)選擇EXCLUSIVE選項時,表以獨占方式打開;選擇S

HARED選項時,表以共享方式打開。省略時,默認以獨占方

式打開。獨占方式打開時,表的結構能夠修改,表的記錄能夠

刪除。

2)一樣情形下,新打開一個表時,之前打開的表會被關閉。

6、修改表結構

?菜單方法:“顯示|表設計器”

?命令方法:MODIFYSTRUCTURE

講明:修改一個表結構前,相應表必須打開。

三、表的有關操作

專門提示:對表進行任何操作前,該表都要預先打開。

1、表窗口及其操作

?表窗口的打開

菜單方式:“顯示|掃瞄二

命令方式:

命令1:BROWSE[LAST]

命令中的LAST選項將使表窗口以上次的顯示外觀顯現。

命令2:EDIT

命令3:CHANGE

命令4:APPEND

?講明:

(1)表窗口有兩種顯不方式:掃瞄方式和編輯方式。

(2)表窗口有兩種工作方式:追加方式和非追加方式。使

用APPEND命令打開的表窗口自動處在追加方式,其余均處在

非追加方式。如果處在非追加工作方式,能夠將其轉換為追加

方式;反之不行。

(3)表窗口顯現后,能夠對表的內容進行任意的修改。所

以,如果表是以只讀方式打開時,則禁止修改。命令方式打開

表示,加上“NOUPDATE”選項表示以只讀方式打開。

(4)表窗口顯現后,VFP會自動多出一個“表”菜單,從

中,我們能夠進行許多操作。

2、定位記錄指針

?記錄指針的認識

(1)表中有許多記錄,為了指示出當前可操作的記錄,V

FP自動為打開的表安排一個“記錄指針:記錄指針所“指”

的記錄稱為當前記錄。

(2)一個表剛打開時,記錄指針指向1號記錄。隨著操作

的進行,記錄指針會自動改變其指向。我們也能夠人為移動記

錄指針。

(3)記錄指針的位置能夠從狀態欄看出。也可通過RECN

0()函數值獲知。

?記錄指針的定位

GOTOP或GOTOTOP

將記錄指針指向表中最前面的記錄。

講明:在記錄指針差不多指向最前面記錄的情形下,如果

讓指針再前移“一步”,則稱”指向了表的開頭“,這時,函數

BOFO的值將為真。在指針差不多指向表頭的情形下,再“越

雷池一步”,就會出錯。

GOBOTTOM或GOTOBOTTOM

將記錄指針指向表中最后面的記錄。

講明:在記錄指針差不多指向最后面記錄的情形下,如果

讓指針再后移“一步”,則稱“指向了表的末尾”,這時,函數

E0FO的值將為真。在指針差不多指向表尾的情形下,再“越

雷池一步”,就會出錯。

GO記錄號或GOTO記錄號或

記錄號

將記錄指針指向指定記錄號的記錄。

講明:VFP會自動對表中的記錄進行編號,這確實是我們

所講的記錄號。記錄號從1開始,記錄號的順序反映了記錄在

表中的實際順序。

SKIP

記錄指針后移一個記錄。

SKIPn(n為正整數)

記錄指針后移n個記錄。

SKIP-n(n為正整數)

記錄指針前移n個記錄。

?摸索:將記錄指針指向表頭,查看當前記錄號;將記錄

指針指向表尾,查看當前記錄號。所顯示的記錄號與你認為的

不同嗎?你不能懂得嗎?

3、在主屏幕顯示記錄

?LIST

顯示表中全部記錄。顯示完畢,記錄指針指向表尾。

?LIST范疇

顯示指定范疇內的記錄。范疇:ALL一全部記錄,NEXT

n一當前記錄開始的n個記錄,REST—當前記錄到最后一個記

錄,RECORDn—第n號記錄。

?LISTFOR條件

顯示表中符合條件的記錄。

?LISTFOR條件范疇或LIST范疇FOR

條件

僅顯示指定范疇內符合條件的記錄。

?DISPLAY

顯示當前記錄。

?DISPLAY范疇

同LIST范疇。

?DISPLAYFOR條件

同LISTFOR條件。

?DISPLAYFOR條件范疇或DISPLAY范

疇FOR條件

同LIST范疇FOR條件。

?講明:

(DLIST命令和DISPLAY命令除了第一種用法上功能有

差別外,另外一個差別是:當顯示的記錄信息多時,LIST命令

不能一屏一屏顯示記錄信息,而DISPLAY命令能夠。

(2)命令中,若加上OFF選項,則不顯示記錄號。

(3)能夠指定顯示字段,格式:FIELDS字段名1,字段

名2,……o

(4)如果期望記錄信息送往打印機,可加上TOPRINT

ER選項。

(5)VFP命令中,若同時顯現多個選項,一樣它們能夠以

任意順序顯現。

(6)留意顯示前后記錄指針位置的變化。

4、向表中添加記錄

?INSERT

當前記錄之后插入一空記錄,同時打開表窗口以便填寫內

容。

?INSERTBLANK

當前記錄之后插入一空記錄,但不打開表窗口。

?INSERTBEFORE

當前記錄之前插入一空記錄,同時打開表窗口以便填寫內

容。

?INSERTBEFOREBLANK

當前記錄之前插入一空記錄,但不打開表窗口。

?APPEND

在表的最后添加一空記錄,同時打開表窗口以便為空記錄

填寫內容。

?APPENDBLANK

在表的最后添加一空記錄,但不打開表窗口。

?APPENDFROM表[FOR條件]

將指定表中記錄有條件或無條件地追加到當前表后。命令

中指定的表無須打開。

例:先分別查看“學生Ldbf”和“學生.dbf”的內容,然

后將“學生Ldbf”中年齡小于20的記錄追加到“學生.dbf”中,

并查看追加后的“學生.dbf”內容。

5、自動替換字段內容

命令格式:

REPLACE字段1WITH表達式1,字段2WITH

表達式2,……[范疇][FOR條件]

功能:對表中指定范疇內符合條件的記錄進行替換。若省

略范疇和條件,只對當前記錄進行替換。

例:對學生表進行如下替換:

?每人獎學金為1000元。

?按照出生日期重新運算年齡(CEILING)

?85年前(包括85年)出生的學生獎學金增加100元。

?男生獎學金加100,女生獎學金加150。

6、記錄的刪除

?邏輯刪除(即在記錄上做個刪除標記,并不是確實刪除)

命令格式:DELETE[范疇][FOR條件]

功能:刪除指定范疇內符合條件的記錄。省略范疇和條件

時,只刪除當前記錄。

講明:如果當前記錄被邏輯刪除,則函數DELETEDO

值為真。

?邏輯刪除記錄的復原(即取消刪除標記)

命令格式:RECALL[范疇][FOR條件]

功能:復原指定范疇內符合條件的記錄,如果它被邏輯刪

除的話。省略范疇和條件時,只復原當前記錄。

講明:也能夠在表窗口中,通過鼠標或Ctrl+T鍵邏輯刪除

/復原記錄。

?物理刪除(確實將記錄從表中刪除)

命令1:PACK

功能:物理刪除差不多邏輯刪除的記錄。

命令2:ZAP

功能:物理刪除表的全部記錄,不管其是不是已邏輯刪除。

7、查找記錄

命令格式:LOCATEFOR條件[范疇]

功能:從表中找出符合條件的第一個記錄。

講明:

(1)找到如此的記錄后,只是將記錄指針指向所找到的記

錄,并可不能顯示出所找記錄的內容。

(2)若要查找表中符合條件的下一個記錄,使用Continu

e命令。

(3)找到記錄時,函數FOUND()值為真,否則為假。

摸索:找不到符合條件的記錄時,記錄指針將指向何處?

8、獲知表中記錄個數

從狀態欄能夠看出,也可通過RECCOUNT()函數值獲

四、索引

1、索引的認識

?索引是為了在不改變表中記錄順序的情形下得到新的記

錄順序。

假設學生表:

記錄號學號姓名年齡

12003001張三21

22003002李四20

32003003王五19

42003004張三18

52003005趙六20

如果我們期望得到以“姓名”升序排列的記錄順序,做法

是:建立一個以“姓名”升序排列的如下“索引表”:

姓名記錄號

李四2

王五3

張三1

張三4

趙六5

從該“索引表”中,就能夠看出“姓名”升序排列下的記

錄順序。該“索引表”就叫作上述學生表的一個索引。

一個表,其索引能夠有多個。

?索引的有關概念

(1)索引名:為建立的索引所取的名字。

(2)索引項(索引關鍵字或索引表達式):建立索引的依

據,如上例中的“姓名”字段。索引項能夠是一個字段,也能

夠是一個表達式。如期望建立一個如此的索引:以“姓名”升

序排列,當記錄的“姓名”相同時,再以“年齡”的升序排列。

這時,索引項確實是:姓名+年齡?索引如下:

姓名+str(年記錄號

齡,2)

李四202

王五193

張三184

張三211

趙六205

?索引的類型

(1)主索引:如果不同記錄,其索引項值要求不同,貝L

如此的索引能夠定義為主索引。

(2)候選索引:如果不同記錄,其索引項值要求不同,貝11,

如此的索引也能夠定義為候選索引。

主索引與候選索引的區別是:一個表,只能有一個主索弓1,

能夠有多個候選索引。

(3)一般索引:對索引項值無限制要求的索引可定義為一

般索引。

(4)唯獨索引:關于索引項值相同的記錄,在索引中只記

錄第一個記錄。有這種要求的索引應定義為唯獨索引。3(唯

獨索引圖解)

?索引的儲存

(1)索引不是和表一起儲存在表文件中,而是單獨儲存到

索引文件中。

(2)索引文件的類型:

單索引文件:一個索引文件只能儲備一個索引。單索引文

件的擴展名為IDXo

復合索引文件:一個索引文件能儲備多個索引,不同索引

以索引名進行區分。復合索引文件的擴展名為CDX。如果表的

某個復合索引文件,其差不多名與表同名,則該復合索引文件

稱為結構化復合索引文件,否則稱為非結構化復合索引文件。

(3)明顯,一個表的單索引文件能夠有多個,非結構化復

合索引文件也能夠有多個,但結構化復合索引文件只能有一個。

實際使用中,以結構化復合索引文件最常用。

?索引的其它認識

(1)同數據庫和表一樣,索引也只有當其是打開狀態時,

索引才能使用。新建一個索引時,其自動處于打開狀態;結構

化復合索引文件中的索引,隨表的打開而自動打開;單索引文

件及非結構化復合索引文件中的索引必須人為打開。

(2)當多個索引被打開時,能夠指定某個索引為當前索弓

當前索引也能夠沒有。如果沒有當前索引,則對表進行處理時,

以表中的記錄順序進行(例LIST、GOTOP等);如果有當前

索引,則對表進行處理時,以當前索引中的記錄順序進行(例

LIST、GOTOP等)。

(3)當索引處在打開狀態時,索引的內容會隨表內容的改

變而自動調整。也確實是講,當一個索引處在關閉狀態時,表

內容改變后,索引內容得不到及時調整,這就導致索引內容的

“老化”。為此,能夠打開索引,對其進行重新索引即可。可見,

表的索引一樣都要讓其處在打開狀態。

2、索引的有關操作

?索引的建立

(1)結構化復合索引文件中索引的建立

在“表設計器”中建立:見演示。

命令方式建立:

INDEXON索引項TAG索引名[ASCENDING/DESCE

NDING][UNIQUE/CANDIDATE]

講明:UNIQUE一建唯獨索弓],CANDIDATE—?選索弓1,

不指定為一般索引。

(2)單索引文件中索引的建立

INDEXON索引項TO單索引文件[ASCENDING/DES

CENDING][UNIQUE/CANDIDATE]

(3)非結構化復合索引文件中索引的建立

INDEXON索引項TAG索引名OF非結構化復合索引

文件[ASCENDING/DESCENDING][UNIQUE/CANDIDATE]

講明:新建的索引自動處于打開狀態,且用命令方式建立

的索引為當前索引(“表設計器”中建立的索引不被自動設為當

前索引)。

?索引的打開

(1)結構化復合索引文件中索引的打開

隨表的打開而打開。索引打開后,沒有指定當前索引。

(2)單索引文件、非結構化復合索引文件中索引的打開

K和表一起打開H

USE表INDEX索引文件1,索引文件2,……

K表打開后打開X

SETINDEXTO索引文件1,索引文件2,[ADD

ITIVE]

講明:一個或一批索引文件打開后,之前打開的索引文件

(不包括結構化復合索引文件)將自動關閉,除非命令中有“A

DDITIVE”選項。

?設置當前索引(又稱主控索引)

SETORDERTO索引號[ASCENDING/DESCENDING]

索引號從1開始編號,編號順序:單索引文件中索引、結

構化復合索引文件中索引、非結構化復合索引文件中索引。

SETORDERTO[TAG]索引名[ASCENDING/DESC

ENDING]

單索引文件中索引的索引名為單索引文件的差不多名。

講明:

(1)如果顯現索引名重名情形,應在索引名后指明其所在

的復合索引文件:OF復合索引文件。

(2)當前索引也能夠重新指定升、降序,不重新指定為建

立索引時的升、降序。

(3)SETORDERTO或SETORDERTO0表示不指定

當前索引。

(4)也能夠在打開索引時指定當前索引。這時,在打開索

引命令中加上如下選項即可:

ORDER索引號[ASCENDING/DESCENDING]

ORDER[TAG]索引名[ASCENDING/DESCENDING]

(5)表窗口顯現后,選擇“表/屬性”菜單功能能夠了解

當前打開的索引、索引的順序,也能夠設置當前索引。

(6)ORDER。函數能夠了解當前索引的索引名。無當前索

引時,為空串。

?重新索引

命令:REINDEX

功能:對所有打開的索引進行重新索引。

講明:當表窗口顯現后,也能夠通過“表”菜單進行重新

索引。

?按照索引項查找記錄

格式:SEEK索引項值

功能:按照當前索引,找出指定索引項值的第一個記錄,

將記錄指針指向該記錄。如未找到,記錄指針指向表尾。

講明:

(1)“索引項值”處能夠是一個表達式。

(2)找到后,函數FOUND()值為真,否則為假。

(3)要想找到相同索引項值的下一個記錄,使用SKIP命

令即可,不能使用CONTINUE命令。

(4)如果想在非當前索引中,按照其索引項進行查找,則

命令中應指定一個索引:

ORDER索引號[ASCENDING/DESCENDING]

ORDER[TAG]索引名

溫馨提示

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

評論

0/150

提交評論