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

資料庫負值,Select 過來變正值

尚未結案
eric039
中階會員


發表:57
回覆:126
積分:51
註冊:2002-11-30

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-02-12 17:03:03 IP:211.75.xxx.xxx 未訂閱
請問各位: 我是用 MS SQL Server 資料表內有一欄位,type 是用 Decimal 這個資料表有一筆資料,這個欄位值是 -1 可是當我 Select * From 資料表 到 Delphi 的 ADOQuery 中,這個值變成正 1 不是 -1 這是怎麼回事 請大家幫忙 Eric Lin
------
Eric Lin
Mickey
版主


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-02-13 08:35:56 IP:61.219.xxx.xxx 未訂閱
引言: 請問各位: 我是用 MS SQL Server 資料表內有一欄位,type 是用 Decimal 這個資料表有一筆資料,這個欄位值是 -1 可是當我 Select * From 資料表 到 Delphi 的 ADOQuery 中,這個值變成正 1 不是 -1 這是怎麼回事 請大家幫忙 Eric Lin
我試不出來, 如果真有這種情況, 我勸大家趕快把 MS SQL 丟到垃圾桶, 太可怕了 ! /* 使用中文很辛苦,中華男兒當自強 */
chih
版主


發表:48
回覆:1186
積分:639
註冊:2002-04-02

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-02-13 08:40:48 IP:211.74.xxx.xxx 未訂閱
可以將你的程式POST上來讓大家Run看看嗎 ?? 如果你程式內沒有去更動值...應該不會這樣才對..
eric039
中階會員


發表:57
回覆:126
積分:51
註冊:2002-11-30

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-02-13 09:08:58 IP:211.75.xxx.xxx 未訂閱
我是很單純的 Select 而已。 並沒有做其他的變更。 我在 SQL Server 裡面看的資料是正確的。 可是在 Delphi 的 Watch 視窗看的值是正 1 Eric Lin
------
Eric Lin
chih
版主


發表:48
回覆:1186
積分:639
註冊:2002-04-02

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-02-13 09:12:15 IP:211.74.xxx.xxx 未訂閱
有沒有用實際的DB元件(Query,DbEdit)來open看看ㄋ??
引言: 我是很單純的 Select 而已。 並沒有做其他的變更。 我在 SQL Server 裡面看的資料是正確的。 可是在 Delphi 的 Watch 視窗看的值是正 1 Eric Lin
william
版主


發表:66
回覆:2535
積分:3048
註冊:2002-07-11

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-02-13 09:13:30 IP:147.8.xxx.xxx 未訂閱
引言:我是很單純的 Select 而已。 並沒有做其他的變更。 我在 SQL Server 裡面看的資料是正確的。 可是在 Delphi 的 Watch 視窗看的值是正 1 Eric Lin
Don't rely on the debugger too much. I remember long ago when debugging a COM dll, all evaluate/watch gave the wrong values... Try to use ShowMessage to show the actual value....
ddy
站務副站長


發表:262
回覆:2105
積分:1169
註冊:2002-07-13

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-02-13 10:00:43 IP:61.218.xxx.xxx 未訂閱
是不是所有的負值都會變正值? 還是只有-1會變成 1 ??        =============================================================================== 提醒您,貼錯文章可立即傳訊通知該版版主/站長/副站長協助處理,不要放著不管喔
eric039
中階會員


發表:57
回覆:126
積分:51
註冊:2002-11-30

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-02-13 18:05:44 IP:211.75.xxx.xxx 未訂閱
我有試過用一個新 AP 裡面只放DBGrid, connect, query, datasource 直接在 Query 裡設定 Sql.Add('Select * From TableName'); open; DBGrid 裡面的內容就是正的,不是負的 Why?????? Eric Lin
------
Eric Lin
Deni
一般會員


發表:0
回覆:1
積分:0
註冊:2002-03-14

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-02-20 12:50:17 IP:202.39.xxx.xxx 未訂閱
引言: 請問各位: 我是用 MS SQL Server 資料表內有一欄位,type 是用 Decimal 這個資料表有一筆資料,這個欄位值是 -1 可是當我 Select * From 資料表 到 Delphi 的 ADOQuery 中,這個值變成正 1 不是 -1 這是怎麼回事 請大家幫忙 Eric Lin
我也有遇到類似的問題 !! 資料欄位 Type 不論是 Decimal or Numeric 只要是精確度是個位數(小於10)那麼用 ADO 去抓取出來的值 只要負數都會變成正數 !! 但是使用 BDE 就沒有此問題了 !!
eric039
中階會員


