accessのフィールドの取得について


岸田光明  2005-01-28 12:37:57  No: 12902  IP: [192.*.*.*]

お世話になってます。

今回、ACCESSの単精度浮動小数点型のフィールドから
edit81.Text:=Query1.FieldByName('aaaa').AsString;
のようにして値を取得したのですが、ACCESSでは52.9になっているのに
delphiの方では、50.5999985のようになってしまいます。

os はXPで、delphiは7proを使っているのですが
このような場合どのような対処を取ればACCESSの表示どおりの値を
取得できるようになるでしょうか?

すいませんが、ご指導お願いいたします。

編集    削除
どら  2005-01-28 18:01:50  No: 12903  IP: [192.*.*.*]

試していませんが単精度浮動小数点型のフィールドを
AsStringとするのはやめたほうがいいと思います。
edit81.Text := FloatToStr(Query1.FieldByName('aaaa').AsFloat);
としてはどうですか?

編集    削除
どら  2005-01-28 18:11:44  No: 12904  IP: [192.*.*.*]

試してみましたが私の環境(Delphi5Pro,Win2000,Access2000,BDE接続)では
edit81.Text := Query1.FieldByName('aaaa').AsString;
edit81.Text := FloatToStr(Query1.FieldByName('aaaa').AsFloat);
のどちらも52.9000015258789と表示されますね。

編集    削除
@っしー  2005-01-28 19:57:35  No: 12905  IP: [192.*.*.*]

edit81.Text := FormatFloat('0.#', Query1.FieldByName('aaaa').AsFloat);

とするか、Accessのフィールド型を倍精度にしてみる。

ほかにも、色々な方法があります。

編集    削除
岸田光明  2005-01-29 04:49:17  No: 12906  IP: [192.*.*.*]

どらさん、@っしーさん、ご指導ありがとうございます。

早速試してみたいと思います。

いろいろ探しているうちに今度は
ACCESSのOLEオブジェクト型の画像を代入&取得する方法
が知りたくなってしまいました。

もし知っていましたら教えていただけると助かります。

編集    削除