程序設計語言VFP課件_第1頁
程序設計語言VFP課件_第2頁
程序設計語言VFP課件_第3頁
程序設計語言VFP課件_第4頁
程序設計語言VFP課件_第5頁
已閱讀5頁,還剩421頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

程式設計語言VFP

DataBase第2章VFP語言基礎2.1數(shù)據(jù)類型適應現(xiàn)實世界的各種各樣的數(shù)據(jù)類型用來表示數(shù)字的數(shù)值型、用來表示日期的等等

用來表示姓名等資訊的字元型什么是數(shù)據(jù)類型?哪兩個方面的含義?數(shù)據(jù)類型:數(shù)據(jù)對象的取值集合

以及對它可施行的運算的集合怎樣指定數(shù)據(jù)類型字段——在創(chuàng)建時提前規(guī)定

舉例:cj數(shù)值型寬度3位,沒有小數(shù)部分變數(shù)——由其中保存的值來確定

x=100數(shù)值型100VFP的基本數(shù)據(jù)類型只適用於表字段的數(shù)據(jù)類型*只適用於表的字段哪些類型在內(nèi)存中佔用的位元組固定?字元型、數(shù)值型、浮點型的在內(nèi)存中佔用的位元組不固定,其他類型佔用固定位元組2·2 數(shù)據(jù)存儲容器數(shù)據(jù)容器:用來保存數(shù)據(jù)的常量、變數(shù)、數(shù)組、記錄和對象2.2.1VFP中的命名規(guī)則VFP中的命名規(guī)則

①開頭字母、漢字、下劃線

②包含字母、漢字、下劃線、數(shù)字

③長度限制

自由表的字段名、表的索引標識名≤10

其他1~128個字元

④哪些字符不能使用避免使用保留字

usecreatedo等舉例下列名稱為什麼合法?

cVarnVar2x_2sum_of_score

nSum_score_aer_gz_1

下列名稱為什麼不合法?

2x2_xnum-of-xsnsum&score

_aver#gzuse2.2.2常量在所有操作過程中保持不變不同類型常量的特點?不同類型的常量有不同的定界符不同類型的常量允許進行不同的運算常量類型數(shù)值型0~9+-3.12E28

貨幣型$200

字元型‘’“”[]

邏輯型.f..t..y..n.

