PowerBuilder中對NULL的徹底解釋

2021-06-05 13:52:10 字數 1781 閱讀 4575

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的幫助中找不...