null代表不知道或者沒有定義,和空值完全不同。例如,在資料庫中某欄位取值為null,代表使用者還沒有處理這個欄位的資料,有待於處理;而如果該欄位取值為空,代表這個欄位的資料使用者做了處理,這個欄位的取值是清楚的。
當變數定義後,變數沒有取值,應該為null,但實際上不是這樣。powerbuilder為每種型別的變數都規定了預設值,當剛剛定義了某型別的變數時,該變數的取值為這種型別變數的預設值。如integer型別的預設值為0,string型別的變數的預設值為「」。
大多數情況下,null和資料庫打交道時才經常使用。當某個取值為null的字段取值讀入到變數時,該變數被置為null。也可以通過函式將變數的值置為null,但是不能直接把null賦值給變數。任何型別的變數都可以被賦值為null,null是乙個非常特殊的值。函式用法是:
setnull(變數名)
執行成功時返回1,否則返回-1。
例如:string ls_name//此時變數ls_name的取值為「」
setnull(ls_name)//ls_name變數此時為null
判斷某變數的取值是否為null時,使用函式isnull(變數名),不能使用「=」來判斷。例如「if ls_name=null then…」是不正確的,「if isnull(ls_name) then …」是正確的。當某布林表示式的取值為null時,powerscript處理為false。例如,下面的語句都不能執行beep(1)語句:
int li_nbr
// set li_nbr to null.
setnull(nbr)
if li_nbr =1 then beep(1)
if li_nbr <> 1 then beep(1)
if not (li_nbr = 1) then beep(1)
正因為null的特殊性,在條件語句中判斷時要備加小心。例如,下面的語句就能正確執行else中的資訊顯示:
int li_count
setnull(li_count)
if li_count = 1 then
messagebox("value", "li_count= 1")
else
messagebox("value", "li_count= null")
end if
但是,如果把上面的語句做語法上的等價修改,就什麼顯示資訊也沒有:
int li_count
setnull(lli_count)
if li_count = 1 then messagebox("value", "li_count= 1")
if li_count <> 1 then messagebox("value", "li_count= null")
當字串的聯接運算中有null時,取值也為null。例如:
string ls_name,ls_temp
setnull(ls_temp)
ls_name = "張三"
ls_name = ls_name + ls_temp
if isnull(ls_name) then messagebox("提示","空值!")
函式messagebox()經常用來顯示一定的資訊,和使用者互動時經常使用。如果要顯示的資訊是null時,提示視窗不會顯示。例如,下面語句執行時,沒有任何的資訊提示視窗:
string ls_name,ls_temp
setnull(ls_temp)
ls_name = "張三"
if isnull(ls_name) then messagebox("提示",ls_name + ls_temp)
PowerBuilder中對NULL的徹底解釋
null代表不知道或者沒有定義,和空值完全不同。例如,在資料庫中某欄位取值為null,代表使用者還沒有處理這個欄位的資料,有待於處理 而如果該欄位取值為空,代表這個欄位的資料使用者做了處理,這個欄位的取值是清楚的。當變數定義後,變數沒有取值,應該為null,但實際上不是這樣。powerbuilder...
GRAPH在PowerBuilder中的應用
graph在powerbuilder中的應用 在使用powerbuilder時,有時會用到graph。它作為一種輸出工具 直觀地顯示使用者想要看到的資料及資料間的關係 我們一般不通過它進行資料輸入 可以有兩種方法將gr aph放入使用者介面。其一是通過資料窗,使graph成為資料視窗的一部分,或本身...
Powerbuilder中的記憶體操作大蒐集
powerbuilder中的記憶體操作大蒐集 1 根據字串位址得到字串 完全通過pb自帶的函式string就可以實現,函式的語法為string data,當我們將變數位址作為data引數,字串 address 作為format引數,函式的返回值就是我們需要的字串。這是種未公開 呵呵,pb的幫助中找不...