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

請教 DBDateEdit1下拉日期存檔再列印為何出現 Is not valid integer value

答題得分者是:herbert2
K1086
初階會員


發表:63
回覆:148
積分:42
註冊:2007-04-09

發送簡訊給我
#1 引用回覆 回覆 發表時間:2011-01-09 15:35:08 IP:114.41.xxx.xxx 訂閱

[code delphi]
procedure TEnvAcBuyFm1.HemisphereButton1Click(Sender: TObject);
var STDT,ENDT,SQL:string;
TOTALNUA:INTEGER;
TOTALNUB:INTEGER;
begin
STDT:=COPY(DATETOSTR(DTP_STDT.DATE),6,5) '/' COPY(DATETOSTR(DTP_STDT.DATE),1,4);
ENDT:=COPY(DATETOSTR(DTP_ENDT.DATE),6,5) '/' COPY(DATETOSTR(DTP_ENDT.DATE),1,4);
SQL:='SELECT * FROM AcBuy_Env_01';
SQL:=SQL ' WHERE 登錄日期>=''' STDT ''' AND ';
SQL:=SQL ' 登錄日期<=''' ENDT ''' ';
Env_AcBuyRptFm.Query1.CLOSE;
Env_AcBuyRptFm.Query1.SQL.Clear;
Env_AcBuyRptFm.Query1.SQL.ADD(SQL);
Env_AcBuyRptFm.Query1.OPEN;
TOTALNUA:=0;
TOTALNUB:=0;
WHILE NOT Env_AcBuyRptFm.QUERY1.EOF DO
BEGIN
TOTALNUA:=TOTALNUA STRTOINT(Env_AcBuyRptFm.Query1.FIELDBYNAME('收入').AsString);
TOTALNUB:=TOTALNUB STRTOINT(Env_AcBuyRptFm.Query1.FIELDBYNAME('支出').AsString);
Env_AcBuyRptFm.query1.Next;
END;
Env_AcBuyRptFm.QRLabel9.caption:=inttostr(TOTALNUA);
Env_AcBuyRptFm.QRLabel16.Caption:=inttostr(TOTALNUB);
Env_AcBuyRptFm.QuickRep1.Preview ;
end;

[/code]

1.小弟更換過 DBDateEdit1 元件.沒用
2. 第2項 運算若是 // 則列印正常不會出現 Is not valid integer value 只是沒有 TOTALNUA TOTALNUB 二個值
小弟一直猜不透是那裡出問題,請各位大大幫忙謝謝!
herbert2
尊榮會員


發表:58
回覆:640
積分:894
註冊:2004-04-16

發送簡訊給我
#2 引用回覆 回覆 發表時間:2011-01-09 15:49:04 IP:202.39.xxx.xxx 訂閱
TOTALNUB:=TOTALNUB+STRTOINTDEF,0);

您可能將 NULL 存入 Table 了.
K1086
初階會員


發表:63
回覆:148
積分:42
註冊:2007-04-09

發送簡訊給我
#3 引用回覆 回覆 發表時間:2011-01-09 20:32:06 IP:114.41.xxx.xxx 訂閱

===================引 用 herbert2 文 章===================
TOTALNUB:=TOTALNUB STRTOINTDEF,0);

您可能將 NULL 存入 Table 了.
=====>>
謝謝herbert2 大大指導,小弟依據上述指令修改之後RUN 一切OK 不再出現 Is Not Valid integer Value
但小弟還是不明瞭為何其他程式用相同邏輯處理table 而不會出現 Is Not Valid integer Value
獨獨這一支程式 RUN 才會,請問 STRTOINTDEF 與 STRTOINT 這函數 差DEF 有何區別 小弟是初學者想瞭解 謝謝herbert2
herbert2
尊榮會員


發表:58
回覆:640
積分:894
註冊:2004-04-16

發送簡訊給我
#4 引用回覆 回覆 發表時間:2011-01-10 04:56:29 IP:202.39.xxx.xxx 訂閱
STRTOINTDEF 若 AnsiString 之值為 NULL, 則傳回第二個整數參數之值;
STRTOINT 若 AnsiString 之值為 NULL, 則發生例外訊息,因 NULL 無法轉換成任何數值。

別支程式沒發生此錯誤,可能是該欄值不會是 NULL,並非 STRTOINT 函式有不穩定的問題。
K1086
初階會員


發表:63
回覆:148
積分:42
註冊:2007-04-09

發送簡訊給我
#5 引用回覆 回覆 發表時間:2011-01-10 13:49:58 IP:114.41.xxx.xxx 訂閱

===================引 用 herbert2 文 章===================
STRTOINTDEF 若 AnsiString 之值為 NULL, 則傳回第二個整數參數之值;
STRTOINT 若 AnsiString 之值為 NULL, 則發生例外訊息,因 NULL 無法轉換成任何數值。

別支程式沒發生此錯誤,可能是該欄值不會是 NULL,並非 STRTOINT 函式有不穩定的問題。

====>>>
謝謝 herbert2 你熱心解釋 小弟又學習了一招 真的很感謝!
再問若 AnsiString 之值為0 (意思是把 TABLE 該欄補上0) 就不是 NULL 囉對嗎?
所以別支程式沒發生此錯誤,可能是該欄值有補0 對嗎?
herbert2
尊榮會員


發表:58
回覆:640
積分:894
註冊:2004-04-16

發送簡訊給我
#6 引用回覆 回覆 發表時間:2011-01-10 21:28:19 IP:202.39.xxx.xxx 訂閱
恭喜您,一點就通了!

Borland 這套產品真有點兒偷懶,有 StrToIntDef(),但就無 StrToDoubleDef(),只好自己寫一個來用,
其實就是用 try {} 將 StrToDouble() 包起來,使 Error 發生後,於該函式中處理掉而已。

同樣的,max()、min()也須自行寫同名異式的函式,以便能比較 double 與 int 的數值。

當然,有些 Component 也有 Lose 一些想要的 Event 或 Method 或 Property,也可以自行
用繼承原始 Component 再加新東東或改掉舊行為,而創造出新的 Component 。
K1086
初階會員


發表:63
回覆:148
積分:42
註冊:2007-04-09

發送簡訊給我
#7 引用回覆 回覆 發表時間:2011-01-11 12:51:24 IP:114.41.xxx.xxx 訂閱
謝謝你不吝指導 小弟感覺 K-TOP 真的很溫馨 尤其   herbert2 更是熱忱 小弟一直想用 D7 使用ACCESS 資料庫 來作 WEB 資料瀏覽 或網上處理一些相關資料 可惜履試都失敗 不知要參考那些資料才會進步?D2010 又那麼貴買不起 請問 herbert2 你能幫忙小弟這個問題嗎?
cancer
高階會員


發表:58
回覆:319
積分:190
註冊:2004-07-31

發送簡訊給我
#8 引用回覆 回覆 發表時間:2011-03-01 11:15:30 IP:211.75.xxx.xxx 未訂閱
Delphi 2006 的 Data Controls 頁次,怎麼找不到 TDateEdit 元件?
系統時間:2024-04-19 13:43:38
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!