TprxADODataSetEdit

De Pragma Wiki
Revisión del 16:55 16 may 2025 de Luciano Carou (discusión | contribs.) (Página creada con «=Introducción= El objeto '''TprxADODataSetEdit''' (Dataset con habilidades de armado de pantallas y edición de datos.) es un dataset bastante complejo que implementa habilidades para: *Cargar la estructura de una tabla. *Armar los campos. *Ejecutar validaciones y eventos. *Guardar los datos en la base usando transacciones. Es el ancestro de otros datasets con funcionalidad aún más específica (aunque no tan general como éste). =QUEESESTO/IDENTIDAD|Identid…»)
(difs.) ← Revisión anterior | Revisión actual (difs.) | Revisión siguiente → (difs.)
Ir a la navegación Ir a la búsqueda

Introducción

El objeto TprxADODataSetEdit (Dataset con habilidades de armado de pantallas y edición de datos.) es un dataset bastante complejo que implementa habilidades para:

  • Cargar la estructura de una tabla.
  • Armar los campos.
  • Ejecutar validaciones y eventos.
  • Guardar los datos en la base usando transacciones.

Es el ancestro de otros datasets con funcionalidad aún más específica (aunque no tan general como éste).

Identidad

  • Ancestro: TprxADODataSet
  • Carpeta: C:\DevelopPrx\library
  • Archivo: prxADODataSetEdit.pas

Declaración

