mandar reporte en tquickrep de 2 tablas diferentes
#1
Escrito 30 julio 2013 - 10:38
#2
Escrito 30 julio 2013 - 10:56
buen dia, aqui estoy con un problema y quisiera ver si me pueden ayudar para saber si se puede lo que intento, para los reportes uso tquickrep y cuando es informacion de una tabla pues no tengo problema, el asunto es que necesito mostrar informacion de 2 tablas diferentes quisiera saber si es posible hacerlo ya que solo me deja escojer una tabla en el dataset del tquickrep
Es posible pero para poder ayudarte mejor, podrías darnos más información sobre tu problema=?
#3
Escrito 30 julio 2013 - 11:00
datos.tablalta.close ; datos.tablalta.SQL.Clear; //datos.tablalta.SQL.Add('SELECT * FROM alta WHERE folio>=:folini and folio<=:folfin and fecha_ins>=:fechaini and fecha_ins<=:fechafin and nombre=:nomini and nombre=:nomfin order by folio asc '); datos.tablalta.SQL.Add('SELECT * FROM alta WHERE estado=:estado and nombre>=:nomini and nombre<=:nomfin and fecha_alta>=:fechaini and fecha_alta<=:fechafin order by nombre asc '); datos.tablalta.ParamByName('estado').Asstring:=estado.Text; datos.tablalta.ParamByName('nomini').Asstring:=nomini.Text; datos.tablalta.ParamByName('nomfin').Asstring:=nomfin.Text; datos.tablalta.ParamByName('fechaini').Asdate:=fechaini.date; datos.tablalta.ParamByName('fechafin').Asdate:=fechafin.date; //datos.tablalta.ParamByName('folini').Asstring:=folini.Text; //datos.tablalta.ParamByName('folfin').Asstring:=folfin.Text; datos.tablalta.Open; datos.tablalta.PREPARE; datos.tablalta.Active:=TRUE; form12.report.Preview ; end;
tengo una tabla alta y una mensualidad, lo que quiero lograr es en el reporte mostrar fecha que se dio de alta , el pago de la inscripcion que ahi mismo esta en esa tabla, y la fecha que pago la mensualidad asi como la cantidad no se si me explicaria un poco
#4
Escrito 30 julio 2013 - 11:09
#5
Escrito 30 julio 2013 - 11:38
Y porqué no usar un TQuery, donde mediante la consulta que le agregas puedes unir tantos campos y tablas como sea necesario...
Saludox !
#6
Escrito 30 julio 2013 - 11:48
#7
Escrito 30 julio 2013 - 03:50
En vez de usar tablas en tu QuickReport utiliza un componente TQuery. En su propieda SQL coloca la sentencia necesaria para traerte los campos que buscas, algo como:
select unatabla.campo1, unatabla.campo2,
otratabla.campo3, otratabla.campo4
from unatabla
join otratabla on unatabla.camporelacion = otratabla.camporelacion
Mediante el join "unes" campos de tablas relacionadas para mostrarlos en un solo grupo de registros (DataSet), el secreto es en generar la consulta adecuadamente para que puedas ver los campos y los registros correctos.
Entonces ya con la consulta creada, enlazas el TQuery en la propiedad DataSet de tu reporte y tendrás la información de todas las tablas que hayas unido en tu consulta.
Espero haberme explicado un poco mejor, si no, aquí andamos
Saludox !
#8
Escrito 31 julio 2013 - 01:14
Hace mucho que no uso QR, pero si lo que quieres imprimir es un maestro/detalle, éste te lo permite hacer mediante las bandas SubDetail. Investiga por ese lado.
Otra solución, si son master/detail, es la que propone Fenareth, sacar toda la información en una Query e imprimir ese resultado.
Por otro lado, si las tablas no tuvieran nada que ver una con la otra, existe un truco para hacerlo (yo lo usaba). Si fuera éste el caso, me lo dices y lo explico con detalle.
Nos leemos
#9
Escrito 31 julio 2013 - 11:19
#10
Escrito 31 julio 2013 - 11:42
Saludox !
#11
Escrito 31 julio 2013 - 12:03
datos.prueba.close ; datos.prueba.SQL.Clear; datos.prueba.sql.add('SELECT alta.folio, alta.fecha_alta, alta. nombre , alta.recibo, alta.fecha_ins, alta.restante, mensualidad.fecha_men, mensualidad.mes, mensualidad.recibo_men, mensualidad.saldo FROM alta '+ ' JOIN mensualidad ON alta.folio = mensualidad.codigo '); datos.prueba.ParamByName('nomini').Asstring:=nomini.Text; datos.prueba.ParamByName('nomfin').Asstring:=nomfin.Text; datos.prueba.PREPARE; datos.prueba.Active:=TRUE; form18.report.Preview;
pero no se en que parte agregar este parametro
WHERE nombre>=:nomini and nombre<=:nomfin