Diferencia entre revisiones de «TprxADOQueryDetail»
(Página creada con «=Introducción= El objeto '''TprxADOQueryDetail''' (Query para detalles de otros queries) se usa exlusivamente para agregar detalles de impresión a otros queries para ser usados en el generador de reportes ReportBuilder (documentado más adelante). Normalmente el generador de reportes usa los datos de cada pantalla para generar una impresión, pero si necesitáramos agregar detalles a esas impresiones (por ejemplo: imprimir artículos con sus empaques) la única…») |
|||
| Línea 1: | Línea 1: | ||
=Introducción= | =Introducción= | ||
El objeto '''[[TprxADOQueryDetail]]''' (Query para detalles de otros queries) se usa exlusivamente para agregar detalles de impresión a otros queries para ser usados en el generador de reportes ReportBuilder (documentado más adelante). Normalmente el generador de reportes usa los datos de cada pantalla para generar una impresión, pero si necesitáramos agregar detalles a esas impresiones (por ejemplo: imprimir artículos con sus empaques) la única manera de hacerlo es definiendo una sentencia SQL en la tabla [[prximpresion_definicion]] y [[prximpresion_definicion_detalle]]. Este componente obtiene esa sentencia y crea instancias de este componente para manejar esos detalles adicionales. | El objeto '''[[TprxADOQueryDetail]]''' (Query para detalles de otros queries) se usa exlusivamente para agregar detalles de impresión a otros queries para ser usados en el generador de reportes ReportBuilder (documentado más adelante). Normalmente el generador de reportes usa los datos de cada pantalla para generar una impresión, pero si necesitáramos agregar detalles a esas impresiones (por ejemplo: imprimir artículos con sus empaques) la única manera de hacerlo es definiendo una sentencia SQL en la tabla [[prximpresion_definicion]] (y su detalle [[prximpresion_definicion_detalle]]). Este componente obtiene esa(s) sentencia(s) y crea instancias de este componente para manejar esos detalles adicionales. | ||
Las sentencias se definen en: | |||
*[[prximpresion_definicion|Impresión de clases y consultas, definición]] define la cabecera de detalles de impresión de una consulta. | |||
*[[prximpresion_definicion_detalle|Impresión de clases y consultas, comandos]] define los comandos de cada impresión. | |||
=Descripción= | =Descripción= | ||
Revisión del 14:12 16 may 2025
Introducción
El objeto TprxADOQueryDetail (Query para detalles de otros queries) se usa exlusivamente para agregar detalles de impresión a otros queries para ser usados en el generador de reportes ReportBuilder (documentado más adelante). Normalmente el generador de reportes usa los datos de cada pantalla para generar una impresión, pero si necesitáramos agregar detalles a esas impresiones (por ejemplo: imprimir artículos con sus empaques) la única manera de hacerlo es definiendo una sentencia SQL en la tabla prximpresion_definicion (y su detalle prximpresion_definicion_detalle). Este componente obtiene esa(s) sentencia(s) y crea instancias de este componente para manejar esos detalles adicionales.
Las sentencias se definen en:
- Impresión de clases y consultas, definición define la cabecera de detalles de impresión de una consulta.
- Impresión de clases y consultas, comandos define los comandos de cada impresión.
Descripción
El objeto TprxADOQueryDetail (Query para detalles de otros queries, obsoleto.) define...
Identidad
- Ancestro: TprxADOQuery
- Carpeta: C:\DevelopPrx\library
- Archivo: prxADOQueryDetail.pas
Declaración
type
TprxADOQueryDetail = class(TprxADOQuery)
private
FMasterQuery: TprxADOQuery;
Fapply_master_key_sql: TStringList;
protected
procedure SetMasterQuery(aValue: TprxADOQuery);
property apply_master_key_sql: TStringList read Fapply_master_key_sql write Fapply_master_key_sql;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
procedure Loaded; override;
procedure ApplyMasterKey;
property MasterQuery: TprxADOQuery read FMasterQuery write SetMasterQuery;
published
end;
function prxADOQueryDetailsCreate(aQuery: TprxADOQuery): Integer;
prxADOQueryDetailsCreate(aQuery: TprxADOQuery): Integer
La función prxADOQueryDetailsCreate(aQuery: TprxADOQuery): Integer se declara fuera de la clase haciéndola pública a toda la aplicación, simplemente se ejecuta como Resultado := prxADOQueryDetailsCreate(unQuery); sin necesidad de instanciar la clase TprxADOQueryDetail.
Implementación
function prxADOQueryDetailsCreate(aQuery: TprxADOQuery): Integer
Dado un query, esta función crea todos los TprxADOQueryDetail que hagan falta según el SQL ejecutado. Notar que
function prxADOQueryDetailsCreate(aQuery: TprxADOQuery): Integer;
var
vQ: TprxADOQuery;
vCodigo: String;
vDS: TprxADOQueryDetail;
vsq: String;
begin
// Carga la definición de los detalles de la base de datos...
// CACA
vQ := prxADOQueryCreate(aQuery);
vCodigo := '';
Result := 0;
vsq := 'SELECT';
vsq := vsq + ' prximpresion_definicion.Clase,';
vsq := vsq + ' prximpresion_definicion.Codigo,';
vsq := vsq + ' prximpresion_definicion_detalle.Linea,';
vsq := vsq + ' prximpresion_definicion_detalle.Comando';
vsq := vsq + ' FROM prximpresion_definicion, prximpresion_definicion_detalle WHERE';
vsq := vsq + ' prximpresion_definicion.Clase = ' + Q(aQuery.ReportId);
vsq := vsq + ' AND prximpresion_definicion_detalle.Clase = prximpresion_definicion.Clase';
vsq := vsq + ' ORDER BY';
vsq := vsq + ' prximpresion_definicion.Clase,';
vsq := vsq + ' prximpresion_definicion.Codigo,';
vsq := vsq + ' prximpresion_definicion_detalle.Linea';
if vQ.Select(vsq) then
begin
vDS := nil;
while vQ.EOF =False do
begin
if AnsiCompareText(vCodigo, vQ.FieldByName('Codigo').AsString) <> 0 then
begin
vCodigo := vQ.FieldByName('Codigo').AsString;
Result := Result + 1;
vDS := TprxADOQueryDetail.Create(aQuery);
vDS.ppAutoFindConnection := True;
vDS.Name := vCodigo;
vDS.MasterQuery := aQuery;
vDS.Loaded;
end;
if Assigned(vDS) then
vDS.SQLX.Add(Trim(vQ.FieldByName('Comando').AsString));
vQ.Next;
end;
end;
vQ.Free;
end;