請教 DBDateEdit1下拉日期存檔再列印為何出現 Is not valid integer value |
答題得分者是:herbert2
|
K1086
初階會員 ![]() ![]() 發表:63 回覆:148 積分:42 註冊:2007-04-09 發送簡訊給我 |
[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 發送簡訊給我 |
|
K1086
初階會員 ![]() ![]() 發表:63 回覆:148 積分:42 註冊:2007-04-09 發送簡訊給我 |
===================引 用 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 發送簡訊給我 |
|
K1086
初階會員 ![]() ![]() 發表:63 回覆:148 積分:42 註冊:2007-04-09 發送簡訊給我 |
===================引 用 herbert2 文 章=================== STRTOINTDEF 若 AnsiString 之值為 NULL, 則傳回第二個整數參數之值; STRTOINT 若 AnsiString 之值為 NULL, 則發生例外訊息,因 NULL 無法轉換成任何數值。 別支程式沒發生此錯誤,可能是該欄值不會是 NULL,並非 STRTOINT 函式有不穩定的問題。 ====>>> 謝謝 herbert2 你熱心解釋 小弟又學習了一招 真的很感謝! 再問若 AnsiString 之值為0 (意思是把 TABLE 該欄補上0) 就不是 NULL 囉對嗎? 所以別支程式沒發生此錯誤,可能是該欄值有補0 對嗎? |
herbert2
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:58 回覆:640 積分:894 註冊:2004-04-16 發送簡訊給我 |
恭喜您,一點就通了!
Borland 這套產品真有點兒偷懶,有 StrToIntDef(),但就無 StrToDoubleDef(),只好自己寫一個來用, 其實就是用 try {} 將 StrToDouble() 包起來,使 Error 發生後,於該函式中處理掉而已。 同樣的,max()、min()也須自行寫同名異式的函式,以便能比較 double 與 int 的數值。 當然,有些 Component 也有 Lose 一些想要的 Event 或 Method 或 Property,也可以自行 用繼承原始 Component 再加新東東或改掉舊行為,而創造出新的 Component 。 |
K1086
初階會員 ![]() ![]() 發表:63 回覆:148 積分:42 註冊:2007-04-09 發送簡訊給我 |
|
cancer
高階會員 ![]() ![]() ![]() ![]() 發表:58 回覆:319 積分:190 註冊:2004-07-31 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |