TprxADOQuery

De Pragma Wiki
Ir a la navegación Ir a la búsqueda

Introducción

El objeto TprxADOQuery (Query avanzado.) define funcionalidad más avanzada, particularmente para actualizar datos en la base de datos.

Identidad

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.