TprxADODataSetMaster
Introducción
El objeto TprxADODataSetMaster (Dataset con habilidades de master en una relación master-detail.) define funcionalidad para funcionar como el maestro en una relación master-detail.
Identidad
- Ancestro: TprxADODataSetEdit
- Carpeta: C:\DevelopPrx\library
- Archivo: prxADODataSetMaster.pas
Declaración
type TprxADODataSetMaster = class(TprxADODataSetEdit) private FOnTransactionStart: TDataSetNotifyEvent; FOnTransactionEnd: TDataSetNotifyEvent; FFormName: String; FTrCatalogo: String; FTrTipoClase: String; FBatch_KeyFields: Variant; FBatch_KeyFieldsList: String; FBatch_KeyValues: Variant; FKeepFormOpen_Default: Boolean; protected FKeepFormOpen: Boolean; FReabriendo: Boolean; FChildDataSets: array[0..TprxChildDataSetsMax] of TprxADODataSetMaster; FChildDataSetsCount: Integer; Fsame_key_as_master: Boolean; procedure Notification(AComponent: TComponent; Operation: TOperation); override; function KeepFormOpen_Default_Get: Boolean; function KeepFormOpen_Get: Boolean; virtual; function StructureLoad: Integer; override; function Get_same_key_as_master: Boolean; function GetChildDataSets(Index: Integer): TprxADODataSetMaster; procedure SetChildDataSets(Index: Integer; Value: TprxADODataSetMaster); property Batch_KeyFields: Variant read FBatch_KeyFields write FBatch_KeyFields; property Batch_KeyFieldsList: String read FBatch_KeyFieldsList write FBatch_KeyFieldsList; property Batch_KeyValues: Variant read FBatch_KeyValues write FBatch_KeyValues; public constructor Create(AOwner: TComponent); override; destructor Destroy; override; procedure Loaded; override; procedure Activate(aLoadRecords: Boolean); override; procedure OnMessagesEnable(aValue: Boolean); override; function IsTransactionMaster: Boolean; override; procedure ChildDataSetInit; procedure ChildDataSetAdd(aDS: TprxADODataSetMaster); function FindChildDataSetByTableName(aTableName: String): TprxADODataSetMaster; function FindChildDataSetByClassName(aClassName: String): TprxADODataSetMaster; procedure ChildDataSetDelete(aDS: TprxADODataSetMaster); procedure ChildHasPosted(aChildDS: TprxADODataSetMaster); procedure InsertXtd(Sender: TObject); override; procedure CancelXtd(Sender: TObject); override; function RequeryXtd: Boolean; virtual; function UpdateBatchXtd_KeysSave: Boolean; function UpdateBatchXtd_KeysLocate: Boolean; function UpdateBatchXtd(AffectRecords: TAffectRecords = arAll): Boolean; override; procedure RefreshXtd; overload; procedure RefreshXtd(aFieldName: String; aFieldValue: String; aSelect: Boolean = True); overload; property ChildDataSets[Index: Integer]: TprxADODataSetMaster read GetChildDataSets write SetChildDataSets; property ChildDataSetsCount: Integer read FChildDataSetsCount; property FormName: String read FFormName write FFormName; property TrCatalogo: String read FTrCatalogo write FTrCatalogo; property TrTipoClase: String read FTrTipoClase write FTrTipoClase; property same_key_as_master: Boolean read Get_same_key_as_master; property KeepFormOpen_Default: Boolean read KeepFormOpen_Default_Get; property KeepFormOpen: Boolean read KeepFormOpen_Get write FKeepFormOpen; property Reabriendo: Boolean read FReabriendo; published property ppOnTransactionStart: TDataSetNotifyEvent read FOnTransactionStart write FOnTransactionStart; property ppOnTransactionEnd: TDataSetNotifyEvent read FOnTransactionEnd write FOnTransactionEnd; end;
FOnTransactionStart: TDataSetNotifyEvent
Puede asociarse a un evento que se ejecuta al iniciar la transacción con la base de datos.
FOnTransactionEnd: TDataSetNotifyEvent
Puede asociarse a un evento que se ejecuta al finalizar la transacción con la base de datos.
FBatch
Proppiedades usadas para tomar la clave primaria en un update a la base de datos, las propiedades son:
- FBatch_KeyFields guarda la lista de campos de la clave primaria.
- FBatch_KeyFieldsList guarda la lista de campos pero separándolos con punto y coma.
- FBatch_KeyValues guarda los valores de cada campo de la clave primaria.
FKeepFormOpen_Default: Boolean
Propiedad que por defecto indica si el form de un dataset permanece abierto luego de aplicar los cambios a la base de datos. Por ejemplo: si mantenemos la pantalla de una factura abierta tras haberla registrado.
Aunque se supone que debería manejarse por preferencias de usuario en el código siempre se la setea a True.
Ver también:
- FKeepFormOpen: Boolean.
- function KeepFormOpen_Default_Get: Boolean.
- function KeepFormOpen_Get: Boolean; virtual.
FChildDataSets
- FChildDataSets: array[0..TprxChildDataSetsMax] of TprxADODataSetMaster es un array que guarda las referencias a los detalles que tiene el dataset.
- FChildDataSetsCount: Integer es un entero que indica la cantidad de detalles que tiene el dataset.
Implementación
function StructureLoad: Integer
Llama al inherited y posteriormente verifica si EsDetalleDe alguna otra clase y en ese caso si sus claves primarias contienen la misma cantidad de campos.
procedure ChildDataSetInit
Inicializa el array de childs a vacío.
procedure ChildDataSetAdd(aDS: TprxADODataSetMaster)
Agrega un child al array.
procedure ChildHasPosted(aChildDS: TprxADODataSetMaster)
Función llamada por un child del dataset para indicar que ha hecho algo, por ejemplo, posteado cambios.
function FindChildDataSetByTableName(aTableName: String): TprxADODataSetMaster
Dado un nombre de tabla retorna el ChildDataSet que la implementa.
function FindChildDataSetByClassName(aClassName: String): TprxADODataSetMaster
Similar anterior, pero buscamos por nombre de la clase.
procedure ChildDataSetDelete(aDS: TprxADODataSetMaster)
Elimina un child del array.
procedure InsertXtd(Sender: TObject)
Postea un registro insertado.
procedure CancelXtd(Sender: TObject)
Cancela la inserción o edición de un registro.
function RequeryXtd: Boolean
Vuelve a cargar los registros, habitualmente los mismos que tiene en pantalla.
Implementación, UpdateBatchXtd
Esta funcionalidad pertenece a las funciones de grabado en la base de datos.
function UpdateBatchXtd_KeysSave: Boolean
Guarda los valores de los campos clave para hacer un Locate después del Requery, surgido el 26/08/2015 por la prueba de comprobantes combinados Pragma y prx.
function UpdateBatchXtd_KeysLocate: Boolean
Hace un Locate usando las claves guardadas la llamada al Locate es distinta según la cantidad de campos clave que tenga la clase.
function UpdateBatchXtd(AffectRecords: TAffectRecords = arAll): Boolean
Vuelca los cambios al dataset (y sus childs) a la base de datos.
procedure RefreshXtd
Vuelve a cargar los registros y se posiciona sobre el que acabamos de editar.
procedure RefreshXtd(aFieldName: String; aFieldValue: String; aSelect: Boolean = True)
Similar anterior, pero informando un campo y su valor, para usar en comprobantes por el problema del loop en la asignación de numeración (07/09/2010).