0

我正在从表中查询 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;
4

1 回答 1

0

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

于 2015-02-05T08:42:49.667 回答