線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1770
推到 Plurk!
推到 Facebook!

請問 TField 的 IsNull 是何種意思?

答題得分者是:Stallion
VICSYS
初階會員


發表:21
回覆:64
積分:32
註冊:2002-10-10

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-08-01 21:33:06 IP:219.68.xxx.xxx 訂閱
我在 Delphi 7 / Delphi 2006 下,  ClientDataSet的 "標準元件"(非第三方)有個文字欄位
測試結果, 跟預期的不一樣

procedure TForm2.Button1Click(Sender: TObject);
var
s:string;
c:boolean;
begin
s:= cdsCustomersState.Value;
c:= cdsCustomersState.IsNull;
c:=c; <- 中斷點
end;

Watch List 視窗
Watch Name Value
cdsCustomersState.Value ''
cdsCustomersState.IsNull False

請問當 cdsCustomersState.Value(字串) 為空時, IsNull 是否應為 True, 還是 IsNull 有不同的意思?
請問各位, 如何檢查該欄位是否為空值?

ClientDataSet 如何判斷欄位是否為空白? 只好轉成字串後來判斷?
編輯記錄
VICSYS 重新編輯於 2007-08-01 21:56:49, 註解 無‧
Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-08-01 21:49:08 IP:211.22.xxx.xxx 未訂閱
文字欄位的零長度字串並不表示null,null的意思是該欄位內重來沒有過值(也就是從未使用過),而零長度表示使用過了,此時裡面的字串長度是0,也就是沒有字串內容。
VICSYS
初階會員


發表:21
回覆:64
積分:32
註冊:2002-10-10

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-08-01 22:11:19 IP:219.68.xxx.xxx 訂閱
回覆這麼快, 還沒有寫完的問題, 也太快了吧!
謝謝!
VICSYS
初階會員


發表:21
回覆:64
積分:32
註冊:2002-10-10

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-08-02 00:25:38 IP:219.68.xxx.xxx 訂閱
可是 BCDField 的 IsNull 結果不是這樣, 當用資料元件清除時, 不是用 TField.Clear
IsNull 的結果是 True. 跟 TStringField 的結果不一樣哦!

Delphi 好像不太合乎一般人對 IsNull 的直覺解讀!

BCDField 的 IsNull 又不同
IsNull: 在 BCDField 的情況下是指該欄位為空值! 因為 BCDField 長度不可能為 0, 只能為 34!
所以不會有長度為 0 的情況. 所以當清除該欄位時, IsNull 為True;
VICSYS
初階會員


發表:21
回覆:64
積分:32
註冊:2002-10-10

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-08-02 00:26:54 IP:219.68.xxx.xxx 訂閱
不知道 TMemoField 的 IsNull 情況如何?
1.TMemoField 原來有 文字資料
2.後來清空
3.IsNull 是 True 還是 False?
系統時間:2024-05-19 0:32:47
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!