Generar informes con Tquery

Estoy trabajando con consultas armando un query de esta forma: Dm_modulo1.query_tablas.sql.add(', N_RONDA'); con Where y order by en un form, lo cual despliego en un dbgrid la consulta, luego deseo esta consulta desplegada enviar para generar un reporte por medio de un botón (bitbtn1), luego visualizar e imprimir. Pero como estoy armando la consulta de acuerdo a lo que el usuario escoge como campos de despliegue que tengo en check boks, no se como generar cuantos QRlabel y cuantos QRDBTexts, para enlazarlo con las propiedades DataSet y DataField, que necesita para desplegar su contenido, estuve consultando en Internet y encontré Generación de informes en tiempo de ejecución, para generar QRLabel, pero no sé como los QRDBText y sus correspondientes propiedades, a ver si tu me puedes ayudar.En fin es un reporte dinámico no estático. Te indico con este ejemplo de lo que quiero hacer:
// creamos la banda Title
QuickRep1.HasTitleBand := true;
// accedemos a ella para añadirle un componente TQRLabel
with TQRLabel( QuickRep1.TitleBand.AddPrintable( TQRLabel ) do begin
Caption := '...';
...
end;
Por favor envíame tu contestación al correo: [email protected]
Margoth

1 Respuesta

Respuesta
1
Es MUY largo de explicar, pero en general, por lo menos tendrías que tener un reporte medio armado (con cabeceras, pie de página, bandas de detalles y configuración de página por lo menos), aunque en blanco.
Por CADA campo que hayan seleccionado, tendrías que poner en la banda de titulo una etiqueta, como en el ejemplo que me mandás del TQRLabel, y las propiedades que tendrías modificarle serían el caption, top, left (sumando el left y width de la etiqueta anterior + algunos pixeles para dejar espacio), font, width y ponerle autosize a false.
Con las TQRDBText, tendrías que asignarles también las mismas propiedades que al caso de las etiquetas y además, las propiedades DataSource y DataField (estoy citando de memoria, tendrías que verlas con el inspector de objetos en un ejemplo real). Es laborioso, pero tendrías que tratarlo así para cada caso, en un bucle que te recorra cada campo que tenés seleccionado en el check box (y por supuesto, hacer corresponder cada opción del check box con un campo de la TQuery).
¿Se entiende el procedimiento?
Si te sirvió, califícame en TodoExpertos. Si no, y luego de haber probado (por favor, ya que es complicado), avisame en qué te estás trabando.
Marcelo
Si puedes decirme detalladamente el código ya que el anterior que te envié no funciona me sale indeclarate identifier, creo que necesito librerías por favor ayúdame lo más pronto posible
Margoth
No creo que sea un problema demasiado difícil lo de tu "undeclared identifier". Significa que no tenés un identificador declarado (una variable, o una unidad). ¿Sobre qué variable te da el error y de qué tipo es?
Si me mandaras el código fuente a [email protected] te podría dar detalladamente lo que necesitás. Si no querés mandar todo, mandá algo resumido (no sé, digo tres o cuatro campos nomas y sin el formulario completo, si es que tenés problemas de confidencialidad). Mandame todo lo necesario y te lo resuelvo.
Pero hacelo urgente.
Marcelo
Te envío el código del query que estoy usando, de este quiero hacer el reporte correspondiente generando etiquetas y cuadros de textos, pero solo al añadir en la banda un TQRLabel me sale error de la TQRLabel:
Este es el query que estoy usando y que me genera la consulta con el botón ejecutar:
Dm_modulo1.query_tablas.close;
Dm_modulo1.query_tablas.sql.clear;
Dm_modulo1.query_tablas.sql.add('SELECT DISTINCT');
Dm_modulo1.query_tablas.sql.add('N_BLOQUE');
if chb_n_ronda.Checked=true then
Dm_modulo1.query_tablas.sql.add(',N_RONDA');
if chb_ubicacion.Checked=true then
Dm_modulo1.query_tablas.sql.add(',UBICACION');
if chb_descripcion.Checked=true then
Dm_modulo1.query_tablas.sql.add(',DESCRIPCION');
if chb_Limite_L1.Checked=true then
Dm_modulo1.query_tablas.sql.add(',LIMITE_L1');
if chb_Limite_L2.Checked=true then
Dm_modulo1.query_tablas.sql.add(',LIMITE_L2');
if chb_factor_X1.Checked=true then
Dm_modulo1.query_tablas.sql.add(',FACTOR_X1');
if chb_Factor_X2.Checked=true then
Dm_modulo1.query_tablas.sql.add(',FACTOR_X2');
if chb_Factor_X3.Checked=true then
Dm_modulo1.query_tablas.sql.add(',FACTOR_X3');
if chb_estado.Checked=true then
Dm_modulo1.query_tablas.sql.add(',ESTADO');
if chb_reservas_probadas.Checked=true then
Dm_modulo1.query_tablas.sql.add(',RESERVAS_PROBADAS');
if chb_fecha_suscripcion.Checked=true then
Dm_modulo1.query_tablas.sql.add(',FECHA_SUSCRIPCION');
if chb_fecha_vigencia.Checked=true then
Dm_modulo1.query_tablas.sql.add(',FECHA_VIGENCIA');
if chb_fecha_reg_hidrocarburos.Checked=true then
Dm_modulo1.query_tablas.sql.add(',FECHA_REG_HIDROCARBUROS');
if chb_fecha_aprobacionEIA.Checked=true then
Dm_modulo1.query_tablas.sql.add(',FECHA_APROBACION_E_I_A');
if chb_duracion_contrato.Checked=true then
Dm_modulo1.query_tablas.sql.add(',DURACION_CONTRATO');
if chb_firmante1.Checked=true then
Dm_modulo1.query_tablas.sql.add(',FIRMANTE1');
if chb_firmante2.Checked=true then
Dm_modulo1.query_tablas.sql.add(',FIRMANTE2');
if chb_firmante3.Checked=true then
Dm_modulo1.query_tablas.sql.add(',FIRMANTE3');
if chb_firmante4.Checked=true then
Dm_modulo1.query_tablas.sql.add(',FIRMANTE4');
if chb_observaciones.Checked=true then
Dm_modulo1.query_tablas.sql.add(',OBSERVACIONES');
if chb_alcance.Checked=true then
Dm_modulo1.query_tablas.sql.add(',ALCANCE');
if chb_clausulas.Checked=true then
Dm_modulo1.query_tablas.sql.add(',CLAUSULAS');
if chb_aprobacion.Checked=true then
Dm_modulo1.query_tablas.sql.add(',APROBACION');
if chb_detalle.Checked=true then
Dm_modulo1.query_tablas.sql.add(',DETALLE');
if chb_rubro.Checked=true then
Dm_modulo1.query_tablas.sql.add(',RUBRO');
if chb_valor.Checked=true then
Dm_modulo1.query_tablas.sql.add(',VALOR');
if chb_fecha_vigenciam.Checked=true then
Dm_modulo1.query_tablas.sql.add(',FECHA_VIGENCIA');
if chb_fecha_aprobacion.Checked=true then
Dm_modulo1.query_tablas.sql.add(',FECHA_APROBACION');
if chb_fecha_inscripcion_hidro.Checked=true then
Dm_modulo1.query_tablas.sql.add(',FECHA_INSCRIPCION_HIDROCARBUROS');
if chb_objeto_modificacion.Checked=true then
Dm_modulo1.query_tablas.sql.add(',OBJETO_MODIFICACION');
if chb_fecha_modificacion.Checked=true then
Dm_modulo1.query_tablas.sql.add(',FECHA_MODIFICACION');
if chb_nombre_empresa.Checked=true then
Dm_modulo1.query_tablas.sql.add(',NOMBRE_EMPRESAS');
if chb_representante_legal.Checked=true then
Dm_modulo1.query_tablas.sql.add(',REPRESENTANTE_LEGAL');
if chb_porcentaje_accionario.Checked=true then
Dm_modulo1.query_tablas.sql.add(',PORCENTAJE_ACCIONARIO');
if chb_fecha_inicio.Checked=true then
Dm_modulo1.query_tablas.sql.add(',FECHA_INICIO');
if chb_fecha_fin.Checked=true then
Dm_modulo1.query_tablas.sql.add(',FECHA_FIN');
if chb_activado.Checked=true then
Dm_modulo1.query_tablas.sql.add(',ACTIVADO');
if chb_fecha_p.Checked=true then
Dm_modulo1.query_tablas.sql.add(',FECHA_P');
if chb_desarrollo.Checked=true then
Dm_modulo1.query_tablas.sql.add(',DESARROLLO');
if chb_ejecutado.Checked=true then
Dm_modulo1.query_tablas.sql.add(',EJECUTADO');
if chb_explotacion.Checked=true then
Dm_modulo1.query_tablas.sql.add(',EXPLOTACION');
if chb_exploracion.Checked=true then
Dm_modulo1.query_tablas.sql.add(',EXPLORACION');
if chb_exploracion_adicional.Checked=true then
Dm_modulo1.query_tablas.sql.add(',EXPLORACION_ADICIONAL');
if chb_fecha.Checked=true then
Dm_modulo1.query_tablas.sql.add(',FECHA');
if chb_agua.Checked=true then
Dm_modulo1.query_tablas.sql.add(',AGUA');
if chb_gas.Checked=true then
Dm_modulo1.query_tablas.sql.add(',GAS');
if chb_petroleos.Checked=true then
Dm_modulo1.query_tablas.sql.add(',PETROLEOS');
if chb_grado_API.Checked=true then
Dm_modulo1.query_tablas.sql.add(',GRADO_API');
if chb_cod_operadora.Checked=true then
Dm_modulo1.query_tablas.sql.add(',COD_OPERADORA');
if chb_nombre_operadora.Checked=true then
Dm_modulo1.query_tablas.sql.add(',NOMBRE_EMPRESA_OP');
if chb_direccion.Checked=true then
Dm_modulo1.query_tablas.sql.add(',DIRECCION');
if chb_fax.Checked=true then
Dm_modulo1.query_tablas.sql.add(',FAX');
if chb_e_mail.Checked=true then
Dm_modulo1.query_tablas.sql.add(',E_MAIL');
if chb_telefono1.Checked=true then
Dm_modulo1.query_tablas.sql.add(',TELEFONO1');
if chb_telefono2.Checked=true then
Dm_modulo1.query_tablas.sql.add(',TELEFONO2');
if chb_telefono3.Checked=true then
Dm_modulo1.query_tablas.sql.add(',TELEFONO3');
if chb_fecha_inicioop.Checked=true then
Dm_modulo1.query_tablas.sql.add(',FECHA_INICIO');
if chb_fecha_finop.Checked=true then
Dm_modulo1.query_tablas.sql.add(',FECHA_FIN');
if chb_inf_operadora.Checked=true then
Dm_modulo1.query_tablas.sql.add(',COD_OPERADORA');
if chb_nombre_representante.Checked=true then
Dm_modulo1.query_tablas.sql.add(',REPRESENTANTE_NOMBRE');
if chb_apellido_representante.Checked=true then
Dm_modulo1.query_tablas.sql.add(',REPRESENTANTE_APELLIDO');
if chb_fax_r.Checked=true then
Dm_modulo1.query_tablas.sql.add(',FAX_R');
if chb_e_mail_r.Checked=true then
Dm_modulo1.query_tablas.sql.add(',E_MAIL_R');
if chb_telefono_r.Checked=true then
Dm_modulo1.query_tablas.sql.add(',TELEFONO_R');
if chb_fecha_desde.Checked=true then
Dm_modulo1.query_tablas.sql.add(',FECHA_DESDE');
if chb_fecha_hasta.Checked=true then
Dm_modulo1.query_tablas.sql.add(',FECHA_HASTA');
Dm_modulo1.query_tablas.sql.add('from');
Dm_modulo1.query_tablas.sql.add('SECON_CONTRATOS');
if chb_modificaciones.Checked=true then
Dm_modulo1.query_tablas.sql.add(',SEMOD_MODIFICACIONES');
if chb_consorcio.Checked=true then
Dm_modulo1.query_tablas.sql.add(',SECON_CONSORCIO');
if chb_presupuesto.Checked=true then
Dm_modulo1.query_tablas.sql.add(',SEPRE_PRESUPUESTO');
if chb_produccion.Checked=true then
Dm_modulo1.query_tablas.sql.add(',SEPRO_PRODUCCION');
if chb_operadora.Checked=true then
Dm_modulo1.query_tablas.sql.add(',SEOPE_OPERADORA');
if chb_inf_operadora.Checked=true then
begin
chb_operadora.Enabled:=False;
chb_operadora.Checked:=true;
Dm_modulo1.query_tablas.sql.add(',SEOPE_OPERADORA');
Dm_modulo1.query_tablas.sql.add(',SEREP_REPRESENTANTE_OPERADORA');
end;
// C R I T E R I O S D E S E L E C C I O N
if (a=1) then
begin
Edit_criterio1.text:=form_criterio1.Edit_criterio2.text;
if Edit_criterio1.text<>' ' then
begin
Dm_modulo1.query_tablas.sql.add(Edit_criterio1.text);
end;
end;
if (a<>1) then
begin
Edit_criterio1.text:=form_criterio1.Edit_criterio2.text;
if Edit_criterio1.text='' then
begin
a2:=2;
if (chb_modificaciones.Checked=true) or (chb_consorcio.Checked=true) or (chb_presupuesto.Checked=true) or (chb_produccion.Checked=true)or (chb_operadora.Checked=true)or (chb_inf_operadora.Checked=true) then
begin
if (a>=2) then
begin
Dm_modulo1.query_tablas.sql.add('WHERE ');
if (chb_modificaciones.Checked=true) then
begin
Dm_modulo1.query_tablas.sql.add('secon_contratos.n_bloque=semod_modificaciones.n_bloque');
if (a2<a) then
Dm_modulo1.query_tablas.sql.add('and');
a2:=a2+1;
end;
if (chb_consorcio.Checked=true) then
begin
Dm_modulo1.query_tablas.sql.add('secon_contratos.n_bloque=secon_consorcio.n_bloque');
if (a2<a) then
Dm_modulo1.query_tablas.sql.add('and');
a2:=a2+1;
end;
if (chb_presupuesto.Checked=true) then
begin
Dm_modulo1.query_tablas.sql.add('secon_contratos.n_bloque=sepre_presupuesto.n_bloque');
if (a2<a) then
Dm_modulo1.query_tablas.sql.add('and');
a2:=a2+1;
end;
if (chb_produccion.Checked=true) then
begin
Dm_modulo1.query_tablas.sql.add('secon_contratos.n_bloque=sepro_produccion.n_bloque');
if (a2<a) then
Dm_modulo1.query_tablas.sql.add('and');
a2:=a2+1;
end;
if (chb_inf_operadora.Checked=true) then
begin
chb_cod_operadora.Enabled:=False;
chb_cod_operadora.Checked:=True;
a:=a+1;
Dm_modulo1.query_tablas.sql.add('seope_operadora.cod_operadora=serep_representante_operadora.cod_operadora');
if (a2<a) then
Dm_modulo1.query_tablas.sql.add('and');
a2:=a2+1;
end;
if (chb_operadora.Checked=true) then
begin
Dm_modulo1.query_tablas.sql.add('secon_contratos.n_bloque=seope_operadora.n_bloque');
end;
end;
end;
end
else
begin
Dm_modulo1.query_tablas.sql.add(Edit_criterio1.text);
if (chb_modificaciones.Checked=true) then
begin
Dm_modulo1.query_tablas.sql.add('and');
Dm_modulo1.query_tablas.sql.add('secon_contratos.n_bloque=semod_modificaciones.n_bloque');
end;
if (chb_consorcio.Checked=true) then
begin
Dm_modulo1.query_tablas.sql.add('and');
Dm_modulo1.query_tablas.sql.add('secon_contratos.n_bloque=secon_consorcio.n_bloque');
end;
if (chb_presupuesto.Checked=true) then
begin
Dm_modulo1.query_tablas.sql.add('and');
Dm_modulo1.query_tablas.sql.add('secon_contratos.n_bloque=sepre_presupuesto.n_bloque');
end;
if (chb_produccion.Checked=true) then
begin
Dm_modulo1.query_tablas.sql.add('and');
Dm_modulo1.query_tablas.sql.add('secon_contratos.n_bloque=sepro_produccion.n_bloque');
end;
if (chb_inf_operadora.Checked=true) then
begin
chb_cod_operadora.Enabled:=False;
chb_cod_operadora.Checked:=True;
Dm_modulo1.query_tablas.sql.add('and');
Dm_modulo1.query_tablas.sql.add('seope_operadora.cod_operadora=serep_representante_operadora.cod_operadora');
end;
if (chb_operadora.Checked=true) then
begin
Dm_modulo1.query_tablas.sql.add('and');
Dm_modulo1.query_tablas.sql.add('secon_contratos.n_bloque=seope_operadora.n_bloque');
end;
end;
end;
// O R D E N A M I E N T O D E C A M P O S
if (form_orden.dblcb_campo.Enabled=true)and(form_orden.dblcb_orden.Enabled=true) and (form_orden.dblcb_jerarquia.Enabled=true) then
begin
Edit_orden2.text:=form_orden.Edit_orden.text;
Dm_modulo1.query_tablas.sql.add(Edit_orden2.text);
end;
Dm_modulo1.query_tablas.active;
//showmessage(Dm_modulo1.query_tablas.text);
Dm_modulo1.query_tablas.open;
dbgrid_consultas.Refresh;
Espero tu ayuda, lo más pronto
Si puedes envíame tu contestación a:
[email protected]
Margoth
Por las dudas, ¿probaste poner QRCTRLS dentro de la cláusula USES del formulario en donde vas a poner los controles del reporte?
Yo recién recibo tu mensaje. Me voy a poner esta noche a ver si saco algo en limpio, pero me parece que lo del Undeclared Identifier puede ser porque te falte la unidad QRCTRLS.
Andá probando, mientras, que yo me fijo en tu código.
Mira tengo en la tabla USES estas dos partes, pero aún me salen errores QuickRpt, Qrctrls
Gracias por tu ayuda
Margoth
Hoy te envié a tu dirección de correo
[email protected] un archivo con mi solución propuesta.
Fíjate si te anda.
Avisame si no, o si no te llega el email.
Finalmente, si te sirve, califícame en TodoExpertos.
Marcelo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas