TprxADODataSetEdit
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;