Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Pembulatan ClientDataSet TBCDField

Saya memecahkan masalah dengan solusi lain.

type
   TInternalQuery = class(TQuery)
   protected
      procedure InternalInitFieldDefs; override;
   public
      constructor Create(AOwner: TComponent; const qryGen: TQuery); reintroduce;
   end;

constructor TInternalQuery.Create(AOwner: TComponent; const qryGen: TQuery);
var
   intCont: Integer;
begin
   inherited Create(AOwner);
   Self.DatabaseName := qryGen.DatabaseName;
   Self.UpdateObject := qryGen.UpdateObject;

   Self.SQL.Text := qryGen.SQL.Text;

   for intCont := 0 to Self.ParamCount - 1 do
   begin
     Self.Params[intCont].Value := qryGen.Params[intCont].Value;
   end;  
end;

procedure TInternalQuery.InternalInitFieldDefs;
var
   intCont: Integer;
begin
   inherited InternalInitFieldDefs;
   for intCont := 0 to FieldDefs.Count - 1 do
   begin
      if (FieldDefs[intCont].Size = 0) and (FieldDefs[intCont].DataType = ftBCD) then
      begin
         FieldDefs[intCont].Precision := 64;
         FieldDefs[intCont].Size := 32;
      end;  
   end;  
end;

masalahnya adalah ((FieldDefs[intCont].Size =0) dan (FieldDefs[intCont].DataType =ftBCD)). ketika ClientDataSet dibuat, bidang tersebut terpotong, karena ketika oracle memiliki fungsi seperti "SUM(TOTAL)" bidang hasil dibuat dengan ukuran 0, sehingga clientdataset menangani bidang tersebut sebagai bidang Integer.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apa Nama Batasan Default di Oracle?

  2. excel ke Oracle db menggunakan VS 2005 C #

  3. Haruskah saya mengindeks kolom kunci utama di Oracle?

  4. PLS-00049 VARIABEL PENGIKAT BURUK

  5. Dalam kinerja klausa versus klausa OR