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

使用 TADOQuery 查詢欄位問題??

缺席
elvis114
一般會員


發表:37
回覆:53
積分:18
註冊:2003-06-17

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-08-29 11:41:08 IP:211.22.xxx.xxx 訂閱
使用 Delphi6 元件 TADOQuery 查詢 Sql Command :
Select A.Branch,A.Account,A.TradeType, A.CommodityID,A.Commodity,A.Bscode,A.SettlementDate,A.PriceType,A.OrderType, A.OrdSeq,A.OrigOrdSeq,A.PreOrdSeq,A.RecordType,A.TradeAction,A.OrderNo, A.Bscode1,A.SettlementDate1,A.StrikePrice1,A.RightType1, A.BScode2,A.SettlementDate2,A.StrikePrice2,A.RightType2, A.OpenOffset,A.OrdPrice,A.OrdLots,A.ChangeLots,A.LeavesLots,A.CumLots, A.Status,A.Valid,A.SessionType,A.SenderID,A.InPutIP,A.ErrCode, A.OrderDate,A.TradeDate,A.MatchDate,A.SysReplyDate,A.CAID, A.Server80IP,A.WebServerIP,A.OrderMatchIP,A.CreateTime,A.ModifyTime, B.Name,C.Msg
From Order_s A , Account B , ErrMsg C Where 1=1
And A.Branch = '000'
and A.Account = '1234567'
and A.Account=B.Account and A.Branch=B.Branch
and C.ErrCode = A.ErrCode
and TO_CHAR(A.TradeDate, 'YYYYMMDD') BETWEEN '20070829' AND '20070829'
Order By A.OrderDate desc
當 ADO.OPEN 時會出現 如果少一些欄位 select 就不會發生此問題,請問是不是 TADOQuery 元件有 Bug
??
Order_S Table,原本舊的45個欄位,是配合專案再增加到 63個欄位,就會發生此問題,麻煩大大,謝謝‧
------

南無藥師琉璃光如來
保佑您
johnber
一般會員


發表:2
回覆:9
積分:2
註冊:2003-09-04

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-08-29 11:47:36 IP:220.229.xxx.xxx 訂閱
會不會是字串太長? 要不要將字串拆開?
elvis114
一般會員


發表:37
回覆:53
積分:18
註冊:2003-06-17

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-08-29 11:52:58 IP:211.22.xxx.xxx 訂閱
我有試過 sql command :
Select A.*,B.Name,C.Msg
From Order_s A , Account B , ErrMsg C
Where 1=1
And A.Branch = '000'
and A.Account = '1234567'
and A.Account=B.Account and A.Branch=B.Branch
and C.ErrCode = A.ErrCode
and TO_CHAR(A.TradeDate, 'YYYYMMDD') BETWEEN '20070829' AND '20070829'
Order By A.OrderDate desc
問題一樣??
------

南無藥師琉璃光如來
保佑您
瘋狂火星人
一般會員


發表:1
回覆:29
積分:6
註冊:2005-06-17

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-08-29 20:51:54 IP:218.169.xxx.xxx 訂閱
這串sql指令如果拿到QueryAnalyser上執行會正確嗎???

另外請教,where 1=1 <==這個1=1是???


===================引 用 elvis114 文 章===================
我有試過 sql command :
Select A.*,B.Name,C.Msg
From Order_s A , Account B , ErrMsg C
Where 1=1
And A.Branch = '000'
and A.Account = '1234567'
and A.Account=B.Account and A.Branch=B.Branch
and C.ErrCode = A.ErrCode
and TO_CHAR(A.TradeDate, 'YYYYMMDD') BETWEEN '20070829' AND '20070829'
Order By A.OrderDate desc
問題一樣??
sryang
尊榮會員


發表:39
回覆:762
積分:920
註冊:2002-06-27

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-08-29 22:43:36 IP:124.10.xxx.xxx 訂閱
用 TADODataSet 試試
ADODataSet.CommandText := '你的 SQL 命令';
ADODataSet.Open;

個人使用的習慣是只使用 TADOConnection、TADOCommand、TADODataSet 這三個,而不使用 TADOQuery、TADOTable
因為 TADOQuery、TADOTable 這兩個是 Borland 為了讓 BDE 的使用者能「無痛升級」ADO 而另外寫的
真的「無痛」嗎?有不少人吃過 TADOQuery 的虧喔~~
------
歡迎參訪 "腦殘賤貓的備忘錄" http://maolaoda.blogspot.com/
elvis114
一般會員


發表:37
回覆:53
積分:18
註冊:2003-06-17

發送簡訊給我
#6 引用回覆 回覆 發表時間:2007-09-11 18:17:22 IP:211.22.xxx.xxx 訂閱
ADODataSet.Clear;
ADODataSet.CommandText := 'select * from Order_s ';
ADODataSet.Open;

問題一樣 謝謝
===================引 用 sryang 文 章===================
用 TADODataSet 試試
ADODataSet.CommandText := '你的 SQL 命令';
ADODataSet.Open;

個人使用的習慣是只使用 TADOConnection、TADOCommand、TADODataSet 這三個,而不使用 TADOQuery、TADOTable
因為 TADOQuery、TADOTable 這兩個是 Borland 為了讓 BDE 的使用者能「無痛升級」ADO 而另外寫的
真的「無痛」嗎?有不少人吃過 TADOQuery 的虧喔~~
------

南無藥師琉璃光如來
保佑您
johnber
一般會員


發表:2
回覆:9
積分:2
註冊:2003-09-04

