全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1443
推到 Plurk!
推到 Facebook!

請問如何用delphi 分辨DBgrid 是否 Null 或Empty

答題得分者是:wameng
hkguy80
一般會員


發表:20
回覆:21
積分:8
註冊:2004-09-06

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-09-22 16:13:34 IP:218.189.xxx.xxx 未訂閱
我已寫了一個程式. 當用家double click Staff 的 DBGrid 時會有message Box 彈出. 並列出staff 的詳細資料. 但是當用家於DataGrid 未有資時Double Click. 便會有error. 請問該如何分辨DataGrid 是否 Null 或Empty? thx
william
版主


發表:66
回覆:2535
積分:3048
註冊:2002-07-11

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-09-22 16:23:01 IP:147.8.xxx.xxx 未訂閱
Take a look at TDataSet.IsEmpty and TField.IsNull.    http://pywong.hk.st http://www.lazybones.ca
wameng
版主


發表:31
回覆:1336
積分:1188
註冊:2004-09-16

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-09-22 16:25:08 IP:61.222.xxx.xxx 未訂閱
事實上,您可以直接對 TQuery做操作,就可以了 例如: if (Not DBGrid1.DataSource.DataSet.IsEmpty ) and (not DBGrid1.DataSource.DataSet.EOF) then MessageBox(..
hkguy80
一般會員


發表:20
回覆:21
積分:8
註冊:2004-09-06

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-09-22 17:03:44 IP:218.189.xxx.xxx 未訂閱
我試過不行 以下是我的程式 procedure TfrmMain.DBGridCarPaymentKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin← if (Not DBGridCarPayment.DataSource.DataSet.IsEmpty ) and (Not DBGridCarPayment.DataSource.DataSet.EOF) then begin inputbox('dsadsa','dasdas','dsadsa'); end; end; run 至箭咀的begin 即有exception. EAccessViolation 可否用exception handler 解決呢? thx
sl@cableplus.com.cn
高階會員


發表:168
回覆:359
積分:130
註冊:2004-03-26

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-09-22 17:06:29 IP:218.80.xxx.xxx 未訂閱
你的DataGrid 一定是对应一个Query的,所以你只要判  
if Query.fieldbyname('该字段名称').AsString = '' then
begin
end;
就可以
wameng
版主


發表:31
回覆:1336
積分:1188
註冊:2004-09-16

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-09-22 17:08:39 IP:61.222.xxx.xxx 未訂閱
將 DBGridCarPayment.DataSource.DataSet 對應的 TQuery ot TTable 直接引用就可以了 if (Not Query1.IsEmpty ) and (Not Query1.EOF) then begin inputbox('dsadsa','dasdas','dsadsa'); end;
hkguy80
一般會員


發表:20
回覆:21
積分:8
註冊:2004-09-06

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-09-22 17:09:13 IP:218.189.xxx.xxx 未訂閱
我想我找到原因. 因為DataGrid的DataSource 一開始是空的. 所以有以上問題出現. 到底當DataGrid的DataSource 是空時,我該怎樣做呢?
wameng
版主


發表:31
回覆:1336
積分:1188
註冊:2004-09-16

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-09-22 17:13:00 IP:61.222.xxx.xxx 未訂閱
頂多再加上 DBGrid1.DataSource<>nil
hkguy80
一般會員


發表:20
回覆:21
積分:8
註冊:2004-09-06

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-09-22 17:17:19 IP:218.189.xxx.xxx 未訂閱
我解決了問題. thx procedure TfrmMain.DBGridCarPaymentKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if (DBGridCarPayment.DataSource.isLinkedTo(Dm.AdoQry2)) and← (Not DBGridCarPayment.DataSource.DataSet.IsEmpty ) and (Not DBGridCarPayment.DataSource.DataSet.EOF) then begin inputbox('dsadsa','dasdas','dsadsa'); end; end; 加入箭咀的statement 後便成了 thx Q so much for all Reply!!!
系統時間:2024-06-29 11:28:49
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!