日期型{//}{--::}{}空日期日期格式傳統(tǒng)日期格式受到set命令的影響setdatetosetcenturyon|offVFP5.0以前版本的默認格式系統(tǒng)默認日期格式

美國{mm/dd/yyhh:mm:ss[a|p]}{09/20/981:05:50}可以通過更改區(qū)域設置來更改日期格式setdatetoymdsetdatetolongsetcenturyon嚴格日期格式

不受set命令的影響VFP6.0以後版本的默認格式?在VFP6.0以後版本中怎樣使用傳統(tǒng)格式要是用傳統(tǒng)的格式需要使用setstrictdateto0什麼作用?編譯時常量什麼時候可以使用?在程式中(非交互方式下)本質(zhì)?命名的資料項目?格式#define 常量名 值引入原因:簡便、批量修改2.2.3變數(shù)給存儲位置一個標號(變數(shù)名),

存儲內(nèi)容是變化的,由程式(命令)來修改記憶體變數(shù):由用戶定義的記憶體中的一個(組)存儲單元,變數(shù)名是存儲位置的符號標誌。其值可以由程式操作修改。

使用過程中該存儲單元中存放的數(shù)據(jù)在程式操作期間通過變量名去修改變數(shù)創(chuàng)建變數(shù)VFP的變數(shù)不需要特殊聲明=(賦值)、STORE值TO變數(shù)名訪問變數(shù)字段變數(shù)與記憶體變數(shù)同名時,字段變數(shù)優(yōu)先此時要引用記憶體變數(shù),在變數(shù)名前加M.或M->

xm=1234

?xm

?m.xm

?m->xm例子:當前工作區(qū)打開了JS表,當前記錄的xm字段的值為“王一平”?xm,m.xm何時不返回1234?控制變數(shù)的訪問程式:為解決問題設計的一連串的指令電腦的存儲程式控制的原理副程式的提出:

程序太長、有重復操作、提高程序的可讀性作用域:應用程式運行(記憶體變數(shù))

創(chuàng)建變數(shù)的工作區(qū)(字段)PRIVATE 私有 當前及副程式

(若程序中未定義,默認為私有)

LOCAL 局部 當前

PUBLIC 公共(全局)所有運行的程式中

(只能說明一次)

命令窗口中變量均為PUBLIC型

Mainpublicxx=1dosub1Sub?”sub”,xdosub_subSub_sub?“sub_sub”,x公共(全局)在當前工作期,任何程式都能使用全局變數(shù)Maindosub1?“main”,ysubprivateyy=3dosub_sub?”sub”,ySub_sub?“sub_sub”,y私有私有變數(shù)的作用範圍是當前程式及副程式Mains=1dosub1?“main”,ssubprivatess=3dosub_sub?”sub”,sSub_sub?“sub_sub”,s私有私有變數(shù)允許在當前程式中使用調(diào)用程式(上級程式)中的同名變數(shù),不影響變數(shù)的原始值局部局部變數(shù)只能在當前程式中使用,不能被更高層或更低層的程式訪問Maindosub1?“main”,zsubLocalzz=5dosub_sub?”sub”,zSub_sub?“sub_sub”,z上機檢驗程式MainclearpublicxPublicsx=1s=12345dosub?"main",x?"main",siftype('y')!="U" ?"main中y",yelse ?"main中y不存在"Endififtype('z')!="U" ?'main中z',zelse ?"main中z不存在"EndifSubprivatexprivateyPrivateslocalzx=5y=2s=8z=60dosub_sub?"sub中x",x?"sub中y",y?"sub中s",s?"sub中z",zSub_sub?"sub_sub中x",x?"sub_sub中y",y?"sub_sub中s",siftype('z')!="U" ?"sub_sub中z",zelse ?"sub_sub中z不存在"endif記憶體變數(shù)的保存與恢復顯示:displaymemoerylike清除:clearmemoery保存到檔saveto檔案名

(擴展名為mem)從檔恢復:restorefrom

2.2.4數(shù)組(記憶體中有序的數(shù)據(jù)值系列)數(shù)組:由一系列被稱為元素的有序數(shù)據(jù)值構成。記憶體中連續(xù)的記憶體單元多個變數(shù)共用同一個名稱,並且連續(xù)存放在一個空間裏的數(shù)據(jù)集合數(shù)組元素的表示數(shù)組名(序號)數(shù)組的聲明 (任意數(shù)據(jù)類型)私有DECLARE 數(shù)組名(下標1)DIMENSION 數(shù)組名(下標1,下標2)公用 PUBLIC 數(shù)組名(下標1)局部 LOCAL 數(shù)組名(下標1)聲明之後,每個元素被默認賦予.F.值,在賦值時確定具體類型不能對已定義的數(shù)組再定義,但可以更改維數(shù)舉例dimensiondd(8)

dd(5)=3

dimensiondd(3,3)

2維數(shù)組在內(nèi)存中也要順序存放,

順序先行后列存放dd(1,1)dd(1,2)…

因此1維數(shù)組和2維數(shù)組在某種程度上等價

?dd(3,2)

結果為3,等價與dd(5)為數(shù)組元素賦值給某個元素賦值數(shù)組名(I,J)=值store給所有元素賦相同值 數(shù)組名=值

此時數(shù)組名代表所有數(shù)組元素用表數(shù)據(jù)給數(shù)組賦值?當數(shù)組名獨立出現(xiàn)在=後時,代表什麼

數(shù)組的第一個元素x=dd等價於xx=dd(1)數(shù)組名單獨出現(xiàn),代表什麼意思?2.2.5字段字段型變數(shù)的類型由設計階段決定(表設計器、CREATETABLE)字段變數(shù):字段中的值隨指針的移動而變化,所以可視字段為變數(shù)2.2.6對象類對於擁有數(shù)據(jù)和一定行為特徵對象集合的描述例:汽車類—四輪、發(fā)動機、燃料、可以行駛對象類的實例,屬性、方法、事件例:黑白相間的足球被踢

進了球門

特徵發(fā)生了什麼事執(zhí)行了什麼動作創(chuàng)建對象CreateObject()函數(shù)mf=createobject("form")

mf.show

mf.backcolor=rgb(255,0,255)

mf.circle(100,100,100)2.2.7不同數(shù)據(jù)容器作用域的差異編譯時常量

只在程式中使用,作用域為私有對象的屬性

通過對象和對象層次被引用

例:汽車.發(fā)動機.燃料類型=”汽油”2·3 運算符操作符可用來處理同類型的數(shù)據(jù)(大多數(shù)時候)數(shù)值操作符優(yōu)先順序高到低() **或^ */ %(取餘數(shù)) +-%(取餘數(shù))的結果中符號同除數(shù)的符號6%56%-5字元操作符 (字元型、備註型)

+兩個字串直接相連結果為字串

- 第一個字串去掉尾部空格與第二個字串相連

$ 第一個字串是否包含在第二個字串中結果為邏輯值?“I”-“l(fā)ove”-“peace!”?“face”$“happyface”運算符日期和日期時間操作符(日期、整數(shù))

+日期+N今天後的第五天

-日期-N今天前的第五天

日期-日期(返回N)開學和春節(jié)之間有幾天邏輯操作符 (邏輯數(shù)據(jù))優(yōu)先順序大到?。ǎ?、NOT或!、AND、OR例:4>2OR2>3ANDNOT“3”$“123”

4>2OR(2>3AND(NOT(“3”$“123”)))

關係操作符用於同種類型的比較,包括字元、備註 和數(shù)字相關的類型、日期、邏輯型(真>假)日期比較:數(shù)字越大,日期越大,越後發(fā)生的日期越大

?{9/20/99}-{9/15/99}字符串比較:從左到右逐個比較,字元不同則根據(jù)字元排序序列決定兩個字串的大小,字串比較的結果還受到是否精確比較的影響漢字字元一般按拼音順序小到大,英文從小到大設置字元的排序序列**大小寫英文字元比較受VFP設置影響“工具”——“選項”——“數(shù)據(jù)”選項卡machine 按ASCII碼,大寫<小寫

pinyin 大寫>小寫

stroke大寫>小寫也可以使用set命令Setcollateto“machine”

Setcollateto“pinyin”

Setcollateto“Stroke”字串精確比較用=進行字串比較,結果受到系統(tǒng)環(huán)境的影響SETEXACTOFF

左串長右串短時,將左串截去與右串比

?“abcde”=“abc”“abcde”=“abc”返回.T.SETEXACTON

將短的字串加空格至長度相等,再精確比較

?“abcde”=“abc”“abcde”=“abc”用==進行字串的精確比較?“a”==“”

==

字串的精確匹配(每一位)?"a"=""為什麼有時會返回.t.?問題一般情況下,操作符處理的都是同種類型的數(shù)據(jù)。操作符可以處理不同類型的數(shù)據(jù)嗎?

如果可以舉例說明。

各類操作符優(yōu)先順序?

數(shù)值、字元、邏輯、日期—>關係—>邏輯2·4函數(shù)引入:在系統(tǒng)中有一些經(jīng)常使用的運算或功能,比如:對一個字串取子串,今天是幾號等。對這些常用的運算或功能可以預先編制好程式代碼,並加以命名,供用戶或程式調(diào)用,稱之為函數(shù)分類:系統(tǒng)函數(shù)用戶自定義函數(shù)函數(shù)函數(shù)定義:是一種預先編制好的程式代碼,可供用戶或程式調(diào)用。接受0個或多個參數(shù),返回一個值。函數(shù)的格式函數(shù)名([參數(shù)1[,參數(shù)2[,……]]])SQRT(9)LEFT(“MicroSoft”,5)DATE()

函數(shù)的組成:函數(shù)名SQRTLEFTDATE0個或多個參數(shù)9MicroSoft5無一個返回值3Micro今天的日期參數(shù)形參:在編寫函數(shù)時(預先編制程式代碼時),不給定的具體數(shù)據(jù),而是採用符號代表數(shù)據(jù),稱為形式參數(shù),簡稱形參(類似於公式,例如ax2+bx+c=0的根x1,2=(±b+sqrt(b*b-4*a*c))/2中的a,b,c)實參:

在使用函數(shù)時(實際運行程序代碼時)對應符號給定具體的值,稱為實際參數(shù),簡稱實參(x2+8x+6=0中的1,8,6)返回值函數(shù)返回單個值,因此可以將函數(shù)作為運算式的一部分,函數(shù)之間可以嵌套。12345+sqrt(12345)Year(date())round(sqrt(8562),0)2.4.1系統(tǒng)函數(shù)的分類查詢函數(shù)幫助的方法:“幫助”菜單——“幫助內(nèi)容”——“索引”分類:數(shù)據(jù)類、資料庫類、環(huán)境類、輸入輸出類、程式設計類

2.4.2常用函數(shù)介紹注意: Mod函數(shù)的結果符號和除數(shù)相同mod(36,10) mod(36,-10)Round函數(shù)的第2個參數(shù)為小數(shù)位數(shù)為負數(shù)時在小數(shù)點左端包含指定個0round(123456.78,2) round(123456.78,-2)一個漢字字元佔用兩個字元寬度substr(“abcdefgh”,3,4) substr(“老鼠愛大米”,3,4)常用函數(shù)具有對應關係的函數(shù)asc(“ABCD”) chr(65)str(1234) val(“1234”)Dtoc({^2006-8-22}) ctod(“^2006-8-22”)

功能相似的函數(shù)Left(“abcde”,2)substr(“abcde”,1,2)right(“abcde”,3)substr(“abcde”,3)Trim(“acde”)ltrim(“acde”)alltrim(“acde”)常用函數(shù)between(5,9,20) IIF(條件,滿足條件的返回值,不滿足田間的返回值)IIF(cj>60,“及格”,“不及格”)IIF(DOW(DATE())=1ORDOW(DATE())=7,‘今天休息’,‘今天上班’)MessageBox(提示資訊,對話框類型,標題文字)MessageBox(“下雨了還出去春遊嗎?”,4+64+256,“提示”)問題下麵的運算式的意義?IIF(MessageBox(“下雨了還出去春遊嗎?”,

4+64+256,“提示”)=6,“是”,“否”)2.5運算式運算式:通過運算符將常量、變數(shù)、函數(shù)、字段名等組合起來可以進行計算的運算式。運算式的求值結果為單個值單個變數(shù)、操作符、常量、函數(shù)、字段名、控件及屬性視為運算式的特例使用:運算式的求值結果為單個值,所以用到常量的地方都可以使用運算式運算式字元運算式字元型、備註型、字元操作符日期運算式日期型、日期時間型、數(shù)值型、日期操作符算術運算式和數(shù)值有關的類型、算術運算符邏輯運算式邏輯型、邏輯操作符從左自右,算到不必算為止名稱運算式名稱運算式:

是由圓括號括起來的一個字元運算式,該運算式也可以是單個變數(shù)或數(shù)組元素,Use(“c”+“j”)Use(substr(“abcj”,3)X=“cj”use(x)Dimensionaa[8]aa[2]=“cj”use(aa[2])用來替換命令和函數(shù)中的名稱,從而為VFP的命令和函數(shù)提供靈活性。字段名、變數(shù)名、窗口名、菜單名、檔案名、對象名名稱運算式用途例1:流覽一個用戶需要的表 input“請輸入要流覽的表”tobm

use(bm) brow

use例2:在主窗口顯示用戶選擇的文本檔mm=getfile(“txt”,”選擇文本檔”)type(mm)宏替換宏替換與名稱運算式具有相似的作用,可使用宏替換的方法用記憶體變數(shù)替換名稱,在使用宏替換時,將連字元(&)放在變數(shù)前,告訴VFP將此變數(shù)的值當作名稱使用宏替換作為名稱使用

x=“cj”

use&x

等價

use(x)宏替換組成:由&和一個字元變數(shù)組成,使用一個英文句號.結束宏替換運算式宏替換運算式的結果與字元變數(shù)的值相關

字元變數(shù)的值

宏替換運算式值為數(shù)字串 數(shù)字串對應的數(shù)字X=“123”?&X123為非數(shù)字串

為字串對應的變數(shù)的值X=“Y”?&X找不到變數(shù)YY=“ABCDE”?&XABCDE宏替換 宏替換與名稱運算式的區(qū)別在運算式中gg=3456hh=”gg”

?(hh)=>gg

?&hh=>3456(gg的值)英文句號的作用

v=”abc”

v1=”ggg”

?”pp&v12”?結果應該是“ppggg2”還是”ppabc12”?”pp&v1.”?“pp&v.1”

宏替換可以參與運算例1:下麵程式運行的結果為______:

I=“1”

J=“2”

X12=“Good”

?X&I&J例2:下麵程式運行的結果為______:

x='1‘

y='2‘

c='x+y‘

?&cx=1y=2c=“x+y”?&c2.6空值空值表示不確定的值,用NULL或.NULL.表示空值具有以下特點等價於沒有任何值與0、“”、空格不同排序優(yōu)先於其他數(shù)據(jù)(不論昇冪或降序)大多數(shù)函數(shù)均可使用 SQRT(NULL)NULL可以出現(xiàn)在任何使用值或運算式的地方Null不是一種數(shù)據(jù)類型,只是一個值

?type(“.null.”) UUndefined

X=100X=.NULL.?TYPE(“X”)N空值的賦值和判斷賦值變數(shù):變數(shù)名=.NULL.字段CTRL+0(設字段空值)判斷使用ISNULL函數(shù)判斷空值ISNULL對於空值返回.T.ISNULL對於0和空白或空字元串返回.F.EMPTY和ISBLANK對於空值返回.F.EMPTY函數(shù)對於0和空白或空字元串返回.T.ISBLANK函數(shù)對於空白或空字元串返回.T.

EMPTY()ISBLANK()ISNULL()空字元串.T..T..F.空白字段.T..T..F.0.T..F..F..NULL..F..F..T.在運算式中NULL的行為數(shù)值型、日期型與NULL值運算結果為NULL邏輯型運算結果大多數(shù)為NULL

邏輯運算式中NULL值的行為見表2-14例:.NULL.AND.T.的結果NULL可能為.T.AND.T結果.T.NULL可能為.F.AND.T.結果.F..NULL.AND.T.結果不能確定,所以為.NULL.

舉例null.AND.F.、.null.OR.F.、.null.=.null.三個運算式的值分別為____。

A..null.、.null.、.null.

B..F.、.null.、.null.

C..F.、.null.、.T.

D..F.、.F.、.null.

空值在命令或函數(shù)中的行為使用NULL作為參數(shù)的通用規(guī)則給命令傳遞NULL值將產(chǎn)生錯誤 GO.NULL.

接收.NULL.為有效參數(shù)的函數(shù)其結果也為.NULL. ?SQRT(.NULL.)

向本應接收數(shù)值型參數(shù)的函數(shù)傳遞.NULL.值參數(shù),將產(chǎn)生錯誤。當傳遞NULL值時,ISBLANK()ISDIGIT()ISLOWER()ISUPPER()ISALPHA()EMPTY()返回假值,ISNULL()返回真值SQL語句,判斷用ISNULL,ISNOTNULLSQL合計函數(shù)將忽略NULL值若所有值皆為NULL,則VFP合計函數(shù)產(chǎn)生.NULL.,否則NULL值將被忽略2.7程式設計基礎程式是為了完成某個具體任務而編寫的一系列指令。VFP程式由一系列代碼組成,代碼包括已命令形式出現(xiàn)的指令、函數(shù)或VFP可以理解的任何操作程式設計的目標是為一些處理過程創(chuàng)建模型或者模擬這個過程,把現(xiàn)實世界或構想中的處理過程合乎邏輯地描述為邏輯或運算過程。程式的優(yōu)點與命令窗口輸入命令相比,程式的優(yōu)點程式可以被修改並重新運行可以從菜單、表單和工具欄啟動程式。一個程式可以調(diào)用其他程式具有在命令窗口中不能使用的結構化程式設計命令。程式的創(chuàng)建和運行創(chuàng)建介面方式命令方式ModifyCommand

程式名運行介面方式命令方式Do程式名

with參數(shù)程式檔擴展名Prg

程式檔Fxp偽編譯程序程式結構程式結構主要分為:順序結構分支結構迴圈結構順序結構按照順序依次執(zhí)行程式中的命令例1:創(chuàng)建表單mf=createobject("form")mf.showmf.backcolor=rgb(255,0,255)mf.circle(100,100,100)例2:計算數(shù)據(jù)input“請輸入要計算的數(shù)據(jù)”toxy=5*X^3+6*x^2+7*x+8?y分支結構根據(jù)條件分支的測試結果執(zhí)行不同的操作類型If……else……endif語句Docase……endcase語句分支結構的語法格式IF

條件 命令組1ELSE

命令組2ENDIF條件語句組語句組真假分支結構的語法格式DOCASE

CASE

條件1 命令組1

CASE

條件2 命令組2 ……

CASE

條件N

命令組N

OTHERWISE

其他命令組ENDCASE條件1語句組語句組真假條件2語句組真假條件n真假……語句組分支結構舉例判斷cj是否合格Input“成績”tocjIfcj>=60 ?”合格”Else?”不合格”endif判斷cj的等第Input“成績”tocjDocase casecj>=90 ?”優(yōu)秀”

casecj>=80?”良好”

casecj>=70 ?”中等”

casecj>=60 ?”及格”

otherwise?”不及格”endcase上機實驗練習1、當X>=0時,Y=2X+1

當X<0時,Y=0.5X-12、當X>=0時,Y=2X+1

當X=0時,Y=0

當X<0時,Y=0.5X-1分別使用if、case語句本題迴圈結構使一組語句重複執(zhí)行若干次類型FOR……ENDFORDOWHILE……ENDDOSCAN……ENDSCAN可暫不講解,放在第三章以後迴圈結構的語法格式——FORFOR

迴圈變數(shù)=初值TO終值[STEP

步長]命令組ENDFOR特點:迴圈次數(shù)固定

初值—>迴圈變數(shù)迴圈變數(shù)<=終值步長為負時,要求>=終值是命令組否迴圈變數(shù)+初值FOR迴圈舉例列印10個“*”將上面的程式迴圈執(zhí)行10次列印右側圖形列印右側圖形如果換成這個圖形呢?*****************************************************FOR迴圈舉例計算1+2+3+……10計算1*2*3*……10計算1!+2!+3!+……+10!

計算1+2+3+……10演算法:先對前面的數(shù)求和,保存在一個變數(shù)中,再與當前數(shù)相加S=0ForI=1to10

S=S+IENDFOR?SSS+2S+3S+I……0+1+2+3+4+……+10迴圈結構的語法格式——WHILE迴圈變數(shù)=初值DOWHILE

條件 命令組

改變迴圈變數(shù)的語句ENDDO特點:迴圈次數(shù)不固定

初值—>迴圈變數(shù)條件成立是命令組否改變迴圈變數(shù)DOWHILE迴圈舉例列印10個“*”ASCII字串的反序顯示求級數(shù)

Y=1+1/2+1/3+……+1/N+…當1/N<10^-6結束ASCII字串的反序顯示演算法:①把字串的首字母添加到結果串中;②字串剩下的部分保留③剩下的字串如果不是空串,重複①,否則退出迴圈Store’abcdef’toc,sp=’’dowhilelen(s)>0

p=left(s,1)+p s=substr(s,2)enddo?c+’的反串為’+p

abcdefP(‘’)bcdefP(‘a(chǎn)’)cdefP(‘ba’)包含漢字的字串怎麼辦?漢字 字母left(s,2) left(s,1)substr(s,3) substr(s,2)漢efP(‘’)迴圈結構中的LOOP和EXIT命令一般放在IF嵌套中LOOP短路語句跳過後面的語句進入下一次迴圈例:顯示1~100之間非3的倍數(shù)的所有奇數(shù)EXIT退出語句直接退出迴圈例:找到80~90之間的亂數(shù)

LOOP和EXITFORI=1TO100step2

ifmod(I,3)=0

loop

endif?IENDFORX=0Dowhile.t.x=rand()*100ifx>70andx<80exitendifEnddo?x2.7.3過程與用戶自定義函數(shù)用戶可以將經(jīng)常執(zhí)行的具有某種功能的一段代碼獨立出來,創(chuàng)建一個過程或用戶自定義函數(shù)UDF(UserDefinedFunction)優(yōu)點:減少了代碼量,提高了程式的可讀性和維護性,是結構化程式設計的精髓所在。過程與用戶自定義函數(shù)除了定義方式的差別外,在可以實現(xiàn)的功能和調(diào)用的方法上沒有區(qū)別。過程與用戶自定義函數(shù)的定義不接收參數(shù)Function

函數(shù)名 多行代碼

return

值endfunc

———————————Proc

過程名多行代碼

return值endproc接收參數(shù)Function

函數(shù)名

parameters參數(shù)列表多行代碼

return

值endfunc

———————————Proc

過程名

parameters參數(shù)列表多行代碼

return值endproc過程與用戶自定義函數(shù)的調(diào)用調(diào)用方法

使用Do命令,無法返回值Do函數(shù)名(或過程名)Do函數(shù)名(或過程名)with參數(shù)列表

使用函數(shù)的調(diào)用方式=函數(shù)名(參數(shù)列表)向過程和函數(shù)傳遞參數(shù)parameters()返回最近執(zhí)行的程式的實參的數(shù)目?recno() ?recno(3)

實參的數(shù)目<=形參的數(shù)目無對應實參的形參取值為.F.過程與用戶自定義函數(shù)的調(diào)用過程和函數(shù)的保存方式獨立檔.PRG此時函數(shù)名為檔案名程式中過程和函數(shù) (集中代碼)程式底部過程檔需要用setprocdureto

命令先打開程式檔資料庫的存儲過程需要先打開資料庫執(zhí)行函數(shù)或過程時的查找順序(略)參數(shù)傳遞的兩種方式值傳遞(傳值)主程序中的值不變化(x)Setudfparamstovalue引用傳遞(傳地址)主程序中的值變化@xSetudfparamstoreference123123123123123123456456類似於借講義,值傳遞相當於複印了一份,而引用傳遞相當於直接修改程式設計語言VFP電子與資訊工程學院DataBase第3章表的創(chuàng)建和使用

表的分類根據(jù)是否從屬於資料庫分類:自由表資料庫表自有表和數(shù)據(jù)庫表的差異:自由表具有的特性資料庫表都有,但資料庫表還具有資料庫管理的其他特性自由表自由表資料庫表資料庫表資料庫3.1表結構表:存放在磁片檔中的一張二維表,一張表保存為一個表檔。表的擴展名.DBF表檔.FPT備註檔(當表中有備註字段\通用字段)字段記錄

表的組成:表結構+表數(shù)據(jù)3.1.1表的結構表結構:字段及其屬性1.字段名(命名規(guī)則)2.字段的數(shù)據(jù)類型字母表示:Character currencY

Numeric Float DatedateTimedouBle Integer LogicalMemoGeneral 日期型輸入//、邏輯型表示備註型(不定長的一段文字)通用型(圖片、聲音等)表的結構3.字段寬度(能容納的最大字節(jié)數(shù))除字元性、數(shù)值型和浮點型外,其他類型的寬度固定邏輯型1位元組,日期型8位元組備註型、通用型字段寬度為4位元組,包含的是引用資訊指向真正的備註內(nèi)容和包含真正圖片及聲音的檔。有內(nèi)容時在表中顯示為大寫字母M、G;無內(nèi)容為小寫字母m、g。雙擊打開窗口可以輸入內(nèi)容。表檔.dbf4位元組備註檔.FPT備註型/通用型問題?有多個備註字字段,對應幾個備註檔?如果表結構中存在一個或多個備註型字段,

則存在且僅一個同名的備註檔,擴展名為.FPT,各記錄的備註段、通用字段中保存的是什麼內(nèi)容?各記錄的備註字段——

指出備註文字在備註檔中的位置。各記錄的通用字段——

指向備注文件中所管理的數(shù)據(jù)對象。表的結構4.小數(shù)位數(shù)在數(shù)值型、浮點型、雙精度型中可以指定小數(shù)位數(shù)。字段寬度=整數(shù)寬度+小數(shù)點1位+小數(shù)寬度123.4的寬度是多少?55.空值支持(.NULL.)空值表示沒有任何值或沒有確定值,不等同於數(shù)值0、空字元串或邏輯假值允許接受空值:選定表設計器NULL列在表中輸入空值:按CTRL+0

給變數(shù)賦空值:變數(shù)名=.NULL.3.1.2表結構的創(chuàng)建表設計器:專案管理器窗口新建按扭 創(chuàng)建的表自動添加到專案中菜單檔新建(工具欄)不添加到專案中SQL語句:

CREATETABLE

表名(字段名類型(寬度[,小數(shù)位數(shù)])…)此時字段的類型用字母表示CREATETABLEXS(XHC(8),XBC(2),ZPG,CSRQD)3.1.3表結構的修改表設計器:專案管理器窗口修改按扭對於有專案管理的表USE表名MODIFYSTRUCTURESQL語句:ALTERTABLE

表名ADDCOLUMN

字段名類型(寬度[,小數(shù)位數(shù)])

RENAMECOLUMN

字段名1TO字段名2

DROPCOLUMN

字段名例:ALTERTABLEXSADDCOLUMNBZM問題表設計器只讀怎麼辦?當表共用打開時,表設計器為只讀打開表設計器的命令?

modifystructure3.2表的打開與關閉3.2.1工作區(qū)工作區(qū)是指用以標識一張打開的表的區(qū)域一個打開表並在其中操作表所佔用的區(qū)域,是用以標識一個表的編號的區(qū)域。共有32767個表和工作區(qū)之間的關係?表是保存在磁片上的檔,工作區(qū)是記憶體的區(qū)域,表名和工作區(qū)名可以相同也可以不同一個工作區(qū)只能同時打開一個表,一個表可在多個工作區(qū)同時打開工作區(qū)的標識?工作區(qū)號1~32767別名系統(tǒng)別名ABCDE……

用戶別名(打開表時)工作區(qū)別名工作區(qū)別名在打開表時確定USE表名ALIAS別名1別名為別名1USE表名別名為表名Usexsaliasstustu如何訪問字段?工作區(qū)名.字段名√stu.xh×xs.xh當前工作區(qū)的字段,直接訪問xh當前工作區(qū)正在使用的工作區(qū)稱為當前工作區(qū)設置某個工作區(qū)為當前工作區(qū)SELECT

工作區(qū)號/別名Select1SelectstuSelect0是什麼意思?選擇一個空的工作區(qū)怎麼知道現(xiàn)在的工作區(qū)號?SELECT(0)返回工作區(qū)號叫某個別名的工作區(qū)的區(qū)號?SELECT(”別名”)3.2.2數(shù)據(jù)工作期窗口當前數(shù)據(jù)動態(tài)工作環(huán)境的一種表示每個工作期由一組工作區(qū)組成

分類:默認工作期私有工作期(表單、表單集、報表)設置當前工作區(qū)?窗口菜單數(shù)據(jù)工作期選別名選擇空的工作區(qū),打開表?3.2.3表的打開與關閉1.

表的打開:通過介面打開表菜單:數(shù)據(jù)工作期窗口,專案管理器命令:

USE表名USE表名AGAIN(多次打開)use表名………….IN工作區(qū)號/別名隱式打開——某些操作會自動打開表問題下麵的情況,別名是什麼?打開表未指定別名多次打開表未指定別名如何對其他工作區(qū)操作?….IN工作區(qū)號/別名Use……inBrowin

表的打開與關閉2.表的關閉:介面數(shù)據(jù)工作期窗口,命令USEUSEIN

工作區(qū)號/別名CLOSETABLESCLOSEALLCLOSEDATABASES3.2.4表的獨佔與共享表的獨佔:只能由單個用戶使用共用使用:可以為多個用戶或單個用戶使用1.設置打開表的默認狀態(tài)命令setexclusiveon/setexclusiveoff介面工具菜單選項2.強行用一種方式打開一個表USE表名SHARED/Use表名

EXCLUSIVE多次打開一張表時以第一次的獨佔或共用狀態(tài)為準共用方式打開的表,不能修改結構,不能建立索引等!3.3記錄的處理表結構確定以後,用戶可以添加數(shù)據(jù)到表,並對表中數(shù)據(jù)進行流覽、定位、修改、刪除、複製、統(tǒng)計等操作3.3.1記錄的輸入1、表結構創(chuàng)建後立即輸入記錄2、在流覽狀態(tài)下向表中追加記錄(1)打開流覽窗口專案管理器——“流覽”按鈕打開表後,打開流覽窗口打開表(檔菜單打開、USE表名)打開流覽窗口 流覽窗口打開後出現(xiàn)“表”菜單(顯示菜單的流覽命令、BROWSE命令)(2)追加新記錄表菜單追加新記錄CTRL+Y或視圖菜單——“追加”方式APPENDBLANK(流覽窗口可不打開)記錄的輸入3、使用SQL命令INSERTINTO

表名(字段1…)VALUES(值1…)舉例:4、從其他表追加多個記錄表菜單追加記錄5、備註字段和通用型字段的輸入3.3.2表的流覽與定制1、流覽窗口BROWSEFIELDS…FOR

條件

TITLE…FREEZE…NOAPPENDNODELETENOMODIFY流覽窗口的兩種狀態(tài):編輯、流覽拆分:兩個窗格的記錄指針一致,如果需要同時滾動,表菜單鏈接分區(qū)定制流覽窗口(調(diào)整流覽窗口的格式)流覽窗口打開後,可以通過“表”菜單對記錄進行操作

表的流覽與定制2、記錄的篩選“表”菜單-屬性-數(shù)據(jù)篩檢程式—條件SETFILTERTO

條件

SETFLITERTOXB=“女”3、限制對記錄的訪問“表”菜單-屬性-允許訪問篩選字段-篩選字段SETFILEDSTO

字段列表

SETFILEDSTOXH,XM,XB3.3.3記錄的定位表檔結構記錄指針記錄的開始、結尾標記記錄的定位表檔結構記錄指針標誌用於指示當前處理的記錄位置,可以理解為保存當前記錄號的變數(shù)當前記錄記錄指針指向的那個記錄Recno()測試記錄指針的值BOF()和EOF()記錄指針是否在記錄有效範圍內(nèi)BOF—BeginOfFileEOF—EndOfFileRecCount()表中的記錄數(shù)檔頭(包含表結構資訊)第1條記錄第2條記錄第n條記錄……記錄指針標誌結尾標誌開始標誌?記錄指針情況打開表示記錄指針的情況開始標誌處記錄指針的值1結尾標誌處記錄指針的值reccount()+1表中的記錄情況BOF()RECNO()EOF()無記錄.T.1.T.有記錄.F.1.F.記錄的定位記錄的定位方式絕對定位GOn/GOTOnGOTOPGOBOTTOM相對定位 SKIP+n

(1skip–1bof;nskipeof)(bofskip–1出錯;eofskip出錯)條件定位 Locateforxh=”950101”

記錄定位實現(xiàn)介面:表菜單轉到記錄作用範圍:ALL,Next,Record,Rest運算式生成器命令:注意事項移動到開始或結尾標誌(1skip–1bof;nskipeof)在開始標誌處向前或在結尾標誌處向後移動出錯(bofskip–1出錯;eof--skip出錯)skip、gotop、gobottom相對於記錄的邏輯順序Locatefor……continueLocatefor找到第一條符合條件的記錄Continue接著找第2、3……條3.3.4記錄的修改介面方式的記錄修改(流覽窗口)單個記錄的修改批量記錄的修改“表”菜單——替換字段命令例:學號的首位為9更改為199,首位為0更改為200

條件left(xh,1)=‘9’字段xh替換為“19”+xh範圍all例:更改教師基本工資,教授加600,副教授500,講師400,助教300條件zc=“教授”字段jbgz替換為jbgz+600範圍all

記錄的修改使用SQL命令修改記錄Update表名Set

字段名=運算式

……where條件例:

updatejssetjbgz=jbgz+100

whereyear(date())-year(gzrq)>29記錄的修改使用VFP命令修改記錄Replace

字段with

運算式

for條件例:

closetablesallusejs(要求被操作的表在當前工作區(qū)!)replacejbgzwithjbgz+100for

year(date())-year(gzrq)>293.3.5記錄的刪除標記要刪除的記錄介面方式刪除單個記錄單擊刪除標記列刪除批量記錄表菜單—刪除記錄—刪除記錄窗口

例:刪除所有不及格的成績資訊命令方式DELETEFORM表名

WHERE條件DELETEFROMCJWHERECJ<60DELETE(VFP命令,需要操作的表處於打開狀態(tài))DELETEFORCJ<60INCJ記錄的刪除徹底刪除帶標記的記錄介面方式:表菜單——徹底刪除命令:PACKZAP徹底刪除所有記錄徹底刪除記錄要求表必須在當前工作區(qū)獨佔打開記錄的刪除恢復帶刪除標記的記錄介面方式:表菜單—恢復記錄—恢復記錄窗口單擊刪除標記列命令:

RECALL

對帶刪除標記的記錄的訪問Deleted()檢驗當前記錄是否帶刪除標記控制是否處理(流覽\計算)帶有刪除標記的記錄SETDELETEDON忽略帶有刪除標記的記錄SETDELETEDOFF允許訪問帶有刪除標記的記錄3.3.6數(shù)據(jù)的複製Copyto將當前工作區(qū)中的表複製到其他檔,該檔可以其他類型檔Copyto

目標檔案名fields

字段列表

for

條件

sdf|xls|……

例:copytoxs01forxb=“女”

copytoxs02fieldsxh,xm,xb

copytoxs03xls3.3.7數(shù)據(jù)的統(tǒng)計對當前工作區(qū)打開的表數(shù)據(jù)進行統(tǒng)計Count(計數(shù))Count範圍for條件to變數(shù)

countrestforcj<60

tocfSum(求和)Sum字段運算式列表for條件to變數(shù)列表

sumjbgz,gwjttosgz,sjt

sumjbgz+gwjttosgzjtAverage(平均)average字段運算式列表for條件to變數(shù)列表

averagecjforxh=“050101”topcj3.4表的索引索引的引入索引的組成索引的保存索引的創(chuàng)建修改方法索引的使用3.4.1記錄的順序物理順序:表中的記錄是按照輸入的時間順序存放的,物理順序即輸入順序、存儲順序,記錄號表示了記錄的物理順序。邏輯順序:為了實現(xiàn)對表記錄的快速查詢,可以對表檔中的記錄按某個字段值或某些字段值排序,這種順序稱為邏輯順序。即處理順序,按某個字段值或某些字段值排序排序的意義排序後的記錄便於進行快速查找例:假設有1000個記錄,第999個符合條件比較:未排序999次比較排序9~10次

對於N個記錄,排序後最大查找次數(shù)為M,2m>=N>=2m-1排序的方法排序的方法:按照某個邏輯順序,生成新表檔按照某個邏輯順序,建立邏輯順序號與物理順序記錄號的對照表,並把對照表保存到檔中,稱為索引法索引技術優(yōu)點:建立速度快,佔用空間小對一個表可建立多個對照表(索引)3.4.2索引概述索引是按照索引關鍵字從大到小或從小到大的順序,建立的索引序號和對應的表記錄號的對照表作用:提供了對數(shù)據(jù)的快速訪問,且可以對表中的記錄強制實現(xiàn)唯一性索引關鍵字(索引運算式)用來作為建立索引依據(jù)的一個字段或字段運算式索引內(nèi)容例:xs.dbf中以xh為索引關鍵字的索引p83索引序號記錄號索引關鍵字值1195010125950102369501034495010453950105629501067796020188960203注意事項多字段建立索引運算式的注意事項為字元性運算式時,各字段的前後順序影響排序結果xdh+xbxb+xdh為算術運算式時,按照運算結果進行排序

jbgz+gwjt≠str(jbgz)+str(gwjt)不同類型字段構成一個運算式時,必須轉換為同一類型(通常為字元型)

xb+str(jbgz)dtoc(gzrq,1)+str(jbgz)索引標識(tag)為了區(qū)分一張表的不同索引,每個索引都必須有一個索引名,即索引標識一般索引標識與索引關鍵字相同或相近

索引名索引運算式

xsxhxhxmbxm+xb索引的類型類型關鍵字可否重複一張表建立個數(shù)適用範圍自由表庫表主索引primary否一個否是侯選索引candidate否多個是是普通索引regular是多個是是唯一索引unique是多個是是但在索引檔中重複的值只記錄一次索引檔的種類複合索引檔(存儲多個索引).cdx結構複合索引檔與表檔的主文件名同名,創(chuàng)建時系統(tǒng)自動給定。與表檔一同打開、更新、關閉,可視為表結構的一部分非結構複合索引檔檔案名由用戶給出,不自動打開,不能包含主索引獨立索引檔(只存儲一個索引).idx

不自動打開3.4.3創(chuàng)建結構複合索引用表設計器創(chuàng)建結構複合索引用命令創(chuàng)建結構複合索引Indexon

索引運算式

tag索引標識

ascending|descending

unique|candidate例:普通:indexoncjforkcdh=“01”tagcj01descending候選:indexonxhtagxsxhascendingcandidate唯一:indexonzydhtagzydhunique3.4.4索引的修改和刪除索引的修改表設計器Index命令覆蓋改寫索引的刪除表設計器Deletetag索引名例:

deletetagxsxh,xmb

deletetagall3.4.5索引的使用索引檔的狀態(tài)打開或關閉打開後控制(不控制)表的處理順序打開後的索引,如果沒有被指定起控制作用,則表中記錄仍按物理順序顯示和訪問主控索引在某一時刻對表的顯示和訪問起控制作用的索引主控索引和主索引的區(qū)別?設置主控索引打開表的同時指定主控索引Use

表名

order

索引標識asce|desc

例:usexsorderxsxh打開表後再設置主控索引Setorderto

索引標識asce|descSetorderto關閉主控索引

例:usexs

setordertoxsxh3.4.6利用索引快速定位記錄Seek命令在具有索引的表中使用基於索引關鍵字進行檢索Seek查找內(nèi)容[order索引名]

例1:usexsorderxsxh

seek“950101”

例2:usexs

seek“950101”orderxsxh是否找到用found()檢測.T.找到.F.沒有找到Seek()函數(shù)相當於seek+found()3.4.7索引的其他用法索引的作用:指定記錄的訪問順序快速定位建立表之間的永久關係(資料庫)建立表之間的臨時關係(表單的數(shù)據(jù)環(huán)境)3.5有關表操作的常用函數(shù)Recno()

記錄號 RecCount()

記錄數(shù)Bof()

開始標記 Eof()

結尾標記Deleted()

是否刪除Used()

是否已被使用Field(n)

第n個字段的字段名Fcount()

字段數(shù)注:上面的函數(shù)都可以使用工作區(qū)號或工作區(qū)別名作為參數(shù),返回指定工作區(qū)的情況

例:recno(“xs”)field(2,”cj”)有關表操作的常用函數(shù)Alias()

指定工作區(qū)號的別名

alias(1)Select()

測試工作區(qū)號select(0) 當前工作區(qū)號select(1) 當前未被使用的最大工作區(qū)號select(“xs”) 別名為“xs”的工作區(qū)號程式設計語言VFP電子與資訊工程學院DataBase第4章資料庫的創(chuàng)建和使用4.1VFP資料庫概述引入表和表之間的關係的永久存儲表和字段的擴展屬性概念:資料庫是一個容器,是許多相關資料庫表及其關係的集合教學管理資料庫中表和表之間關係示意圖系代碼表課程表學生表任課表成績表專業(yè)表教師表表之間的關係4.2資料庫的創(chuàng)建資料庫的工作環(huán)境存儲一系列的表在表間建立關係設置屬性和數(shù)據(jù)有效性規(guī)則是相關的表協(xié)同工作資料庫檔(VFP)檔類型:資料庫檔、資料庫備註檔、資料庫索引檔擴展名:DBCDCTDCX資料庫檔和表及字段的關係資料庫檔並不在物理上包含任何附屬對象(表或字段等),在資料庫檔中僅存儲了指向表檔的路徑指針4.2.1資料庫的創(chuàng)建介面方式“專案管理器”窗口創(chuàng)建的資料庫自動添加專案“新建”對話框菜單:“檔”——“新建”工具欄:“新建”按鈕創(chuàng)建的資料庫不會自動添加到專案創(chuàng)建資料庫後,將打開“資料庫設計器”窗口,顯示對應的“資料庫設計器”工具欄資料庫的創(chuàng)建命令方式CREATEDATABASECREATEDATABASE?CREATEDATABASE

資料庫名第1、2句命令會自動打開“資料庫設計器”窗口第3句命令不會自動打開“資料庫設計器”窗口4.2.2VFP資料庫的組成1.資料庫表

(從屬於某一個資料庫的表)資料庫表與資料庫的相關性是通過資料庫表檔(.DBF)與資料庫檔(.DBC)之間的雙向鏈接實現(xiàn)的VFP資料庫的組成2.視圖由一張表或多張表的數(shù)據(jù)構成的一張“虛表”,可以更新其中的資訊,並將更新結果永久保存到磁片上,例:xmkcmcj本地視圖、遠程視圖3.連接是保存在資料庫中的一個定義,指定數(shù)據(jù)源名稱4.存儲過程是保存在資料庫中的過程代碼,包括用戶自定義函數(shù)、系統(tǒng)為保障參照完整性創(chuàng)建的函數(shù)。在打開資料庫時,存儲過程被自動加載到記憶體,從而可提高資料庫性能,4.3資料庫的使用打開資料庫介面方式專案管理器/菜單/工具欄命令方式opendatabase

opendatabase資料庫名exclusive|sharedopendatabasedb1

opendatabasedb2

opendatabasedb3可以同時打開多個數(shù)據(jù)庫,最後打開的為當前資料庫專案中包含的資料庫隨專案的關閉而關閉資料庫的使用設置當前資料庫“常用”工具欄的資料庫下拉列表Setdatabaseto已打開的資料庫檢查資料庫有效性有些操作可能破壞資料庫的雙向鏈接移動或刪除了資料庫檔或表檔檢查資料庫的有效性和更新鏈接的命令

Validatedatabaserecover要求資料庫為獨佔方式打開的當前資料庫資料庫的使用關閉資料庫專案管理器Closedatabase

關閉當前資料庫

closedatabaseall

關閉所有的資料庫刪除資料庫專案管理器Deletefile修改資料庫(打開資料庫設計器)“顯示”菜單——資料庫設計器Modifydatabase4.4VFP數(shù)據(jù)字典概述數(shù)據(jù)字典是存儲在資料庫中用於描述所管理的表和對象的數(shù)據(jù),即關於數(shù)據(jù)的數(shù)據(jù),稱為元數(shù)據(jù)數(shù)據(jù)字典的存儲每個資料庫的數(shù)據(jù)字典都存儲在資料庫檔中Use資料庫名.dbc

browse數(shù)據(jù)字典數(shù)據(jù)字典可以創(chuàng)建和制定的內(nèi)容資料庫表的主索引、永久關係、長表名、表注釋、字段級和記錄級有效規(guī)則、存儲過程、插入更新刪除事件觸發(fā)器正因為這張?zhí)厥獾谋淼拇嬖冢瑤毂肀茸杂杀矶喑鲆恍U展屬性(4.5節(jié))同時庫表之間也可以保持數(shù)據(jù)的一致(4.6節(jié))也可以用函數(shù)查看、設置資料庫的屬性(4.7節(jié))資料庫表具有自由表的所有功能,

此外,利用資料庫所提供的數(shù)據(jù)字典功能,

還可以擴展資料庫表的管理和控制功能等。4.5資料庫表自由表的屬性字段名、字段類型、字段寬度、索引、NULL資料庫表的擴展屬性主索引、永久關係、長表名、表注釋、字段級和記錄級有效規(guī)則、存儲過程、觸發(fā)器4.5.1資料庫表的創(chuàng)建介面方式專案管理器窗口資料庫設計器窗口在資料庫打開時,通過菜單和工具欄新建命令方式CreateTable-SQLopendatabasejxsj

createtablexsbname學生表2(xhc(8),xbc(2))在資料庫打開時,不使用Free關鍵字,

如果使用Free關鍵字,則創(chuàng)建的為自由表

createtablexscfree

(xhc(8),xbc(2))4.5.2資料庫表的字段擴展屬性設置表設計器的“字段”選項卡部分屬性可用CreateTable或AlterTable-SQL保存數(shù)據(jù)字典對應該字段的Property中字段的顯示屬性字段的格式字段顯示時大小寫和樣式整個字段

ADT!(在流覽窗口、表單或報表中)。輸入掩碼字段中輸入數(shù)據(jù)的格式每一位

X 9

例如:9999-9999999(電話)999,999,999(數(shù)字)

X99999(工號)字段的標題和注釋標題:流覽窗口的列標題注釋:在表結構中對於字段的詳細說明字段驗證字段有效性規(guī)則和有效性資訊規(guī)則:字段值合法的條件資訊:不滿足規(guī)則時的提示資訊

cj>=0andcj<=100“成績要在0~100之間”

注意:規(guī)則是條件表達式,信息是“字串”如果表中已有記錄不滿足規(guī)則,如何設置規(guī)則?

必須選擇對現(xiàn)有數(shù)據(jù)不做檢查默認值默認值添加新記錄時,為字段指定的最初的值默認值必須是一個與字段類型相同的運算式

“字元”、.邏輯.、{月/日/年}

可為函數(shù)e.g.date()

字段未設默認值,且不允許null,則字段默認值為“

”,0,.f.,{//}字段的默認控件類匹配字段類型到類作用:

指定在使用“表單向導”生成表單或從數(shù)據(jù)環(huán)境拖動字段到表單上時,該字段相應的控件類例:gh文本框textbox

gh組合框combobox4.5.3資料庫表的表屬性設置表設計器的“表”選項卡部分屬性可用CreateTable-SQL保存數(shù)據(jù)字典對應該表的Property中長表名和表注釋長表名長表名最大長度>200在資料庫打開時,可以用兩種方法打開表

use

表名/use

長表名使用長表名打開表時,資料庫必須打開且為當前資料庫打開庫表時所在資料庫若未打開,則自動打開資料庫。表注釋表的說明資訊,進一步說明表的含義記錄驗證何時設置:一條記錄的兩個或多個字段需要滿足某種規(guī)則何時啟動:該記錄值的改變被確認時,(記錄指針移動,關閉流覽窗口,執(zhí)行修改命令)設置有效性規(guī)則時(字段級和記錄級),確定後將對表中已有記錄進行檢查,如果有記錄不符合規(guī)則,則規(guī)則設置失?。”淼挠|發(fā)器觸發(fā)器概念插入、刪除、更改記錄後運行的一段代碼,為了檢驗某個規(guī)則或者對關聯(lián)的表進行相應的操作真——繼續(xù),假——“觸發(fā)器失敗”提示框內(nèi)容運算式存儲過程(可以手工編寫,也可以用參照完整性生成器生成)表的觸發(fā)器例1:js表中插入記錄的gh字段不為空

插入觸發(fā)器notempty(js.gh)例2:每賣出一件商品,“商品”表中庫存減少(更新),當庫存小於一定數(shù)量時,需要定貨(即在“定貨”表中加一條記錄)

解決辦法:在“商品”表的更新觸發(fā)器中加入存儲過程

if庫存<=定貨庫存

insertinto定貨(商品名,定貨)values(商品.商品名,.t.) endif例3:xs表刪除記錄時,要求cj表刪除相關記錄

(參照完整性生成器)

表的觸發(fā)器創(chuàng)建觸發(fā)器表設計器—“表”選項卡—加入觸發(fā)規(guī)則(運算式)Createtriggeron

表名fordelete|insert|updateAs

運算式刪除觸發(fā)器表設計器—“表”選項卡—刪除觸發(fā)規(guī)則(運算式)

deletetriggeron

表名fordelete|insert|update

當在資料庫中移去或刪除表時,觸發(fā)器被刪除,

但相關的存儲過程依然存在。4.5.4資料庫表的約束機制及其啟動時機綜述約束機制級啟動時機Null有效性字段流覽中離開字段,或insert、replace命令字段有效性規(guī)則字段流覽中離開字段,或insert、replace命令記錄有效性規(guī)則記錄發(fā)生記錄更新候選/主控索引記錄發(fā)生記錄更新Valid子句表單移出記錄對應的控件觸發(fā)器表Insert、update、delete事件中,表中值改變4.5.5資料庫表的索引資料庫表的索引增加一種,即主索引設置主索引的注意事項主索引運算式的值每條記錄必須唯一每張資料庫表只能設置一個主索引主索引的主要用途設置永久關係主索引圖示4.5.6資料庫表的添加和移去“專案管理器”窗口“資料庫設計器”窗口如何打開資料庫設計器?專案中:庫名——“更改”按扭菜單:“顯示”菜單——資料庫設計器

(要求數(shù)據(jù)庫打開)命令:modifydatabase資料庫表的添加和移去命令(資料庫處於打開狀態(tài),且為當前)添加Addtab

溫馨提示

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

評論

0/150

提交評論