Oracle
 sql >> Baza danych >  >> RDS >> Oracle

ClientDataSet TBCDF Zaokrąglanie pól

Problem rozwiązałem innym rozwiązaniem.

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;

problem to ((FieldDefs[intCont].Size =0) i (FieldDefs[intCont].DataType =ftBCD)). kiedy tworzony jest ClientDataSet, pole jest obcinane, ponieważ gdy Oracle ma funkcję taką jak "SUM(TOTAL)", pole wynikowe jest tworzone z rozmiarem 0, więc clientdataset obsługuje to pole jako pole typu 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. Tylko kopia zapasowa schematu SQL?

  2. Jak przeanalizować ciąg rozdzielany przecinkami w PL/SQL?

  3. Czego powinienem użyć zamiast sekwencji, aby uniknąć luk?

  4. Jak uzyskać kolumnę klucza podstawowego w Oracle?

  5. cx_Oracle nie łączy się podczas używania SID zamiast nazwy usługi w ciągu połączenia