0

テーブルから1つの値をクエリしています。dbでは、その値は48.8です。

私のアプリがBDEのネイティブOracleSQLLinkドライバーを使用している場合、すべてがOKですが、それでも48.8です。

次に、ODBCデータソース(Oracleの最新ドライバー)を使用する別のBDEエイリアスを使用するようにアプリを作成します。そして現在表示されている値は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 に答える