Adoでマイナス数値を取得する場合
なぜか、マイナスが欠落してしてしまいます。
回避方法をご存知の方ご教授をお願いします。
環境
Verison Delphi7 Pro
DB Oracle9i
原因は不明。Delphi6 Ent + Oracle9i でも同様の現象が起きる。
解決にはならないが、簡単な回避方法..。
→Delphi 2005 Ent でコンパイルする。
(ソースの変更必要なし。ADOのversionは関係ないものと思われる。)
多分、Delphiのバグなのかも知れない。(推測の域ですが..)
ちょっと検索した所、ADODB.pasの
TCustomADODataSet.GetFieldDataのVarToBufferプロシージャを
以下のように修正すると良いというような話がありました。
ftAutoInc, ftInteger:
if (wReserved1 = 32768) then
Integer(Buffer^) := -lVal
else
Integer(Buffer^) := lVal;
ftSmallintも同じように修正?
Delphi2005でも修正されていないようですので、真偽不明ですが
ご参考になれば。
>TCustomADODataSet.GetFieldDataのVarToBufferプロシージャを
>以下のように修正すると良いというような話がありました。
もしかして
Oracleを使用したらとのことですが、SQLServerでも同じことが
起きる可能性があるのですか?
> 起きる可能性があるのですか?
ありますね。たぶん。
ゲゴゲロ!!(古(^_^;))
これは、大変だ!。
今のところ、D7.D2005で期待した以外の動作の事例は
(エラー)は報告されていませんが、今後の推移を見守ります。
また、投稿内容は参考にさせていただきます。
ありがとうございます。
ツイート | ![]() |