Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

ClientDataSet TBCDField राउंडिंग

मैंने समस्या को दूसरे समाधान से हल किया।

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;

समस्या है ((फ़ील्डडिफ़्स [intCont]। आकार =0) और (फ़ील्डडिफ़्स [intCont]। डेटा टाइप =ftBCD))। जब ClientDataSet बनाया जाता है, तो फ़ील्ड को छोटा कर दिया जाता है, क्योंकि जब oracle में "SUM(TOTAL)" जैसा कोई फ़ंक्शन होता है, तो परिणाम फ़ील्ड आकार 0 के साथ बनाया जाता है, इसलिए क्लाइंटडेटासेट फ़ील्ड को पूर्णांक फ़ील्ड के रूप में संभालता है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. त्रुटि 404 EM 12c के साथ नहीं मिली

  2. ORA-00907 दायां कोष्ठक समस्या गुम है - इनसाइड इंसर्ट क्वेरी द्वारा ऑर्डर के साथ चयन करें

  3. अवधारणा:जावा प्रोग्राम बनाएं और इसे ओरेकल डीबी में लोड करें - रैपर फ़ंक्शन जावा फ़ंक्शन को रिटर्न के साथ कॉल करता है

  4. इश्यू बिल्डिंग cx_Oracle - libclntsh.so.11.1 => नहीं मिला

  5. Oracle इकाई फ्रेमवर्क प्रदाता DateTime.Now को मिलीसेकंड के साथ संग्रहीत नहीं करता है