type
  TprxADODataSetEdit = class(TprxADODataSet)
  private
    FQuerySQL: TStringList;

    FIsMasterDataSet: Boolean;
    FRecordExistenceChecked: Boolean;
    FLastDatabaseOp: TprxADODataSetLastDatabaseOp;

    FOnEditReady: TDataSetNotifyEvent;

    FOnExistingKey: TDataSetNotifyEvent;

    FOnMostrarIndicaciones: TprxADOShowFieldHint;

    FCommandFields: TStringList;
    FCommandFrom: TStringList;
    FCommandLeftOuter: TStringList;
    FCommandOrderBy: TStrings;

    FLocalInsertXtdFlag: Boolean;
    FAddNavButtons: Boolean;

    FOnOpcionesPopupXtd: TprxOnOpcionesPopup;

    FOnEnterExternal: TprxADODataFieldOnEnter;
    FOnExitExternal: TprxADODataFieldOnExit;

    FFilteredOnInsert: Boolean;

    FDetalleCodigo: String;
    FDetalleVisual: String;

    FQueryAUX: TprxADOQuery;

    FListaFK: TStringList;

    FCascadeUpdate: Boolean;
    FCascadeDelete: Boolean;

    Fop_insert: Boolean;
    Fop_update: Boolean;
    Fop_delete: Boolean;

    FBookmark: TBookmark;

    FCommandText_Select: String;
    FCommandText_Where: String;

    FOnVerifyKeyData: TprxADOVerifyKeyData;
    FCallingDataSet: TprxADODataSetEdit;
    FCMP_RELACION_ACCION: String;
    FCMP_RELACION_ESTADO: String;
    FCMP_RELACION_RECIDS: TStringList;

    FTableDescription: String;

    FCatalogo: String;
    FTipoDato: String;

    FTAG_READONLY: Boolean;
    FTAG_AUTOPRINT: Boolean;

    FStatusBar: TStatusBar;

    Ffvs: Boolean;

    Fdevlog_monitor: Tfva_devlog_monitor;

    FUsaPanelPIE_Comentarios: Boolean;
    FUsaPanelPIE_Totales: Boolean;

    FPropertyFieldList: TStringList;

    Frefresco_modo: String;

    FPopupOptions: TprxADODataSet_Options;

    FTransactionTimeStamp: String;

    FCanDeleteCheckConstraints_NotInList: TStringList;

    // Para asignar prxADOQueryRESULTADO: TprxADOQuery del form de ejecución de
    // consultas...

    FClassConsultasResultado_Query: TprxADOQuery;

    FWHERE: TprxADODataSet_WHERE;

    Fdevlog_TestCommands: TStringList;

    FClase_Muestra_tab_first: Boolean;
    FClase_Muestra_tab_last: Boolean;
    FClase_Muestra_tab_comments: Boolean;
    FClase_Muestra_panel_comments: Integer;

    FBandFilter: TComponent;

    FRelacionesComponent: TComponent;

    FOnExitFieldXtd_Result: Boolean;

    FSCANDOCS_Field: String;

    // Los usamos para OnEnterFieldXtd y OnExitFieldXtd...

    FFieldEvent_FieldName: String;
    FFieldEvent_FieldValue: Variant;
  protected
    FTableName: String;
    FLoadRecords: Boolean;

    InLocateRecordFlag: Boolean;

    procedure   SetTableName(aValue: String); virtual;

    procedure   SetCommandOrderBy(aValue: TStrings);
    procedure   SetCallingDataSet(aValue: TprxADODataSetEdit);

    procedure   Set_fvs(aValue: Boolean);

    function    GetCatalogo: String;
    function    GetTipoDato: String;
    function    Get_TAG_READONLY: Boolean; virtual;
    function    Get_TAG_AUTOPRINT: Boolean; virtual;

    function    StructureLoad: Integer; virtual;
    procedure   DefaultValuesAssign; virtual;
    function    KeyFieldsLoaded(aFieldName: String): Boolean;

    function    LocateRecord: Boolean; virtual;

    procedure   LocalAfterPost(DataSet: TDataSet);
    function    LocalAfterPostInsert(DataSet: TDataSet): String;
    procedure   LocalAfterPostIndicaDefecto;
    function    LocalAfterPostEdit(DataSet: TDataSet; aWhere: String): String;
    function    LocalAfterPostDelete(DataSet: TDataSet; aWhere: String): String;

    function    CommandText_Select_Make(aTop1: Boolean = False): String;
{ 16/05/2025
    function    CommandText_Select_Make_DeUnBAK_PodemosBorrarlo(aTop1: Boolean = False): String;
}

    property    LocalInsertXtdFlag: Boolean read FLocalInsertXtdFlag write FLocalInsertXtdFlag;
    property    FilteredOnInsert: Boolean read FFilteredOnInsert write FFilteredOnInsert;
    property    Bookmark: TBookmark read FBookmark write FBookmark;
    property    CommandText_Where: String read FCommandText_Where write FCommandText_Where;

    property    refresco_modo: String read Frefresco_modo write Frefresco_modo;
    property    PopupOptions: TprxADODataSet_Options read FPopupOptions write FPopupOptions;

    property    QuerySQL: TStringList read FQuerySQL write FQuerySQL;

    // Los usamos para OnEnterFieldXtd y OnExitFieldXtd...

    property    FieldEvent_FieldName: String read FFieldEvent_FieldName write FFieldEvent_FieldName;
    property    FieldEvent_FieldValue: Variant read FFieldEvent_FieldValue write FFieldEvent_FieldValue;
  public
    FieldsXtdList: Tfva_campos_items;

    procedure   Loaded; override;

    property    CommandText_Select: String read FCommandText_Select;

    function    FieldIsComputed(aFieldNo: Integer): Boolean;

    procedure   LocalAfterScroll(DataSet: TDataSet); override;

    procedure   Activate(aLoadRecords: Boolean); override;

    function    IsTransactionMaster: Boolean; virtual;

    function    Select(aSQLCommand: String = ''): Boolean; override;

    function    LocalAfterPostWhere(DataSet: TDataSet): String;

    procedure   DefaultValueAdd(aFieldName: String; aDefaultValue: String);

    procedure   AssignFieldValueByName(aFieldName: String; aFieldValue: Variant); override;
    procedure   AssignValueToField(aCampo: String; aValue: Variant);

    constructor Create(AOwner: TComponent); override;
    destructor  Destroy; override;

    function    DataSetId: String;

    function    LocateRecordOnClient(aKeyValuesA: TprxFieldValues; aKeyValuesCount: Integer): Boolean;
    function    LocateRecordOnServer(aKeyValuesA: TprxFieldValues; aKeyValuesCount: Integer): Boolean;

    function    CanInsertXtd: Boolean; virtual;
    procedure   InsertXtd(Sender: TObject); virtual;
    function    CanEditXtd: Boolean; virtual;
    procedure   EditXtd(Sender: TObject); virtual;
    function    PostXtd(Sender: TObject): Boolean; virtual;
    procedure   CancelXtd(Sender: TObject); virtual;

    function    CanDeleteXtd(aAsk: Boolean): Boolean; virtual;
    function    CanDeleteCheckConstraints(aWarn: Boolean): Boolean;
    procedure   DeleteXtd(Sender: TObject); virtual;
    procedure   DeleteRecordsXtd(Sender: TObject); virtual;

    function    UpdateBatchXtd(AffectRecords: TAffectRecords = arAll): Boolean; virtual;

    procedure   OnEnterFieldXtd(Sender: TObject; aFieldName: String; aFieldValue: Variant); virtual;
    function    OnExitFieldXtd(Sender: TObject; aFieldName: String; aFieldValue: Variant; aErrMsg: String): Boolean; virtual;
    function    OnChangeFieldXtd(Sender: TObject; aFieldName: String; aFieldValue: Variant): Boolean; virtual;

    function    ArmarClaveAuditoria: String;
    function    ArmarClaveAuditoriaLARGO: String;

    procedure   GetPopupOptions(Sender: TprxPopupMenu); {overload; }virtual;

    function    DetailsEnabled: Boolean;
    function    ORIGENES_Initialize(aMenu: TprxPopupMenu): Integer;

    function    SelectXtd(aLoadRecords: Boolean): Boolean;

    property    RecordExistenceChecked: Boolean read FRecordExistenceChecked write FRecordExistenceChecked;

    function    ValidateQuery: TprxADOQuery;

    property    CommandFields: TStringList read FCommandFields write FCommandFields;
    property    CommandFrom: TStringList read FCommandFrom write FCommandFrom;
    property    CommandLeftOuter: TStringList read FCommandLeftOuter write FCommandLeftOuter;

    property    LastDatabaseOp: TprxADODataSetLastDatabaseOp read FLastDatabaseOp;

    property    DetalleCodigo: String read FDetalleCodigo;
    property    DetalleVisual: String read FDetalleVisual;

    property    QueryAUX: TprxADOQuery read FQueryAUX write FQueryAUX;
    property    ListaFK: TStringList read FListaFK write FListaFK;

    property    CascadeUpdate: Boolean read FCascadeUpdate write FCascadeUpdate;
    property    CascadeDelete: Boolean read FCascadeDelete write FCascadeDelete;

    property    op_insert: Boolean read Fop_insert write Fop_insert;
    property    op_update: Boolean read Fop_update write Fop_update;
    property    op_delete: Boolean read Fop_delete write Fop_delete;

    property    TAG_READONLY: Boolean read Get_TAG_READONLY;
    property    TAG_AUTOPRINT: Boolean read Get_TAG_AUTOPRINT;

    property    ppOnVerifyKeyData: TprxADOVerifyKeyData read FOnVerifyKeyData write FOnVerifyKeyData;
    property    xxCallingDataSet: TprxADODataSetEdit read FCallingDataSet write SetCallingDataSet;
    property    CMP_RELACION_ACCION: String read FCMP_RELACION_ACCION write FCMP_RELACION_ACCION;
    property    CMP_RELACION_ESTADO: String read FCMP_RELACION_ESTADO write FCMP_RELACION_ESTADO;
    property    CMP_RELACION_RECIDS: TStringList read FCMP_RELACION_RECIDS write FCMP_RELACION_RECIDS;

    property    TableDescription: String read FTableDescription;

    property    Catalogo: String read GetCatalogo;
    property    TipoDato: String read GetTipoDato;

    property    StatusBar: TStatusBar read FStatusBar write FStatusBar;

    property    fvs: Boolean read Ffvs write Set_fvs;

    property    x_devlog_monitor: Tfva_devlog_monitor read Fdevlog_monitor write Fdevlog_monitor;

    property    UsaPanelPIE_Comentarios: Boolean read FUsaPanelPIE_Comentarios write FUsaPanelPIE_Comentarios;
    property    UsaPanelPIE_Totales: Boolean read FUsaPanelPIE_Totales write FUsaPanelPIE_Totales;

    property    PropertyFieldList: TStringList read FPropertyFieldList;

    property    CanDeleteCheckConstraints_NotInList: TStringList read FCanDeleteCheckConstraints_NotInList write FCanDeleteCheckConstraints_NotInList;

    property    WHERE: TprxADODataSet_WHERE read FWHERE write FWHERE;

    property    devlog_TestCommands: TStringList read Fdevlog_TestCommands write Fdevlog_TestCommands;

    property    Clase_Muestra_tab_first: Boolean read FClase_Muestra_tab_first write FClase_Muestra_tab_first;
    property    Clase_Muestra_tab_last: Boolean read FClase_Muestra_tab_last write FClase_Muestra_tab_last;
    property    Clase_Muestra_tab_comments: Boolean read FClase_Muestra_tab_comments write FClase_Muestra_tab_comments;
    property    Clase_Muestra_panel_comments  : Integer read FClase_Muestra_panel_comments write FClase_Muestra_panel_comments;

    property    OnExitFieldXtd_Result: Boolean read FOnExitFieldXtd_Result;

    property    SCANDOCS_Field: String read FSCANDOCS_Field;
  published
    property    ppTableName: String read FTableName write SetTableName;
    property    ppCommandOrderBy: TStrings read FCommandOrderBy write SetCommandOrderBy;
    property    ppIsMasterDataSet: Boolean read FIsMasterDataSet write FIsMasterDataSet;
    property    ppOnEditReady: TDataSetNotifyEvent read FOnEditReady write FOnEditReady;
    property    ppAddNavButtons: Boolean read FAddNavButtons write FAddNavButtons;
    property    ppOnOpcionesPopupXtd: TprxOnOpcionesPopup read FOnOpcionesPopupXtd write FOnOpcionesPopupXtd;
    property    ppOnShowFieldHint: TprxADOShowFieldHint read FOnMostrarIndicaciones write FOnMostrarIndicaciones;

    property    ppOnEnterExternal: TprxADODataFieldOnEnter read FOnEnterExternal write FOnEnterExternal;
    property    ppOnExitExternal: TprxADODataFieldOnExit read FOnExitExternal write FOnExitExternal;
    property    ppOnExistingKey: TDataSetNotifyEvent read FOnExistingKey write FOnExistingKey;

    property    TransactionTimeStamp: String read FTransactionTimeStamp write FTransactionTimeStamp;

    property    ClassConsultasResultado_Query: TprxADOQuery read FClassConsultasResultado_Query write FClassConsultasResultado_Query;

    property    LoadRecords: Boolean read FLoadRecords;

    property    BandFilter: TComponent read FBandFilter write FBandFilter;

    property    RelacionesComponent: TComponent read FRelacionesComponent write FRelacionesComponent;

    function    FieldControlEnable(aFieldName: String; aCondition: Boolean): Boolean;
    function    FieldControlDisable(aFieldName: String; aCondition: Boolean): Boolean;
  end;

Implementación