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

關于局域網sql server 2000數據庫VarChar字段判斷問題

缺席
kljn
一般會員


發表:2
回覆:1
積分:0
註冊:2007-12-17

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-12-25 10:49:56 IP:38.99.xxx.xxx 訂閱
ADO連接2000數據庫,在進行varchar類型字段判斷時,程序溢出,這個字段可以為NULL
if DSource.ADODSUserInfo.FieldByName('Address').AsString <> ' ' then 這個判斷就出錯
請問是那里的問題.

錯誤提示:
附加檔案:47706fd3e6000_1.JPG
編輯記錄
kljn 重新編輯於 2007-12-25 10:53:05, 註解 無‧
borland_delphi70
中階會員


發表:8
回覆:50
積分:51
註冊:2002-12-06

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-01-02 13:24:51 IP:59.124.xxx.xxx 訂閱
長官:

最常發生的情況是DSource

===================引 用 kljn 文 章===================
ADO連接2000數據庫,在進行varchar類型字段判斷時,程序溢出,這個字段可以為NULL
if DSource.ADODSUserInfo.FieldByName('Address').AsString <> ' ' then 這個判斷就出錯
請問是那里的問題.

錯誤提示:
borland_delphi70
中階會員


發表:8
回覆:50
積分:51
註冊:2002-12-06

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-01-02 13:31:36 IP:59.124.xxx.xxx 訂閱
長官:
錯誤訊息的意思是您嘗試存取(Accessing)不存在的物件, 最常發生的情況是:
1.DSource沒聯到Query
2.Query尚未Open但您嘗試存取Field
您可以加下述程式碼來確認:
[code delphi]
if not Assigned(DSource.Dataset) then showmessage('Query 未指定');
if not Assigned(DSource.Dataset.FieldByName('Address')) then showmessage('Query 尚未 open tField(Address) 不存在');
if DSource.DataSet.FieldByName('Address').AsString <> ' ' then ...
[/code]
編輯記錄
borland_delphi70 重新編輯於 2008-01-02 13:32:36, 註解 無‧
borland_delphi70 重新編輯於 2008-01-02 13:33:19, 註解 無‧
borland_delphi70 重新編輯於 2008-01-02 13:33:54, 註解 無‧
borland_delphi70 重新編輯於 2008-01-02 13:35:47, 註解 無‧
sl@cableplus.com.cn
高階會員


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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2008-01-02 20:34:49 IP:221.137.xxx.xxx 訂閱
if DSource.ADODSUserInfo.FieldByName('Address').AsString <> ' ' then 

以上代码是对的,看看DSource属性是否连接了ADODSUserInfo,如果DSource属性指定ADODSUserInfo,那么
if ADODSUserInfo.FieldByName('Address').AsString <> ' ' then 这样就可以了。
borland_delphi70
中階會員


發表:8
回覆:50
積分:51
註冊:2002-12-06

發送簡訊給我
#5 引用回覆 回覆 發表時間:2008-01-04 10:29:10 IP:59.124.xxx.xxx 訂閱
長官

小弟才疏學淺,請問ADODSUserInfo是甚麼,我在Delphi的Help中完全找不到他....可以麻煩您指導一下嗎?


===================引 用 sl@cableplus.com.cn 文 章===================
if DSource.ADODSUserInfo.FieldByName('Address').AsString <> ' ' then

以上代码是对的,看看DSource属性是否连接了ADODSUserInfo,如果DSource属性指定ADODSUserInfo,那么
if ADODSUserInfo.FieldByName('Address').AsString <> ' ' then 这样就可以了。
kljn
一般會員


發表:2
回覆:1
積分:0
註冊:2007-12-17

發送簡訊給我
#6 引用回覆 回覆 發表時間:2008-01-05 15:12:15 IP:60.215.xxx.xxx 訂閱

謝謝各位.

都試過了,還是提示錯誤這個判斷是判斷另外一個庫的字段是否為空.,
ADOuser := TADODataSet.Create(nil);
with ADOuser do begin
Connection := DSource.ADOCBack;
CommandText := 'Select * From UserInfo where MeterID ='''
DSource.ADOReissue.FieldValues['MeterID'] '''';
try
open;
if ADOuser.RecordCount > 0 then
if DSource.ADODuserinfo.FieldByName('Address').AsString <> '' then
DSource.ADODanswer.FieldByName('Address').AsString :=
DSource.ADODuserinfo.FieldValues['Address']
else
DSource.ADODanswer.FieldByName('Address').AsString :='未注明用戶地址';
finally
Free;
end;
這是查詢判斷是否為空,請看看是是那里的錯,
borland_delphi70
中階會員


發表:8
回覆:50
積分:51
註冊:2002-12-06

發送簡訊給我
#7 引用回覆 回覆 發表時間:2008-01-09 17:11:29 IP:211.78.xxx.xxx 訂閱
長官:

請問 DSource 是何物件,tDataSource 嗎?
系統時間:2024-03-29 21:55:02
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!