sql >> Database >  >> RDS >> Oracle

ClientDataSet TBCDVeldafronding

Ik heb het probleem opgelost met een andere oplossing.

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;

het probleem is ((FieldDefs[intCont].Size =0) en (FieldDefs[intCont].DataType =ftBCD)). wanneer ClientDataSet wordt gemaakt, wordt het veld afgekapt, omdat wanneer orakel een functie heeft zoals "SUM(TOTAL)" het resultaatveld wordt gemaakt met grootte 0, dus de clientdataset behandelt het veld als geheel getal.



  1. MySQL invoegen in meerdere tabellen? (Database normalisatie?)

  2. mysql proxy sokken

  3. Hoe kan ik een kolom toevoegen die op een andere kolom in dezelfde tabel wordt verhoogd?

  4. Hoe kan ik een array met booleaanse waarden opslaan in een MySql-database?