使用ODBC时,TQuery Float字段隐式舍入为整数

时间:2011-11-24 04:28:57

标签: oracle delphi odbc bde

我正从表中查询1个值。在db中它的值是48.8

当我的应用程序使用BDE的本机Oracle SQL Link驱动程序时,一切正常,它仍然是48.8。

然后我让应用程序使用另一个BDE别名,它使用ODBC数据源(来自Oracle的最新驱动程序)。现在显示的值是48.0


详情

该列为factW NUMBER(10, 3)

测试代码:

var
  q: TQuery;
begin
  q := TQuery.Create( SELF );
  try
    q.DatabaseName := 'Realize';
    q.SQL.Text := 'SELECT factW, TO_CHAR(factW) charW'
                 +'FROM bSertific WHERE id_sertific = :id';
    q.ParamByName('id').AsInteger := dm1.Sertif1ID_SERTIFIC.AsInteger;
    q.Open;

    ShowMessage( ' factW = ' 
                 + FloatToStrF( 
                        q.FieldByName('factW').AsFloat, 
                        ffFixed, 
                        5, 3 )                                   // here 48.000
                 + ' charW = ' + q.FieldByName('charW').AsString // here 48.8
    );
  finally
    q.Free;
  end;
end;

1 个答案:

答案 0 :(得分:0)

我找不到合适的解决方案。解决方法是将字段作为字符串进行查询,并在客户端来回转换。