При использовании ODBC поле TQuery Float неявно округляется до целого числа - PullRequest
0 голосов
/ 24 ноября 2011

Я запрашиваю 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 голосов
/ 05 февраля 2015

Я не нашел правильного решения. Обходной путь - запросить поле в виде строки и преобразовать его назад и вперед на стороне клиента.

...