判斷不出 Null 值? |
|
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
小弟遇到一個怪怪的問題, 用 TQuery 去 Select 一個欄位的值
該欄位的值可能為 0, 1 或 Null
結果小弟用第一種寫法就得不到 Null 值
此時若值為 Null 時(以 DBExplorer 來觀看結果),
判斷是否為 0 時總是會 True
用第二種寫法就可以, 所以請教大家。
第一種:
if not Query1.IsEmpty then begin if (Query1.FieldByName('Value').AsInteger = 0) then begin Memo.Lines.Add('Value = 0'); Result := True; end else begin if Query1.FieldByName('Value').IsNull then begin Memo.Lines.Add('Value Is Null'); Result := True; end else Memo.Lines.Add('Value = ' IntToStr(Query1.FieldByName('Value').AsInteger)); end; end else Memo.Lines.Add('No Record Return'); end;第二種: if not Query1.IsEmpty then begin if Query1.FieldByName('Value').IsNull then begin Memo.Lines.Add('Value is null'); Result := True; end else begin if (Query1.FieldByName('Value').AsInteger = 0) then begin Memo.Lines.Add('Value = 0'); Result := True; end else Memo.Lines.Add('Value = ' IntToStr(Query1.FieldByName('Value').AsInteger)); end; end else Memo.Lines.Add('No Record Return'); end; |
jieshu
版主 發表:42 回覆:894 積分:745 註冊:2002-04-15 發送簡訊給我 |
引言: 小弟遇到一個怪怪的問題, 用 TQuery 去 Select 一個欄位的值 該欄位的值可能為 0, 1 或 Null 結果小弟用第一種寫法就得不到 Null 值 此時若值為 Null 時(以 DBExplorer 來觀看結果), 判斷是否為 0 時總是會 True 用第二種寫法就可以, 所以請教大家。 第一種:那是因為AsInteger時,Delphi把null轉成0的關係,你可用Value或AsVariant試試,不然AsInteger傳回null就會不同型態了。 TJSQRBuild (簡易報表建立元件) http://freehomepage.taconet.com.tw/This/is/taconet/top_hosts//jieshu/delphi.htm#JSQRBuild 經由元件屬性設定,可不用自己拖拉QuickReport元件,即可建立簡單的QuickReport報表,可在設計階段預覽。亦可將建立的報表存成 Delphi 的 Form (類似 QuickReport Wizard 所產生的程式),再做複雜的設定使用,免除一一拖拉元件的困擾。if not Query1.IsEmpty then begin if (Query1.FieldByName('Value').AsInteger = 0) then begin Memo.Lines.Add('Value = 0'); Result := True; end else begin if Query1.FieldByName('Value').IsNull then begin Memo.Lines.Add('Value Is Null'); Result := True; end else Memo.Lines.Add('Value = ' IntToStr(Query1.FieldByName('Value').AsInteger)); end; end else Memo.Lines.Add('No Record Return'); end;第二種:if not Query1.IsEmpty then begin if Query1.FieldByName('Value').IsNull then begin Memo.Lines.Add('Value is null'); Result := True; end else begin if (Query1.FieldByName('Value').AsInteger = 0) then begin Memo.Lines.Add('Value = 0'); Result := True; end else Memo.Lines.Add('Value = ' IntToStr(Query1.FieldByName('Value').AsInteger)); end; end else Memo.Lines.Add('No Record Return'); end;
------
人生有夢,逐夢而行 人若為善,福雖未至,禍已遠離 人若為惡,禍雖未至,福已遠離 http://www.taconet.com.tw/jieshu/ |
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |