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

主從報表關聯問題---使用datatime類型故障

尚未結案
nsf20000
一般會員


發表:12
回覆:10
積分:4
註冊:2005-03-19

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-04-13 19:20:08 IP:219.134.xxx.xxx 未訂閱
小弟在欲建立一主從關系: DataSource1的ADOQuery1的SQL語句為select invdate from table1,DataSource2的ADOQuery2的SQL語句為select item from table2 where invdate =:invdate 并ADOQuery2的DataSource指向DataSource1. 我試過很多次,如果invdate字段類型為字符型時,能很順利地建立主從報表關聯,但如果invdate字段類型為datetime類型時,卻總是不行! 不知哪位大大予以解惑!
bestlong
站務副站長


發表:126
回覆:734
積分:512
註冊:2002-10-19

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-04-13 21:46:10 IP:61.59.xxx.xxx 未訂閱
請再說明清楚一些, 所謂的不行是指什麼問題? 雪龍 http://bestlong.no-ip.com/ 學海無涯覺無盡,勤做筆記防失憶
------
http://blog.bestlong.idv.tw/
http://www.bestlong.idv.tw/
http://delphi-ktop.bestlong.idv.tw/
tonytop
中階會員


發表:6
回覆:114
積分:89
註冊:2003-12-04

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-04-13 22:49:16 IP:203.204.xxx.xxx 未訂閱
你沒有在ADOQuery1按滑鼠點兩下或按右鍵選「Fields Editor」中, 把invdate欄位加進來,導致ADOQuery2語法invdate =:invdate得不 到正確的值,所以datetime還是可以關聯滴^_^ <[忙盲茫]> ☆會程式不是罪啊☆
nsf20000
一般會員


發表:12
回覆:10
積分:4
註冊:2005-03-19

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-04-14 08:26:31 IP:219.133.xxx.xxx 未訂閱
各位大大,請看錯誤提示! 如果將其中的ShipDate換成其它的字段(字符型)就不出現問題! 救命! 發表人 - nsf20000 於 2005/04/14 08:55:07
bestlong
站務副站長


發表:126
回覆:734
積分:512
註冊:2002-10-19

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-04-14 11:09:14 IP:211.22.xxx.xxx 未訂閱
ADOQuery1 有一個Parameters 屬性, 點開後請調整該屬性的 DataType 為 ftDateTime. 雪龍 http://bestlong.no-ip.com/ 學海無涯覺無盡,勤做筆記防失憶
------
http://blog.bestlong.idv.tw/
http://www.bestlong.idv.tw/
http://delphi-ktop.bestlong.idv.tw/
James
高階會員


發表:10
回覆:290
積分:220
註冊:2002-07-25

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-04-14 13:17:27 IP:220.134.xxx.xxx 未訂閱
ADO 的 Datetime 型別的精確度和 SQL Server 資料庫裡面的 Datetime 型別 的精確度不同 , 使用上最好要注意一點 !!!
nsf20000
一般會員


發表:12
回覆:10
積分:4
註冊:2005-03-19

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-04-14 13:52:17 IP:219.133.xxx.xxx 未訂閱
引言: ADOQuery1 有一個Parameters 屬性, 點開後請調整該屬性的 DataType 為 ftDateTime. 雪龍 http://bestlong.no-ip.com/ 學海無涯覺無盡,勤做筆記防失憶
shipdate的默認類型為ftDateTime,不需要作任何更改啊!
bestlong
站務副站長


發表:126
回覆:734
積分:512
註冊:2002-10-19

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-04-14 14:41:43 IP:211.22.xxx.xxx 未訂閱
引言: shipdate的默認類型為ftDateTime,不需要作任何更改啊!
你的問題不是關聯欄位 invdate 的問題. 而是資料欄位 SHIPDATE 在執行時的形態轉換問題, 如果確定資料庫的 SHIPDATE 欄位是 DateTime 型態的話, 請再確認你處理 SHIPDATE 欄位的的 TField 元件是用的是 TDateTimeField 而不是 TStringField. 另外你是連接什麼資料庫呢? 雪龍 http://bestlong.no-ip.com/ 學海無涯覺無盡,勤做筆記防失憶
------
http://blog.bestlong.idv.tw/
http://www.bestlong.idv.tw/
http://delphi-ktop.bestlong.idv.tw/
nsf20000
一般會員


