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

rave report 事件求教,相同的程式碼有不同的結果

答題得分者是:salo0610
it1506
初階會員


發表:32
回覆:89
積分:49
註冊:2011-02-16

發送簡訊給我
#1 引用回覆 回覆 發表時間:2011-06-28 16:29:14 IP:59.120.xxx.xxx 訂閱
程式碼如下, 
不知道為什麼,相同的程式,在我重新編譯過後
會出現 '' is not a vaild float ....... 的錯誤
本來都是正常的, 而且這一段已經跑很久了, 我又沒改過....
我貼個圖好了 = =



我真的不知道為什麼會錯啊.....苦腦

編輯記錄
it1506 重新編輯於 2011-06-28 02:51:05, 註解 無‧
it1506 重新編輯於 2011-06-28 02:53:16, 註解 無‧
P.D.
版主


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2011-06-29 00:19:13 IP:118.169.xxx.xxx 未訂閱
發文請先看清楚版區, 這是裡資料庫區
smallfox
高階會員


發表:2
回覆:113
積分:128
註冊:2003-02-19

發送簡訊給我
#3 引用回覆 回覆 發表時間:2011-06-29 00:27:16 IP:203.73.xxx.xxx 訂閱
StrToCurr 不能轉換含有逗號的數值字串.
it1506
初階會員


發表:32
回覆:89
積分:49
註冊:2011-02-16

發送簡訊給我
#4 引用回覆 回覆 發表時間:2011-06-29 08:28:39 IP:59.120.xxx.xxx 訂閱

===================引 用 smallfox 文 章===================
StrToCurr 不能轉換含有逗號的數值字串.
===============================



對版主不好意思

回覆smallfox大, 我從資料庫抓出來的數字並沒有逗號啊, 而且他前面那麼多筆資料
就沒問題
跑到這筆就出錯, 真的是很納悶...
chris681016
中階會員


發表:69
回覆:122
積分:98
註冊:2006-10-12

發送簡訊給我
#5 引用回覆 回覆 發表時間:2011-06-29 10:14:27 IP:211.75.xxx.xxx 訂閱
看你的function 的value就是string丫~~如上一個大大說strtocurr不能轉,
it1506
初階會員


發表:32
回覆:89
積分:49
註冊:2011-02-16

發送簡訊給我
#6 引用回覆 回覆 發表時間:2011-06-29 10:57:10 IP:59.120.xxx.xxx 訂閱

===================引 用 chris681016 文 章===================
看你的function 的value就是string丫~~如上一個大大說strtocurr不能轉,

========================================================

啊咧... value 是String 沒錯啊

strtocurr 不就是把 string 轉成 currency嗎.

而且我資料庫抓出來的欄位資料又沒逗號 = =...


salo0610
高階會員


發表:42
回覆:120
積分:107
註冊:2003-02-18

發送簡訊給我
#7 引用回覆 回覆 發表時間:2011-06-29 11:08:29 IP:60.249.xxx.xxx 未訂閱

value := formafloat('#,##0.000'',v); <----value 你已將它轉成 string

textStr :=dat .......

if (textStr <>'KG' ) then

v:=strtocurr(value); <---這時候的 value 它是否有逗號呢??


end;



===================引 用 it1506 文 章===================

===================引 用 chris681016 文 章===================
看你的function 的value就是string丫~~如上一個大大說strtocurr不能轉,

========================================================

啊咧... value 是String 沒錯啊

strtocurr 不就是把 string 轉成 currency嗎.

而且我資料庫抓出來的欄位資料又沒逗號 = =...


chris681016
中階會員


發表:69
回覆:122
積分:98
註冊:2006-10-12

發送簡訊給我
#8 引用回覆 回覆 發表時間:2011-06-29 11:19:03 IP:211.75.xxx.xxx 訂閱
您funcion 傳進來的value 就是string丫
雖然你的資料庫是currency

例:
procedure TForm1.Button1Click(Sender: TObject);
var v:currency;
s1:string;
begin
s1:='3,785.980';
v:=strtocurr(s1); //這就會發生錯誤丫,拿到「,」就不會錯了
// 例smallfox大大說,不能轉「,」
end;

it1506
初階會員


發表:32
回覆:89
積分:49
註冊:2011-02-16

發送簡訊給我
#9 引用回覆 回覆 發表時間:2011-06-29 11:55:46 IP:59.120.xxx.xxx 訂閱

===================引 用 salo0610 文 章===================

value := formafloat('#,##0.000'',v); <----value 你已將它轉成 string

textStr:=dat .......

if (textStr <>'KG' ) then

v:=strtocurr(value); <---這時候的value 它是否有逗號呢??


end;

======================================================

大大, 這個 textstr 在那一筆資料是 = 'KG' 所以不會進入那個判斷
請看 S12F33那個欄位 .有圖為證.

value 一直是 String , 只是我會去改裡面的值,

而 v 這個變數的話, 一直是 currency .

真的很納悶 = =..
salo0610
高階會員


發表:42
回覆:120
積分:107
註冊:2003-02-18

發送簡訊給我
#10 引用回覆 回覆 發表時間:2011-06-29 13:34:39 IP:60.249.xxx.xxx 未訂閱

我想你可以加入例外處理,

跳入例外時,顯示當時的值為何來除錯!!


===================引 用 it1506 文 章===================


大大, 這個 textstr 在那一筆資料是 = 'KG' 所以不會進入那個判斷
請看 S12F33那個欄位 .有圖為證.

value 一直是 String , 只是我會去改裡面的值,

而 v 這個變數的話, 一直是 currency .

真的很納悶 = =..
it1506
初階會員


發表:32
回覆:89
積分:49
註冊:2011-02-16

發送簡訊給我
#11 引用回覆 回覆 發表時間:2011-06-29 13:42:21 IP:59.120.xxx.xxx 訂閱
rave report 裡的 語法很奇怪
在rave report 的event裡我也不會用 try catch

不過我問題點已經抓到了.
是我的dataview2 出問題, 抓錯資料表了 .
應該是dataview1 才對. 修正過後就正常囉!

感謝大家回覆,得分就給回覆最多的人囉

===================引 用 salo0610 文 章===================

我想你可以加入例外處理,

跳入例外時,顯示當時的值為何來除錯!!


===================引 用 it1506 文 章===================


大大, 這個 textstr 在那一筆資料是 = 'KG' 所以不會進入那個判斷
請看 S12F33那個欄位 .有圖為證.

value 一直是 String , 只是我會去改裡面的值,

而 v 這個變數的話, 一直是 currency .

真的很納悶 = =..
smallfox
高階會員


發表:2
回覆:113
積分:128
註冊:2003-02-19

發送簡訊給我
#12 引用回覆 回覆 發表時間:2011-06-29 23:42:54 IP:203.73.xxx.xxx 訂閱
都說出重點了, 還不知道錯在哪一行程式碼, 唉 .......

除錯功力要加強 !! (不知道 Delphi 有個 Trace 的功能嗎 ?)

同樣的程式碼, 遇到不同資料值, 也可能出錯,

下次程式有問題, 不要只會往 "程式" 方向想, 看看錯誤訊息, Trace 一下

就會發現, 引發錯誤的, 往往是沒考慮到的資料 "格式" 問題.
it1506
初階會員


發表:32
回覆:89
積分:49
註冊:2011-02-16

發送簡訊給我
#13 引用回覆 回覆 發表時間:2011-06-30 16:04:30 IP:175.180.xxx.xxx 訂閱
to smallfox大
請你教我怎麼在 rave report 裡除錯
這個程式碼是寫在 rave report 欄位 event 裡的, 但是我找不到 rave report 的除錯功能
想trace也沒辦法.

另外,那個 adoquery 的問題還是沒辦法解決~

===================引 用 smallfox 文 章===================
都說出重點了, 還不知道錯在哪一行程式碼, 唉 .......

除錯功力要加強 !! (不知道 Delphi 有個 Trace 的功能嗎 ?)

同樣的程式碼, 遇到不同資料值, 也可能出錯,

下次程式有問題, 不要只會往 "程式" 方向想, 看看錯誤訊息, Trace 一下

就會發現, 引發錯誤的, 往往是沒考慮到的資料 "格式" 問題.
smallfox
高階會員


發表:2
回覆:113
積分:128
註冊:2003-02-19

發送簡訊給我
#14 引用回覆 回覆 發表時間:2011-07-01 00:50:28 IP:203.67.xxx.xxx 訂閱
程式設計師一定要多多練習 "腦筋急轉彎" 的遊戲 ....

不能在 Report 裡 Trace, 沒說不能在 Delphi 裡做,

同樣的程式碼, Copy 到 Delphi, 只是輸出從 TDataView 變成 TADOQuery; report 變成 TDBGrid, 不就可以 trace 了嗎 ?

report 裡用到 OnGetText 事件, TFiled 也有 OnGetText 事件,

一樣的程式碼, 在相同的事件中被觸發, 模擬的環境與在 report 中不會差太大.

(你要是能學會這樣的思考模式, 日後對你的 debug 能力必能大大提升)
it1506
初階會員


發表:32
回覆:89
積分:49
註冊:2011-02-16

發送簡訊給我
#15 引用回覆 回覆 發表時間:2011-07-01 09:32:00 IP:59.120.xxx.xxx 訂閱
謝謝大大指導

我是有這麼做過

但是結果卻不一樣

該怎麼說呢....delphi真是複雜啊......

===================引 用 smallfox 文 章===================
程式設計師一定要多多練習 "腦筋急轉彎" 的遊戲 ....

不能在 Report 裡 Trace, 沒說不能在 Delphi 裡做,

同樣的程式碼, Copy 到 Delphi, 只是輸出從 TDataView 變成 TADOQuery; report 變成 TDBGrid, 不就可以 trace 了嗎 ?

report 裡用到 OnGetText 事件, TFiled 也有 OnGetText 事件,

一樣的程式碼, 在相同的事件中被觸發, 模擬的環境與在 report 中不會差太大.

(你要是能學會這樣的思考模式, 日後對你的 debug 能力必能大大提升)
編輯記錄
it1506 重新編輯於 2011-06-30 20:20:36, 註解 無‧
系統時間:2024-04-20 9:47:27
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!