TprxADOQueryDetail
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.
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;