發表:12
回覆:10
積分:4
註冊:2005-03-19

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-04-14 17:04:22 IP:219.134.xxx.xxx 未訂閱
'請再確認你處理 SHIPDATE 欄位的的 TField 元件是用的是 TDateTimeField 而不是 TStringField.'    bestlong兄 能否解釋一二?    好象設置了Sql語句后,Adoquery的Parameter已自動建立了,請查看下圖 但是在設置adoquery2.Active:=true時仍然出現了上樓所示的錯誤! 發表人 - nsf20000 於 2005/04/14 17:21:00
pillar62
資深會員


發表:9
回覆:324
積分:271
註冊:2002-04-15

發送簡訊給我
#10 引用回覆 回覆 發表時間:2005-04-14 17:33:49 IP:210.64.xxx.xxx 未訂閱
你好 試試看在adoQuery的parameters裡面看看是不是會有一個參數在那邊,然後看一下他的型態是不是datetime!!如果不是就要改成datetime!! Pillar Wang
------
Pillar Wang
nsf20000
一般會員


發表:12
回覆:10
積分:4
註冊:2005-03-19

發送簡訊給我
#11 引用回覆 回覆 發表時間:2005-04-14 18:55:07 IP:219.134.xxx.xxx 未訂閱
請看圖示: 其實還是老樣子,我早就注意到數据類型了! 哪位大大能解惑啊!
引言: 你好 試試看在adoQuery的parameters裡面看看是不是會有一個參數在那邊,然後看一下他的型態是不是datetime!!如果不是就要改成datetime!! Pillar Wang
Mickey
版主


發表:77
回覆:1882
積分:1390
註冊:2002-12-11

發送簡訊給我
#12 引用回覆 回覆 發表時間:2005-04-14 22:07:54 IP:218.32.xxx.xxx 未訂閱
純粹是精度問題, Float 與 DateTime 欄位的 Locate 與 Link, 向來問題很大,    如果你只是精度要求到 "日", 那建議你資料庫用 Int 欄位型態, 因為 TDateTime 轉換容易,    總之必須要讓小數精度有一定的規範, 否則問題會很多, 這就是所謂的 Truncation Error 電子數值計算永遠的痛.  發表人 -
bestlong
站務副站長


發表:126
回覆:734
積分:512
註冊:2002-10-19

發送簡訊給我
#13 引用回覆 回覆 發表時間:2005-04-14 23:06:16 IP:61.59.xxx.xxx 未訂閱
你在發問中寫出 ADOQuery1.SQL = select invdate from table1 ADOQuery2.SQL = select item from table2 where invdate = :invdate 結果之後又冒出 SHIPDATE 的 Parameters[0] 是否前面 SQL 與 SHIPDATE 是兩回事情 ? 另外正如 Mickey 所說的 DateTime 欄位並不適合當作關聯欄位處理, 其原因就是精度的問題. 比較建議當做關聯欄位的型態是字串與整數兩種. 如果真要用日期的話, 我個人的處理模式也是轉換成字串來儲存. 雪龍 http://bestlong.no-ip.com/ 學海無涯覺無盡,勤做筆記防失憶
------
http://blog.bestlong.idv.tw/
http://www.bestlong.idv.tw/
http://delphi-ktop.bestlong.idv.tw/
nsf20000
一般會員


發表:12
回覆:10
積分:4
註冊:2005-03-19

發送簡訊給我
#14 引用回覆 回覆 發表時間:2005-04-15 08:49:40 IP:218.18.xxx.xxx 未訂閱
bestlong兄:兩個SQL其實是一回事,只不由invdate改為ShipDate而已. 謝謝Mickey版主与bestlong兄,現在看來,确實是Datetime類型不太符合作數据關聯. 我已經將其改正為字符類型并重新沒計了一個function作處理,已調試通過.以后我會盡量避免使用Datetime作關聯. 再次謝謝bestlong兄! 發表人 - nsf20000 於 2005/04/15 08:52:09
系統時間:2024-07-01 9:50:30
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!