發表:57
回覆:126
積分:51
註冊:2002-11-30

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-02-21 08:58:53 IP:211.75.xxx.xxx 未訂閱
可是我環境都是用 ADO 這樣還要用 BDE 有一點麻煩 有沒有其他的辦法 Eric Lin
------
Eric Lin
Mickey
版主


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

發送簡訊給我
#11 引用回覆 回覆 發表時間:2003-02-21 16:25:10 IP:61.219.xxx.xxx 未訂閱
引言: 可是我環境都是用 ADO 這樣還要用 BDE 有一點麻煩 有沒有其他的辦法 Eric Lin
1.這是 Delphi ADO 元件的 Bug.
  它將 decimal(x,0) or numeric(x,0) where w<10
  的 datatype 全部視為 longint (4 byte),
  事實 Data Size 只有 2 byte,造成如此的錯誤 !    2.短期的解決方式 : 將 DataBase Column DataType
  decimal(x,0) or numeric(x,0) where w<10 改用 smallint.    3.總之, 不要用decimal(x,0) or numeric(x,0),改用 tinyint,smallint
  ,int or bigint.
/* Free 和 Create 一樣重要 */ 發表人 - Mickey 於 2003/02/21 16:52:44
懷舊的人
高階會員


發表:28
回覆:152
積分:141
註冊:2003-01-08

發送簡訊給我
#12 引用回覆 回覆 發表時間:2003-02-21 17:26:05 IP:152.104.xxx.xxx 未訂閱
經過測試並沒有你說的現像,我想你必須說明你使用的資料庫版本,作業系統,及 DELPHI 的版本,你必須注意到是否有更新,我想可能是 ADO 的軀動程式的問題,請全部更新並作 ODBC 的追蹤,應該就可以了。
eric039
中階會員


發表:57
回覆:126
積分:51
註冊:2002-11-30

發送簡訊給我
#13 引用回覆 回覆 發表時間:2003-02-22 09:51:29 IP:211.75.xxx.xxx 未訂閱
謝謝大家的幫忙。 正如 Mickey 所言 可能真的 ADO Driver 的問題 把 Decimal 改成 Int Eric Lin
------
Eric Lin
懷舊的人
高階會員


發表:28
回覆:152
積分:141
註冊:2003-01-08

發送簡訊給我
#14 引用回覆 回覆 發表時間:2003-02-22 11:00:44 IP:61.219.xxx.xxx 未訂閱
引言: 我覺得因為一點 bug 就隨便更改 data type 這不是解決問題的方法,每一種 tools 或多或少多有 bug 所以才會出 patch ,何況不是所有的人都和你一樣有這方面的問題,萬一你更改了 type 又有問題,那你不是要換資料庫了,該自己改的就要改,是 BORLAND 的 BUG 就反應給 BORLAND, 你應該繼續追蹤為何有這種現象,好告訴後面的人萬一也發生了該如何處理,有時候前輩的話不一定是對的,因為最了解環境及狀況是你不是他,請繼續努力,謝謝。
Mickey
版主


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

發送簡訊給我
#15 引用回覆 回覆 發表時間:2003-02-24 09:07:10 IP:61.219.xxx.xxx 未訂閱
引言: 我覺得因為一點 bug 就隨便更改 data type 這不是解決問題的方法,每一種 tools 或多或少多有 bug 所以才會出 patch ,何況不是所有的人都和你一樣有這方面的問題,萬一你更改了 type 又有問題,那你不是要換資料庫了,該自己改的就要改,是 BORLAND 的 BUG 就反應給 BORLAND, 你應該繼續追蹤為何有這種現象,好告訴後面的人萬一也發生了該如何處理,有時候前輩的話不一定是對的,因為最了解環境及狀況是你不是他,請繼續努力,謝謝。
1.我的環境 D6 Updaye Pack 2 ; RTL Update Pack 2 或許該 Bug D7 已改正, 請有 D7 之同伴測測看. 2.我確認是 D6 Bug, 因為 : 2.1 Using PHP Script 確認非 OLE DB Provider Driver 問題. 2.2 Trace into ADODB.Pas TCustomADODataSet.GetFieldData function 3.是 BORLAND 的 BUG 就反應給 BORLAND, 我非常認同, 但"短期的解決方式"改 DB DataType 應該沒什麼不對, 因為"長期的解決方式"只有..."等", decimal(9) 與 smallint,我覺得 smallint data type 比較明確. /* Free 和 Create 一樣重要 */
懷舊的人
高階會員


