 TpFIBDataSet:

 :

 Options:
   poTrimCharFiels   -   ,    char  
                        .
   poAllowChangeSQLs -   
                            . 
                          . 
   poAppendMode      -  ,    ,
                         -   ,
                         .

   poRefreshAfterPost -      RefreshSQL  
                         Post    .  
         .      
    . 

   poStartTransaction -      .
   poAutoFormatFields -   ,   scale  
                        DisplayFormat,EditFormat.
   poProtectedEdit    -  .      
                            ,    
   " ",     . 
        ReadCommited. 
   RepeatebleRead    LockRecord,     
  .  

DefaultFormats: 
  DateTimeDisplayFormat:     
  NumericDisplayFormat :       .
  NumericEditFormat    :       .

     :    NUMERIC(*,*)    
                      .



AllowedUpdateKinds:

     ( ),   
  SQL . :      
         . 
         .   
 Andrew Velikoredchanin 2:5026/29. 

-----------------------------------------
AutoUpdateOptions:    ""  .

 UpdateTableName:string; -  
 KeyFields      :string; -   where clause.
 AutoReWriteSqls:boolean; -      UpdateSQL .
 GeneratorName :string; -   .
 SelectGenID:boolean;-     .
 GenBeforePost:boolean;-       Post
                          OnNewRecord.

ReceiveEvents:Tstrings   -. . TDataSetsContainer.
Container:   .  . TDataSetsContainer.




PrepareOptions:TpPrepareOptions

   pfSetRequiredFields - 
        NOT NULL   Field.Required:=true
   pfSetReadOnlyFields -
        CALCULATED   Field.ReadOnly:=true  
   pfImportDefaultValues-
         c  DEFAULT  
      Field.DefaultExpression:= DEFAULT_SOURCE
      (     OnNewRecord)
   psApplyRepositary -
       -. 
    ( -    
      -  FIBDatabase
    ) 


:

-----------------------------------------
function  ParamByName(const ParamName:string): TFIBXSQLVAR;
                .

-----------------------------------------
function  ParamNameCount(const ParamName:string):integer;
 :              
  :      SelectSQL.

-----------------------------------------
function   GenerateSQLText
            (const TableName,KeyFieldNames:string;SK:TpSQLKind):string;
: TableName   -  
           KeyFieldNames-    where clause
           SK          -  

 :     UpdateSQL
                         .

-----------------------------------------
procedure GenerateSQLs;           

:  ""  .  
          AutoUpdateOptions.KeyFields ='' ,
                 
         where     .     
           . 

-----------------------------------------
function  DomainForField(Fld:Variant):string;
 :                     .
  :    . 
                            .
-----------------------------------------
function  GetFieldOrigin(Fld:TField):string;
 :  
  :    . 
                            .
-----------------------------------------
function  FieldByOrigin(const aOrigin:string):TField;
 :   -    .
  :   . 
-----------------------------------------
procedure OpenWP(ParamValues: array of Variant);
      .
-----------------------------------------

procedure DoSort(Fields: array of const; Ordering: array of Boolean);
 .       Sort 
                        .

-----------------------------------------
function  LockRecord(RaiseErr:boolean):TLockStatus;
 :    Update    /. 
                OnLockError.

-----------------------------------------
procedure CloneCurRecord(IgnoreFields:array of const);
: 
            IgnoreFields-   ( : , 
              ,    
            ) 

           .
        .

-----------------------------------------
procedure CloneRecord(SrcRecord:integer; IgnoreFields:array of const);
 : SrcRecord   -   .
            IgnoreFields-   ( : , 
              ,    
            ) 
           
.          .
-----------------------------------------
function  RecordFieldValue(Field:TField;RecNumber:integer):Variant;
 : Field       -  
            RecNumber   -   .
  :     .
-----------------------------------------
                                         

 procedure ApplyUpdToBase;  
    : ApplyUpdates     
                  .
-----------------------------------------
 procedure CommitUpdToCach; // Clear CU buffers
    :  
-----------------------------------------
  .
   FIBDataSet1.Transaction.StartTransaction;
   try  
    FIBDataSet1.ApplyUpdToBase;
    FIBDataSet1.Transaction.Commit; // or  CommitRetaining
    FIBDataSet1.CommitUpdToCach
   except
    FIBDataSet1.Transaction.RollBack;
    // if NeedCancelUpdates then
    FIBDataSet1.CancelUpdates
   end
-----------------------------------------
function   AddUpdateObject(Value:TpFIBUpdateObject):integer;
 :             Value -pFIBUpdateObject.
  :   UpdateObject  . 
-----------------------------------------
procedure  RemoveUpdateObject(Value:TpFIBUpdateObject);
 :             Value -pFIBUpdateObject.
  :    UpdateObject  
-----------------------------------------

