PDA

Ver la Versión Completa : Reportes en QuickReport


Ricomarz
12-01-2007, 05:15:59
Hola buenas tardes, necesito ayuda urgente, necesito desplegar en un quickreport la siguiente informacion:

Curso Cuenta Subcuenta Programa Concepto No. Paquete Importe

Español
402 3 7223 COLEGIATURA 5 800
416 18 7223 MANTENIMIENTO 5 300

Suma por curso: $1100

Tipo Descuento Total Descuento
UNIVERSITARIO 400

Ingles
402 3 7223 COLEGIATURA 2 800
416 18 7223 MANTENIMIENTO 2 300

Suma por curso: $1100

Tipo Descuento Total Descuento
UNIVERSITARIO 400

.... asi sucesivamente

El problema es que solo me muestra el primer curso con sus datos, siendo que tengo dos, no he podido encontrar el error, tengo select's anidados,
del primero obtengo el #de paquete el cual entrara como parametro en otros 3 los cuales utilizo para mostrar los datos del curso, suma importe descuentos ... pero como les digo no encuentro el error, si me pudieran decir cual es el error o decirme otra manera de hacerlo, aqui les pongo el codigo que tengo ... a ver si encuentran el error : por que yo no lo veo ....

procedure ObtenerDatosConceptos(per,mpio:string);
var idmpio,reg,pqte:integer;
begin
idmpio:=strToInt(muncipio(mpio));

// AQUI OBTENEMOS EL NUMERO DE PAQUETE QUE ENTRARA COMO PARAMETRO PARA OBTENER
// LOS DESCUENTOS Y PARA OBTENER LOS CONCEPTOS DEL CURSO
dmprincipal.QBuscarCurso.Active:=false;
dmprincipal.QBuscarCurso.SQL.Text:='Select pc.paquete as paquete '+
'From paquete p,conceptos c, paqueteconcepto pc,periodos pe, materias ma,cursos cu '+
'Where p.paquete=pc.paquete and pc.id_cpto=c.id_cpto and p.id_periodo=pe.id_periodo and pe.vigencia="1" '+
'and p.clave_materia=ma.clave_materia and ma.id_curso=cu.id_curso and cu.id_mpio=:idmpio and pe.periodo=:per '+
'Order by cu.des_curso,c.cta,c.sbcta,c.programa,c.concepto';
dmprincipal.QBuscarCurso.Parameters.ParamByName('per').value:=per;
dmprincipal.QBuscarCurso.Parameters.ParamByName('idmpio').value:=idmpio;
dmprincipal.QBuscarCurso.Active:=true;
dmprincipal.QBuscarCurso.ExecSQL;
reg:=dmprincipal.QBuscarCurso.Recordset.RecordCount;
if reg>0 then
begin
//OBTENEMOS EL # PAQUETE EL CUAL ENTRARA COMO PARAMETRO
pqte:= dmprincipal.QBuscarCurso.FieldByName('paquete').value;

//OBTENEMOS LA SUMA DE LOS IMPORTES DE LOS CONCEPTOS
dmprincipal.QBuscas.Active:=false;
dmprincipal.QBuscas.SQL.Text:='Select sum(pc.importe) as total '+
'From paquete p,conceptos c, paqueteconcepto pc,periodos pe, materias ma,cursos cu '+
'Where p.paquete=pc.paquete and pc.id_cpto=c.id_cpto and p.id_periodo=pe.id_periodo and pe.vigencia="1" '+
'and p.clave_materia=ma.clave_materia and ma.id_curso=cu.id_curso and cu.id_mpio=:idmpio and pe.periodo=:per '+
'and p.paquete=:pqte Order by cu.des_curso,c.cta,c.sbcta,c.programa,c.concepto';
dmprincipal.QBuscas.Parameters.ParamByName('per').value:=per;
dmprincipal.QBuscas.Parameters.ParamByName('idmpio').value:=idmpio;
dmprincipal.QBuscas.Parameters.ParamByName('pqte').value:=pqte;
dmprincipal.QBuscas.Active:=true;
dmprincipal.QBuscas.ExecSQL;
reg:=dmprincipal.QBuscas.Recordset.RecordCount;
if reg>0 then
begin
Frepconceptopago.totalcurso.Caption:= dmprincipal.QBuscas.FieldByName('total').value;

//OBTENEMOS LOS CONCEPTOS, ASI COMO SU CUENTA, SUBCUENTA, PROGRAMA Y EL IMPORTE
dmprincipal.QBuscar.Active:=false;
dmprincipal.QBuscar.SQL.Text:='Select cu.des_curso,c.cta,c.sbcta,c.programa,c.concepto,pc.importe,p.paquete, pc.paquete as paquete '+
'From paquete p,conceptos c, paqueteconcepto pc,periodos pe, materias ma,cursos cu '+
'Where p.paquete=pc.paquete and pc.id_cpto=c.id_cpto and p.id_periodo=pe.id_periodo and pe.vigencia="1" '+
'and p.clave_materia=ma.clave_materia and ma.id_curso=cu.id_curso and cu.id_mpio=:idmpio and pe.periodo=:per '+
'and p.paquete=:pqte Order by cu.des_curso,c.cta,c.sbcta,c.programa,c.concepto';
dmprincipal.QBuscar.Parameters.ParamByName('per').value:=per;
dmprincipal.QBuscar.Parameters.ParamByName('idmpio').value:=idmpio;
dmprincipal.QBuscar.Parameters.ParamByName('pqte').value:=pqte;
dmprincipal.QBuscar.Active:=true;
dmprincipal.QBuscar.ExecSQL;

//PARA SACAR EL LISTADO DE DESCUENTOS POR CURSO
//AQUI RECIBE COMO PARAMETRO EL # DE PAQUETE AL CUAL SE LE APLICA EL DESCUENTO
dmprincipal.QBusca.Active:=false;
dmprincipal.QBusca.SQL.Text:='select d.des_descto, dp.importe as importe, cu.des_curso '+
'from descuentos d, descuentopaquete dp, cursos cu, paquete p, periodos pe, materias ma '+
'where d.id_descto=dp.id_descto and dp.paquete=p.paquete and p.id_periodo=pe.id_periodo '+
'and p.clave_materia=ma.clave_materia and ma.id_curso=cu.id_curso and cu.id_mpio=:idmpio '+
'and pe.vigencia="1" and p.paquete=:qte';
dmprincipal.QBusca.Parameters.ParamByName('idmpio').value:=idmpio;
dmprincipal.QBusca.Parameters.ParamByName('pqte').value:=pqte;
dmprincipal.QBusca.Active:=true;
dmprincipal.QBusca.ExecSQL;
end;
end
else
begin
FidioConceptosyGrupos.mensaje.Caption:='No existen conceptos de cursos';
FidioConceptosyGrupos.mensaje.Visible:=true;
end;
end;


ESPERO PUEDAN AYUDARME
SALUDOS ...
ricomarz@hotmail.com

ContraVeneno
12-01-2007, 16:34:09
¿No sería mejor hacerlo todo en una sola consulta? No veo la necesidad de hacer 3 o 4 consultas diferentes. Según puedo ver, en todas tus consultas utilizas mayormente las mismas tablas. Es por eso mi pregunta: ¿No se puede hacer todo en una sola consulta? (usar JOINS creo sería lo más conveniente)

De esta forma, al tener todos los resultados en una sola consulta, solo es cuestión de que los agrupes de manera correcta y listo.