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

with .... do begin 失效?

缺席
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-10-14 12:22:04 IP:61.71.xxx.xxx 未訂閱
請問各位!    我有一段語法
     with DM_CustFare, DM_CustFareAcc do begin
        mdept:= IBQ_D1102DEPTNO.AsString;
        mcust:= IBQ_D1102CUSTNO.AsString;
        // 本次結點起始日
        mdate1:= IBQ_D1102LACCDATE.AsString;
        // 本次結點截止日
        mdate2:= IBQ_D1102NACCDATE.AsString;
        ....
     end;
很奇怪的是 mdate1:= IBQ_D1102LACCDATE.AsString 這句, 如果這樣寫, 則 取出的 mdate1 是空字串, 但如果我加入 mdate1:= DM_CustFare.IBQ_D1102LACCDATE.AsString 則可以正常的取出該欄的內值, 我確認過 LACCDATE 欄位的確有資料, 上面其他的設定都沒有問題, 只有這項, 不知各位有無遇過該如何解決? 謝謝@!
william
版主


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-10-14 12:33:06 IP:147.8.xxx.xxx 未訂閱
Exists DM_CustFareAcc.IBQ_D1102NACCDATE?? http://pywong.hk.st
09n
一般會員


發表:6
回覆:13
積分:13
註冊:2002-09-14

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-10-16 01:07:21 IP:219.84.xxx.xxx 未訂閱
你好. 不知道是否你一次引用兩個object在 with...do的範圍內. 而 DM_CustFare, DM_CustFareAcc 又同時擁有IBQ_D1102LACCDATE.. 所以mdate1:= IBQ_D1102LACCDATE.AsString; 會抓取到 DM_CustFareAcc.IBQ_D1102LACCDATE的值 例如 TTest1 = record a , b :String; end; TTest2 = record a , c :String; end; with Test1, Test2 do begin sData := a; end; 則sData會存入 Test2.a的值... 指定Test1.a則才會抓到 Test1.a的值... 小弟才疏學淺.獻醜如有疏漏歡迎指教..
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-10-16 10:40:20 IP:61.71.xxx.xxx 未訂閱
引言: 你好. 不知道是否你一次引用兩個object在 with...do的範圍內. 而 DM_CustFare, DM_CustFareAcc 又同時擁有IBQ_D1102LACCDATE.. 所以mdate1:= IBQ_D1102LACCDATE.AsString; 會抓取到 DM_CustFareAcc.IBQ_D1102LACCDATE的值 例如 TTest1 = record a , b :String; end; TTest2 = record a , c :String; end; with Test1, Test2 do begin sData := a; end; 則sData會存入 Test2.a的值... 指定Test1.a則才會抓到 Test1.a的值... 小弟才疏學淺.獻醜如有疏漏歡迎指教..
回答兩位的疑問 DM_CustFareAcc.IBQ_D1102NACCDATE 確實存在! DM_CustFareAcc.IBQ_D1102NACCDATE 只存在於 DM_CustFareAcc 中, 我都檢查過了, 而且上面我提到的四個欄位, 只有這個是失效的, 如果是兩個DM都存在的話, 不應該是這樣的結局, 怪異吧! 其實之前我也遇到過這樣的問題, 後來也是直接指定了事, 我猜想這可能是Delphi5的bug吧!!!
william
版主


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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-10-25 17:01:41 IP:147.8.xxx.xxx 未訂閱
Don't think it is a bug.    with DM_CustFare, DM_CustFareAcc do begin {...}    The compiler should first try to look for particular member in DM_CustFareAcc, if not found then DM_CustFare, if not found then self and raise error otherwise. Perhaps you could try to switch the order of the with... e.g. with DM_CustFareAcc, DM_CustFare do begin, if DM_CustFare should get a higer priority.    http://pywong.hk.st
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-10-28 12:50:06 IP:61.71.xxx.xxx 未訂閱
引言: Don't think it is a bug. with DM_CustFare, DM_CustFareAcc do begin {...} The compiler should first try to look for particular member in DM_CustFareAcc, if not found then DM_CustFare, if not found then self and raise error otherwise. Perhaps you could try to switch the order of the with... e.g. with DM_CustFareAcc, DM_CustFare do begin, if DM_CustFare should get a higer priority. http://pywong.hk.st
果然, 我改成 with DM_CustFareAcc, DM_CustFare do begin 後就沒有出現錯誤了, 感謝 william 兄指教!
系統時間:2024-04-19 11:54:17
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!