發送簡訊給我
#7 引用回覆 回覆 發表時間:2007-09-11 21:21:50 IP:61.66.xxx.xxx 訂閱
從您貼的錯誤訊息圖片和您的描述, 應該是您新增的某個欄位出問題,
建議您從原本沒出錯的 SQL query 開始, 一次加入一個欄位, 看是哪個欄位造成錯誤,
是個笨方法, 但在我們沒法參與瞭解您整個專案的情形下, 應該可以找出問題所在.

===================引 用 elvis114 文 章===================

Order_S Table,原本舊的45個欄位,是配合專案再增加到 63個欄位,就會發生此問題,麻煩大大,謝謝‧
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#8 引用回覆 回覆 發表時間:2007-09-12 11:48:26 IP:59.124.xxx.xxx 未訂閱
Databse(應該是 Oracle 吧) & 版本為何 !?
Order_s 的 TABLE Structure 為何 !?
可否提供 Create Table 的語法 !?

我猜測應該是 BLOB Or Long 的問題!
------
Fishman
elvis114
一般會員


發表:37
回覆:53
積分:18
註冊:2003-06-17

發送簡訊給我
#9 引用回覆 回覆 發表時間:2007-09-12 13:22:13 IP:220.130.xxx.xxx 訂閱
謝謝各位大大的幫忙,我找到問題所在了,因為專案所以將 Order_s Table 中的 SYSREPLYDATE 欄位原本為 DATE 資料形態,
改為 TIMESTAMP(2) 資料形態 ,所以 TADOQuery 去 Open 這樣的欄位就出現 請問我使用 Delphi6 中的 ADO 物件不支援,那一個 Delphi 版本,
會 ADO 支援TIMESTAMP(2) 資料形態 ,或是更高的版本??
------

南無藥師琉璃光如來
保佑您
johnber
一般會員


發表:2
回覆:9
積分:2
註冊:2003-09-04

發送簡訊給我
#10 引用回覆 回覆 發表時間:2007-09-12 15:42:13 IP:220.229.xxx.xxx 訂閱
我以 SQLServer 實驗, SQLServer 有 timestamp 的資料型態, Delphi7 的 ADOQuery 也支援, 其型態為 TBytesField.

若您的 ADOQuery 連結的欄位是固定那幾個而不是動態的, 不妨在 ADOQuery 的 FieldsEditor 內以自動加入試試, ADOQuery 會自動幫您找最適合的資料型態, 我想 Delphi6 應該也行的.

===================引 用 elvis114 文 章===================
謝謝各位大大的幫忙,我找到問題所在了,因為專案所以將 Order_s Table 中的 SYSREPLYDATE 欄位原本為 DATE 資料形態,
改為 TIMESTAMP(2) 資料形態 ,所以 TADOQuery 去 Open 這樣的欄位就出現 請問我使用 Delphi6 中的 ADO 物件不支援,那一個 Delphi 版本,
會 ADO 支援TIMESTAMP(2) 資料形態 ,或是更高的版本??
sryang
尊榮會員


發表:39
回覆:762
積分:920
註冊:2002-06-27

發送簡訊給我
#11 引用回覆 回覆 發表時間:2007-09-12 15:53:38 IP:59.125.xxx.xxx 訂閱
SQL Server 的 timestamp 跟 oracle 的 timestamp(2) 是兩碼子事
SQL Server 的 timestamp 只是一個隨機取出來的數字,以二進位方式儲存,跟時間一點關係也沒有
oracle 的 timestamp(2) 真的就是時間戳記了

所以用 SQL Server 來測試這個問題是不準的

以下引用 SQL Server 線上叢書

timestamp

timestamp 是顯露自動產生的二位元數字的資料型別,它保證在資料庫中為唯一的。timestamp 通常用於版本戳記資料表資料列的機制。儲存大小為 8 位元組。
備註
Transact-SQL timestamp 資料型別不同於 SQL-92 標準所定義的 timestamp 資料型別。但 SQL-92 timestamp 資料型別卻相等於 Transact-SQL datetime 資料型別。
------
歡迎參訪 "腦殘賤貓的備忘錄" http://maolaoda.blogspot.com/
johnber
一般會員


發表:2
回覆:9
積分:2
註冊:2003-09-04

發送簡訊給我
#12 引用回覆 回覆 發表時間:2007-09-13 09:41:21 IP:220.229.xxx.xxx 訂閱
呵呵, 汗顏......, 沒先去看 SQLServer 線上叢書.
長見識, 受教了.


===================引 用 sryang 文 章===================
所以用 SQL Server 來測試這個問題是不準的

以下引用 SQL Server 線上叢書

timestamp

timestamp 是顯露自動產生的二位元數字的資料型別,它保證在資料庫中為唯一的。timestamp 通常用於版本戳記資料表資料列的機制。儲存大小為 8 位元組。
備註
Transact-SQL timestamp 資料型別不同於 SQL-92 標準所定義的 timestamp 資料型別。但 SQL-92 timestamp 資料型別卻相等於 Transact-SQL datetime 資料型別。
elvis114
一般會員


發表:37
回覆:53
積分:18
註冊:2003-06-17

發送簡訊給我
#13 引用回覆 回覆 發表時間:2007-09-13 10:10:43 IP:220.130.xxx.xxx 訂閱
那一個 Delphi 版本TIMESTAMP(2) 資料形態 ,或是更高的版本??



------

南無藥師琉璃光如來
保佑您
系統時間:2024-05-17 23:45:54
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!