發表:28
回覆:152
積分:141
註冊:2003-01-08

發送簡訊給我
#16 引用回覆 回覆 發表時間:2003-02-24 11:30:30 IP:152.104.xxx.xxx 未訂閱
很抱歉,我只是說 Bug 分為幾種 1. 自己程式的 Bug 2. 開發工具的 Bug 3. 驅動程式的 Bug 4. 資料庫的 Bug 你必須要知道 Bug 是那一種,才好找出應對之策,如這個問題你認定是 DELPHI 的 BUG ,你也作了一些測試,得到的答案是如此。如果 DELPHI 是犯人,你是法官,這樣的答案你覺得心安嗎? 通常為了不冤枉人,我們也必須再三求證,從不同的角度看看也許會有不同的結果。 通常要看到別人的錯誤很容易,但有些是假象,如果不仔細就指責別人的錯誤,萬一真相不是你所認定的,你對的起被你指責的人嗎? 有幾方面我希望你再試看看,也許你認為小題大作,但經過這些求證,那麼不管將來對與錯,你也可坦然面對,作人但求無愧於心,不是嗎? 1. 多測試幾種資料庫。 2. 換幾種不同的工具如 CB , VB , ...。 3. 多種作業系統或不同平台測試。 4. 更換幾種驅動程式。 如果你經過這幾種的測試,你的答案還是不變的話,那麼我認為你可以這樣說,但以你現在所作的測試你就認定這樣的結果,我想對 DELPHI 是不公平的。 如果有一種資料庫,以你先前的測試條件,但並沒有相同的結果出現,我認為你的答案就必須再修正,謝謝。 真誠公平的對待每一個人,每一件事物。 祝福你
懷舊的人
高階會員


發表:28
回覆:152
積分:141
註冊:2003-01-08

發送簡訊給我
#17 引用回覆 回覆 發表時間:2003-02-24 11:31:36 IP:152.104.xxx.xxx 未訂閱
很抱歉,我只是說 Bug 分為幾種 1. 自己程式的 Bug 2. 開發工具的 Bug 3. 驅動程式的 Bug 4. 資料庫的 Bug 你必須要知道 Bug 是那一種,才好找出應對之策,如這個問題你認定是 DELPHI 的 BUG ,你也作了一些測試,得到的答案是如此。如果 DELPHI 是犯人,你是法官,這樣的答案你覺得心安嗎? 通常為了不冤枉人,我們也必須再三求證,從不同的角度看看也許會有不同的結果。 通常要看到別人的錯誤很容易,但有些是假象,如果不仔細就指責別人的錯誤,萬一真相不是你所認定的,你對的起被你指責的人嗎? 有幾方面我希望你再試看看,也許你認為小題大作,但經過這些求證,那麼不管將來對與錯,你也可坦然面對,作人但求無愧於心,不是嗎? 1. 多測試幾種資料庫。 2. 換幾種不同的工具如 CB , VB , ...。 3. 多種作業系統或不同平台測試。 4. 更換幾種驅動程式。 如果你經過這幾種的測試,你的答案還是不變的話,那麼我認為你可以這樣說,但以你現在所作的測試你就認定這樣的結果,我想對 DELPHI 是不公平的。 如果有一種資料庫,以你先前的測試條件,但並沒有相同的結果出現,我認為你的答案就必須再修正,謝謝。 真誠公平的對待每一個人,每一件事物。 祝福你
Mickey
版主


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

發送簡訊給我
#18 引用回覆 回覆 發表時間:2003-02-24 12:33:43 IP:61.219.xxx.xxx 未訂閱
1. 我認為 Delphi 是很棒的開發工具. 2. 用 Oracle 9i number(9) 結果一樣. 3.  /*
系統時間:2024-06-18 6:39:48
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!