TprxADOQuery
Introducción
El objeto TprxADOQuery (Query avanzado.) define funcionalidad más avanzada, particularmente para actualizar datos en la base de datos.
Identidad
- Ancestro: TprxADOQuerySelect
- Carpeta: C:\DevelopPrx\library
- Archivo: prxADOQuery.pas
Declaración
type TprxADOQuery = class(TprxADOQuerySelect) private FRecordsAffected: Integer; FScreenCursor: TCursor; FQuerySQL: TStringList; Fsql_commands_where: TStringList; Fsql_commands_orderby: TStringList; FReportId: String; FReportCaption: String; FTransactionTimeStamp: String; FDataSetId_External: String; protected FChildQueries: array[0..TprxChildQueriesMax] of TprxADOQuery; FChildQueriesCount: Integer; function GetChildQueries(Index: Integer): TprxADOQuery; procedure SetChildQueries(Index: Integer; Value: TprxADOQuery); function GetReportId: String; function GetReportCaption: String; property ScreenCursor: TCursor read FScreenCursor write FScreenCursor; property QuerySQL: TStringList read FQuerySQL write FQuerySQL; public constructor Create(AOwner: TComponent); override; destructor Destroy; override; procedure Loaded; override; function DataSetId: String; procedure LocalAfterScroll(DataSet: TDataSet); function Apply_Local(aCommands: TStringList): Boolean; overload; function Apply_Local(aSQLCommand: String; aAddGo: Boolean = False): Boolean; overload; function Apply_Transaction(aStrings: TStrings): Boolean; overload; function Apply_Transaction(aSQLCommand: String; aAddGo: Boolean = False): Boolean; overload; function Apply_Devlog(aCatalogo: String; aTipo: String; aCodigo: String; aSubcodigo: String; aOperacion: String; aComandos: TStringList): Boolean; overload; function Apply_Devlog(aCatalogo: String; aTipo: String; aCodigo: String; aSubcodigo: String; aOperacion: String; aComando: String; aAddGO: Boolean = False): Boolean; overload; function SelectFromConsulta(aConsulta: String; aSQLCommand: String; aSilent: Boolean = False): Boolean; overload; function SelectFromConsulta(aConsulta: String; aStrings: TStrings; aSilent: Boolean = False): Boolean; overload; function FilterOnField(aFieldName: String; aFieldValue: String): Boolean; overload; function FilterOnField(aFieldName: String; aFieldValues: TStringList): Boolean; overload; procedure FilterOnField; overload; procedure ChildQueriesInit; procedure ChildQueryAdd(aDS: TprxADOQuery); procedure ChildQueriesFree; property RecordsAffected: Integer read FRecordsAffected; property ReportId: String read GetReportId write FReportId; property ReportCaption: String read GetReportCaption write FReportCaption; property ChildQueries[Index: Integer]: TprxADOQuery read GetChildQueries write SetChildQueries; property ChildQueriesCount: Integer read FChildQueriesCount; property sql_commands_where: TStringList read Fsql_commands_where write Fsql_commands_where; //SetCommandWhere; property sql_commands_orderby: TStringList read Fsql_commands_orderby write Fsql_commands_orderby; //SetCommandOrderBy; property TransactionTimeStamp: String read FTransactionTimeStamp write FTransactionTimeStamp; property DataSetId_External: String read FDataSetId_External write FDataSetId_External; published end;
FChild
Las propiedades relacionadas con hijos están en revisión y no se documentan.
Fsql_commands_where
Se usaba en el filtrado de los datos usando las clases obsoletas TprxADODataSet_Options_Busqueda, deberían ser eliminadas.
Fsql_commands_orderby
Ídem anterior.
FReport
Las propiedades FReport tienen que ver con los componentes relacionados con el generador de reportes de ReportBuilder, explicado más adelante.
Implementación
function DataSetId: String
Retorna el DataSetId de un DataSet, si es un TprxADOQuery proveniente de una consulta tiene que tener un MasterDataSet asociado que provee los criterios de la consulta, éste existe aunque la consulta no tenga criterios. Agregado el 20190314 si se definió DataSetId_External lo retorna.
procedure LocalAfterScroll(DataSet: TDataSet)
Llamado cada vez que se cambia de registro en el dataset, el objetivo mes refrescar cualquier Child que tenga.
function Apply_Local(aCommands: TStringList): Boolean
Aplica una sentencia SQL informada en aCommands (definida como una lista de strings) localmente, es decir que no va a usar la Replicación.
El comando sería algo parecido a:
UPDATE CUENTA SET FDESCRIPCION = '(demo) Bancos en $' WHERE FCODIGO = '10001001' GO
La sentencia debe terminar en un GO para aplicarla.
Retorna True si tuvo éxito (y asigna la cantidad de registros afectados a FRecordsAffected), sino retorna False.
function Apply_Local(aSQLCommand: String; aAddGo: Boolean = False): Boolean
Ídem anterior, pero recibe el SQL como una sola línea.
El comando sería algo parecido a:
UPDATE CUENTA SET FDESCRIPCION = '(demo) Bancos en $' WHERE FCODIGO = '10001001'
El GO lo agrega la función.
function Apply_Transaction(aStrings: TStrings): Boolean
Aplica los comandos informados en el argumento (lista de strings) dentro de una transacción usando TprxADOConnection.
function Apply_Transaction(aSQLCommand: String; aAddGo: Boolean = False): Boolean
Ídem anterior, pero recibe la sentencia en una sola línea, el GO se lo agrega el procedimiento si el argumento aAddGo es True.
function Apply_Devlog(aCatalogo: String; aTipo: String; aCodigo: String; aSubcodigo: String; aOperacion: String; aComandos: TStringList): Boolean
Aplica una transacción de catálogo (Ver MANUAL/DESARROLLADOR).
Los argumentos son:
- aCatalogo es el código de catálogo.
- aTipo es el tipo de objeto.
- aCodigo es el código de objeto.
- aSubcodigo es el subcódigo de objeto.
- aOperacion es la operación a aplicar.
- aComandos son los comandos representados en una lista de strings.
function Apply_Devlog(aCatalogo: String; aTipo: String; aCodigo: String; aSubcodigo: String; aOperacion: String; aComando: String; aAddGO: Boolean = False): Boolean
Ídem anterior pero el comando se informa como un string.
function SelectFromConsulta(aConsulta: String; aSQLCommand: String; aSilent: Boolean = False): Boolean
Función accesoria usada desde las consultas para generar el resultado.
function SelectFromConsulta(aConsulta: String; aStrings: TStrings; aSilent: Boolean = False): Boolean
Ídem anterior, pero el comando es un string.
function FilterOnField(aFieldName: String; aFieldValue: String): Boolean
Filtra el contenido en base a un campo y un valor, retorna True si al filtrar quedan registros en el resultado.
function FilterOnField(aFieldName: String; aFieldValues: TStringList): Boolean
Ídem anterior, pero recibe una lista de valores.
Uso
El componente es muy usado en toda la aplicación.