 |
VFP 愛用者社區 本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
|
上一篇主題 :: 下一篇主題 |
發表人 |
內容 |
xchtc
註冊時間: 2004-10-10 文章: 1
第 1 樓
|
發表於: 星期日 十月 10, 2004 6:36 pm 文章主題: 数据库表中字段有效性检查的应用 |
|
|
数据库表中字段有效性检查的应用
本文主要通过一个例子来说明数据库中的一个有很有用的功能,那就是在BORWSE中对字段进行有效性检查。数据库中还有很多的其他功能,如:记录规则、插入触发器、删除触发器、更新触发器等等。
字段级规则在字段值改变时发生作用。和触发器不同,即使数据在缓冲区中,字段级规则也可被激活。
要想使用字段级规则,首先必须保证所使用的表在某一数据库中,然后在字段规则中输入条件,当条件不成立时,则进行则会显示错误信息,信息内容可在“有效性规则”之“信息”中输入字符型内容。
本例通过字段级规则来检查用户输入的有效性,如果输入有误,则显示提示内容,并强制其修改。例如:在DDD.DBC之DDD.DBF中有一XMBH字段,字符型,宽度为6。此字段格式为“9A9999”,其第1,3,4,5,6位必须是数字,第2位必须是英语字母。因为通过表达式不能判断,现通过数据库存储过程定义一个自定义函数如下。要编辑此存储过程,先要打开数据库设计器,再在其上点击右键,弹出一快捷菜单,点击“编辑存储过程即可。其内容如下:
FUNC ZDJC(A) && "ZDJC"为字段检查,“A”为函数参数
PD1=ISDIGIT(A) && 判断左左边是不是数字
PD2=ISALPHA(SUBST(A,2,1)) && 判断“A”的第二位是不是字符
PD3=.T.
FOR I=1 TO 4
PD=ISDIGIT(SUBST(A,I+2,1)) && 判断“A”的第二位以后是不是数字
IF PD=.F.
PD3=.F.
ENDIF
ENDFOR
IF PD3=.F. .OR. PD1=.F. .OR. PD2=.F && 第1,3,4,5,6位是数字,第2位是字符
IF ALLT(A)=="" && 允许字段为空格字符
RETURN .T.
ELSE
RETURN .F.
ENDIF
ELSE
RETURN .T.
ENDIF
Endfunc
存储过程编辑完毕后,在字段有效性检查之规则内输入自字义函数“zdjc(xmbh)=.T.”,在信息内输入“"字符格式必须是:9A9999格式!"”
通过试验,在XMBH中只能输入指定格式字符或空格字符,否则不能进行存储和增加记录,包括使用APPEND BLANK、REPLACE等命令。 |
|
回頂端 |
|
 |
朱育興
註冊時間: 2003-08-25 文章: 661 來自: 台中市大里區
第 2 樓
|
發表於: 星期日 十月 10, 2004 9:22 pm 文章主題: |
|
|
對不起啊!看繁體還是比較直覺,所以就多此一舉把它轉成繁體了。
資料庫的資料表格中欄位有效性檢查的應用
本文主要通過一個範例來說明資料庫中的一個有很有用的功能,那就是在 BROWSE 中對欄位進行有效性檢查。資料庫中還有很多的其他功能,如:記錄規則、插入觸發器、刪除觸發器、更新觸發器等等。
欄位級規則在欄位值改變時發生作用。和觸發器不同,即使資料在緩衝區中,欄位級規則也可被啟動。
要想使用欄位級規則,首先必須保證所使用的資料表格在某一資料庫中,然後在欄位規則中輸入條件,當條件不成立時,則會顯示錯誤訊息,訊息內容可在「有效性規則」之「訊息」中輸入字元型內容。
本例通過欄位級規則來檢查使用者輸入的有效性,如果輸入有誤,則顯示提示內容,並強制其修改。例如:在 DDD.DBC 之 DDD.DBF 中有一 XMBH 欄位,字元型,寬度為 6。此欄位格式為「9A9999」,其第 1、3、4、5、6 位必須是數字,第 2 位必須是英文字母。因為透過運算式不能判斷,現透過資料庫儲存式程序定義一個自定義函數如下。要編輯此儲存式程序,先要開啟資料庫設計工具,再在其上點擊右鍵,彈出一快捷功能表,點擊「編輯儲存式程序即可。其內容如下:
FUNC ZDJC(A) && "ZDJC"為欄位檢查,「A」為函數參數
PD1 = ISDIGIT(A) && 判斷左邊是不是數字
PD2 = ISALPHA(SUBST(A,2,1)) && 判斷「A」的第二位是不是字元
PD3 = .T.
FOR I = 1 TO 4
PD = ISDIGIT(SUBST(A,I+2,1)) && 判斷「A」的第二位以後是不是數字
IF !PD
PD3 = .F.
ENDIF
ENDFOR
IF !PD3 OR !PD1 OR !PD2 && 第1,3,4,5,6位是數字,第2位是字元
IF ALLT(A) == "" && 允許欄位為空格字元
RETURN .T.
ELSE
RETURN .F.
ENDIF
ELSE
RETURN .T.
ENDIF
Endfunc
儲存式程序編輯完畢後,在欄位有效性檢查之規則內輸入自字義函數「zdjc(xmbh)=.T.」,在訊息內輸入「"字元格式必須是:9A9999格式!"」
通過試驗,在 XMBH 中只能輸入指定格式字元或空格字元,否則不能進行儲存和增加記錄,包括使用 APPEND BLANK、REPLACE 等命令。 _________________ 希望有更多人來參與
VFP wiki - 需要大家一起完成的VFP電子書與FAQ |
|
回頂端 |
|
 |
|
|
您 無法 在這個版面發表文章 您 無法 在這個版面回覆文章 您 無法 在這個版面編輯文章 您 無法 在這個版面刪除文章 您 無法 在這個版面進行投票 您 無法 在這個版面附加檔案 您 無法 在這個版面下載檔案
|
|