function  ExistActiveUO(KindUpdate:TUpdateKind):boolean; 
 :    KindUpdate-           
  :       UpdateObjects.
 . :  TpFIBUpdateObject
-----------------------------------------

function  ArrayFieldValue(Field:TField):Variant;

: Field -   SQL_ARRAY.

 : 
           Variant array of Variant; -  Array 
-----------------------------------------


procedure SetArrayValue(Field:TField;Value:Variant);

:
           Field -   SQL_ARRAY. 
           Value:Variant array of Variant; -  

 :    Array . 

:  ,      .
               Update/Insert  
           Refresh.     .  
-----------------------------------------



function GetElementFromValue( Field:TField;
          Indexes:array of integer):Variant;

:
           Field :   SQL_ARRAY.
           Indexes:  
 :   

-----------------------------------------


procedure SetArrayElementValue(Field:TField;Value:Variant;
     Indexes:array of integer
);

:
           Field :   SQL_ARRAY.
           Value:  Variant ; -    
           Indexes:  

 :     . 

:  ,      .
               Update/Insert  
           Refresh.     .  

-----------------------------------------



:

 OnGetRecordError:         .
                    -    DB   3.

 BeforeFetchRecord:      . 
 AfterFetchRecord :      .  
 OnUserEvent      :        
                     .  . TDataSetsContainer.
----------------------------------------- 

TpFIBQuery:
  : procedure ExecProc;     
                                .

  procedure  ExecProcedure(const ProcName:string;InputParams:array of variant);

  :  
       ProcName    InputParams.


  procedure ExecProcedure(const ProcName:string);overload;
  :  
       ProcName  .
   (for D4,D5 only)   

  function  BlobToStrings(const BlobFieldName:string;Destination:Tstrings):boolean;
  :  
          Destination:Tstrings
   : true  - 
              false - 


  function  TpFIBQuery.BlobAsString(const BlobFieldName:string):string;
   :  -  -

  :
    property BeforeExecute:TNotifyEvent read FBeforeExecute write FBeforeExecute;
    property AfterExecute :TNotifyEvent read FAfterExecute  write FAfterExecute;
    property OnExecuteError:TFIBQueryErrorEvent read FOnExecuteError write FOnExecuteError;
  , ,  .
-----------------------------------------

TpFIBUpdateObject:
      pFIBQuery,  ...
   property DataSet: TpFIBDataSet; - ,   
   property KindUpdate  :TUpdateKind; -    
   property ExecuteOrder:TFIBOrderExecUO; - 
             
    .  
   property OrderInList :integer;    .
   property Active:boolean ;     . 

  :
         TpFIBUpdateObject.      
    .  TpFIBUpdateObject     DataSet  KindUpdate
      .
 ... :
   ,    Update  . 
  1.           
   TpFIBUpdateObject 
   c ExecuteOrder=oeBeforeDefault, Active=true  KindUpdate=ukModify.
  2.    TFIBDataSet.QUpdate.        
  3.   (1),   
     TpFIBUpdateObject.ExecuteOrder=oeAfterDefault.
 
   :
     1.        , 
               CachedUpdates  OnUpdateRecord.
           TUpdateObject  
        Active:=true -  Active:=false    
     2.    ,  . 
             UpdateObject  .
     3.    ,  ,   
                
          .   
-----------------------------------------

TpFIBTransaction


 TPBMode:TTPBMode

 tpbDefault =       TRParams
 tpbReadCommitted=    
   write
   nowait
   rec_version
   read_committed                   
 tpbRepeatableRead =   
   write
   nowait
   rec_version

-----------------------------------------
State: TTransactionState (ReadOnly)
   tsActive - 
   tsClosed - 
   tsDoRollback -     Rollback.
   tsDoRollbackRetaining-  RollbackRetaining.
   tsDoCommit           -    Commit.
   tsDoCommitRetaining  -    CommitRetaining.

 :
 
procedure pFIBDataSetOnTransactionEnd(Sender:TObject);
begin
 with pFIBDataSet do 
  if (Transaction.State=tsDoRollbackRetaining) 
   and HasUncommitedChanges then begin
   Close; Open;
  end
end;

-----------------------------------------
:
 BeforeStart, AfterStart , BeforeEnd, AfterEnd




TpFIBErrorHandler -    
                        IB. 


  Options:TOptionsErrorHandler

  oeException = ""  IB EXCEPTION .
  oeForeignKey= ""    
               ForeignKey . (  )

:
  OnFIBErrorEvent:TOnFIBErrorEvent


TOnFIBErrorEvent=
   procedure (Sender:TObject;ErrorValue:EFIBError;
                        var DoRaise:boolean
) of object;

 :  Sender-     
             ErrorValue -   .
             DoRaise    -       .

:
         TpFIBErrorHandler.
   IB EXCEPTION,   oeException in Options,  
        :)  
     .


 