Ir al contenido


Foto

[RESUELTO] Seventh Son of a Seventh Son (Reportes y subreportes en CrystalReports)


  • Por favor identifícate para responder
14 respuestas en este tema

#1 TiammatMX

TiammatMX

    Advanced Member

  • Miembros
  • PipPipPip
  • 1.750 mensajes
  • LocationUniverso Curvo\Vía Láctea\Sistema Solar\Planeta Tierra\América\México\Ciudad de México\Xochimilco\San Gregorio Atlapulco\Home

Escrito 10 agosto 2010 - 03:37

Ahora sí, estoy metido en un enorme berenjenal.

Resulta, compañerit@s del foro que estoy desarrollando una serie de reportes, que necesariamente se integrarán entre sí, controlados por un "reporte maestro" que está desarrollado en CrystalReports 9. Tenemos las VCL's y API de CrystalReports, todos los reportes por separado funcionando correctamente, una aplicación que tiene un visor de reportes CR, una base de datos hermosamente diseñada...

... pero falta integrar TODOS los reportes, uno controlando y los demás, definidos como subreportes añadidos a éste principal. ¿Alguna idea que me pueda ayudar a desenredar éste nudo gordiano?

Por cierto, si éste post no está en la sección correcta, favor de moverlo..., de antemano, gracias.
  • 0

#2 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 10 agosto 2010 - 04:47

Hola

En QuickReport hay un componente de nombre CompositeReport y hace precisamente lo que deseas, quiero pensar que CR cuenta con alguna facilidad similar (si es que se dice que es un reporteador muy bueno :p)

Salud OS

  • 0

#3 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.295 mensajes
  • LocationArgentina

Escrito 10 agosto 2010 - 06:18

La única vez que toqué CR fue en la pasantía por el título de técnico, la diferencia estaba en que empleaba VB y no Delphi.

Allí tuve un problemas con CR, no recuerdo que versión empleaba pero me me resultaba muy molesto... No pude generar informes como los que describes: un informe "maestro" que se componga de informes "hijos". Además tenía problemas para pasarles parámetros desde VB y en ocasiones no tomaba bien las consultas. Conclusión: tuve que generar Views y con ello pude hacer que CR las tomara y mostrase los datos.
De generar esos tipos de informes, ha decir verdad estuve 2 o 3 días con ello y opté por lo sano... prefería que el sistema tuviera más reportes básicos y sencillos. Creo que había llegado a hacer cerca de 20 informes.
Eso fue hace años, y debo reconocer que seguramente han cambiado mucho las cosas.
No lo he vuelto a probar. Terminé odiando a CR,... bueno, tengo que admitir también que el mini-curso acelerado de CR que me dieron en la empresa no daba mucho para agarrarle gusto y provecho.  :p

Saludos,
  • 0

#4 TiammatMX

TiammatMX

    Advanced Member

  • Miembros
  • PipPipPip
  • 1.750 mensajes
  • LocationUniverso Curvo\Vía Láctea\Sistema Solar\Planeta Tierra\América\México\Ciudad de México\Xochimilco\San Gregorio Atlapulco\Home

Escrito 11 agosto 2010 - 11:11

La única vez que toqué CR fue en la pasantía por el título de técnico, la diferencia estaba en que empleaba VB y no Delphi.

Allí tuve un problemas con CR, no recuerdo que versión empleaba pero me me resultaba muy molesto... No pude generar informes como los que describes: un informe "maestro" que se componga de informes "hijos". Además tenía problemas para pasarles parámetros desde VB y en ocasiones no tomaba bien las consultas. Conclusión: tuve que generar Views y con ello pude hacer que CR las tomara y mostrase los datos.
De generar esos tipos de informes, ha decir verdad estuve 2 o 3 días con ello y opté por lo sano... prefería que el sistema tuviera más reportes básicos y sencillos. Creo que había llegado a hacer cerca de 20 informes.
Eso fue hace años, y debo reconocer que seguramente han cambiado mucho las cosas.
No lo he vuelto a probar. Terminé odiando a CR,... bueno, tengo que admitir también que el mini-curso acelerado de CR que me dieron en la empresa no daba mucho para agarrarle gusto y provecho.  :p

Saludos,


¡¡Ouch!!, Delphius, realmente la historia que cuentas es bastante triste, sobre todo por que yo estoy viviendo una similar y creo que hasta mejorada...

Lo único que me queda es encomendarme a San Blaise PASCAL y continuar buscando la manera de resolver ésto. Concuerdo contigo, CrystalReports SUCKS!!!

Hola

En QuickReport hay un componente de nombre CompositeReport y hace precisamente lo que deseas, quiero pensar que CR cuenta con alguna facilidad similar (si es que se dice que es un reporteador muy bueno :p )

Salud OS


De hecho, se requiere que sea en CrystalReports. Yo de buena gana usaría mi proverbial y bien controlado ReportBuilder o hasta me atrevería a hacerlo en RaVE o QuickReport 3, pero como siempre en éstos casos, el que paga, manda.

Si quieres dar por finalizado el tema, no te detendré, gracias.
  • 0

#5 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 11 agosto 2010 - 11:21

Si quieres dar por finalizado el tema, no te detendré, gracias.


No hombre, no hay que rendirse tan pronto, debe haber una forma aunque sea una verdadera chapuza :D :D :D

Salud OS
  • 0

#6 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.295 mensajes
  • LocationArgentina

Escrito 11 agosto 2010 - 11:27


¡¡Ouch!!, Delphius, realmente la historia que cuentas es bastante triste, sobre todo por que yo estoy viviendo una similar y creo que hasta mejorada...

No se si darte mis pésames o tratar de alentarte a que saques más valentía y coraje.  :D
Pues si, era un tanto triste... ¡tener que usar VB! ¡guácala!, pero lo lindo es que durante ese mismo mes también la he podido pasar muy lindo, al menos encontraba la forma de alegrarme el día.

Lo único que me queda es encomendarme a San Blaise PASCAL y continuar buscando la manera de resolver ésto. Concuerdo contigo, CrystalReports SUCKS!!!

Ánimo, debe poder hacerse. Tiene que haber alguna manera... yo no recuerdo nada de nada de CR.

Habrá que rebuscarla, a ver si encuentro algo en la red de redes..

De hecho, se requiere que sea en CrystalReports. Yo de buena gana usaría mi proverbial y bien controlado ReportBuilder o hasta me atrevería a hacerlo en RaVE o QuickReport 3, pero como siempre en éstos casos, el que paga, manda.

Si quieres dar por finalizado el tema, no te detendré, gracias.

Ouch... yo iba a preguntarte si había la posibilidad de utilizar otro reporteador.
Yo opino que lo dejemos al tema abierto, no merece cerrarlo. En una de esas alguien más sabe algo.

Saludos,
  • 0

#7 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.295 mensajes
  • LocationArgentina

Escrito 11 agosto 2010 - 11:40

Hola de nuevo,

Felipe, ¿en que concretamente te da problemas el CR cuando quieres componer el informe "maestro" con sus "detalles"? ¿Le estás pasando parámetros? ¿No se muestra?

Estoy buscando algo sobre el tema, de forma un tanto genérica y los primeros resultados que estoy obteniendo son esto:
http://delphigroups..../11/355234.html
http://www.delphigro...2/2/359197.html

¿No tendrá algo que ver eso que se dice en los enlaces con tu caso?
De lo que da a entender el primer hilo es que hay algunos bugs en la VCL de CR.
Si bien allí hablan de la versión 8... quizá algo parecido se de en la 9.

Si nos puedes indicar concretamente el problema quizá podríamos ver mejor para saber donde apuntarle a ese bicho.

Saludos,
  • 0

#8 TiammatMX

TiammatMX

    Advanced Member

  • Miembros
  • PipPipPip
  • 1.750 mensajes
  • LocationUniverso Curvo\Vía Láctea\Sistema Solar\Planeta Tierra\América\México\Ciudad de México\Xochimilco\San Gregorio Atlapulco\Home

Escrito 11 agosto 2010 - 11:40

Si quieres dar por finalizado el tema, no te detendré, gracias.


No hombre, no hay que rendirse tan pronto, debe haber una forma aunque sea una verdadera chapuza :D :D :D

Salud OS


Pues es que de hecho, existe ésa forma, con un elegantísimo código en PASCAL, pero que para mi caso particular es tan útil como las llaves del auto en el estómago de un perro. Digo, no tengo problema en adaptar ése código o usarlo para aprender, aunque la intención que tenía al proponer el hilo era encontrar una ayudita para saber que no estoy tan errado.

Al paso que voy, terminaré el viernes, y entonces, les explicaré qué hice y cuál es el resultado.
  • 0

#9 TiammatMX

TiammatMX

    Advanced Member

  • Miembros
  • PipPipPip
  • 1.750 mensajes
  • LocationUniverso Curvo\Vía Láctea\Sistema Solar\Planeta Tierra\América\México\Ciudad de México\Xochimilco\San Gregorio Atlapulco\Home

Escrito 11 agosto 2010 - 11:44

Hola de nuevo,

Felipe, ¿en que concretamente te da problemas el CR cuando quieres componer el informe "maestro" con sus "detalles"? ¿Le estás pasando parámetros? ¿No se muestra?

Estoy buscando algo sobre el tema, de forma un tanto genérica y los primeros resultados que estoy obteniendo son esto:
http://delphigroups..../11/355234.html
http://www.delphigro...2/2/359197.html

¿No tendrá algo que ver eso que se dice en los enlaces con tu caso?
De lo que da a entender el primer hilo es que hay algunos bugs en la VCL de CR.
Si bien allí hablan de la versión 8... quizá algo parecido se de en la 9.

Si nos puedes indicar concretamente el problema quizá podríamos ver mejor para saber donde apuntarle a ese bicho.

Saludos,


Concretamente, eliminar del reporte de CR las sentencias SQL que lo componen, sustituirlas por otras en tiempo de ejecución, determinar si existe un subreporte, eliminar las sentencias que lo componen y sustituirlas por otras..., y así hasta terminar.

Como puedes ver, no es tan complicado en papel, pero a la hora de ponerlo en bit y bytes, es cuando las cosas se complican enormemente. Por el momento, me conformo con saber si dentro de un reporte maestro existe un subreporte, identificarlo y sustituir sus sentencias SQL por otras en tiempo de ejecución.
  • 0

#10 TiammatMX

TiammatMX

    Advanced Member

  • Miembros
  • PipPipPip
  • 1.750 mensajes
  • LocationUniverso Curvo\Vía Láctea\Sistema Solar\Planeta Tierra\América\México\Ciudad de México\Xochimilco\San Gregorio Atlapulco\Home

Escrito 12 agosto 2010 - 10:32

En la Zona de Descargas acabo de poner un PDF sobre el que me estoy basando para cumplir éste requerimiento. Estará disponible en cuanto Egostar o algún otro administrador lo autorice.

Saludines.
  • 0

#11 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 12 agosto 2010 - 10:39

Una pregunta, ¿ este material es de distribución libre ?

Porque veo que tiene derechos de autor.

Salud OS
  • 0

#12 TiammatMX

TiammatMX

    Advanced Member

  • Miembros
  • PipPipPip
  • 1.750 mensajes
  • LocationUniverso Curvo\Vía Láctea\Sistema Solar\Planeta Tierra\América\México\Ciudad de México\Xochimilco\San Gregorio Atlapulco\Home

Escrito 12 agosto 2010 - 10:58

Una pregunta, ¿ este material es de distribución libre ?

Porque veo que tiene derechos de autor.

Salud OS


Sinceramente, no sé. Pero como me resultó extremadamente útil, quise compartirlo con la comunidad.
  • 0

#13 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 12 agosto 2010 - 11:21


Una pregunta, ¿ este material es de distribución libre ?

Porque veo que tiene derechos de autor.

Salud OS


Sinceramente, no sé. Pero como me resultó extremadamente útil, quise compartirlo con la comunidad.


Entiendo, lo malo es que por norma no debemos subir documentos, programas, código, etc.. que no sean de distribución libre o sin el permiso del autor, por el momento lo dejamos en "Stand by" hasta saber si no estamos infringiendo los derechos de autor.

De cualquier forma se te agradece (y)

Salud OS
  • 0

#14 TiammatMX

TiammatMX

    Advanced Member

  • Miembros
  • PipPipPip
  • 1.750 mensajes
  • LocationUniverso Curvo\Vía Láctea\Sistema Solar\Planeta Tierra\América\México\Ciudad de México\Xochimilco\San Gregorio Atlapulco\Home

Escrito 13 agosto 2010 - 08:59

Listo, procesando, trabajando..., parte del código que estoy usando.



delphi
  1. pReport := CrystalApp.OpenReport('C:\089 Visual Map Version Actual\INCIDENTES\REPORTES\rptInc089.rpt', crOpenReportByTempCopy);
  2.     pSections := pReport.Sections;
  3.  
  4.     for i := 1 to pSections.Count do
  5.     begin
  6.     {Ciclar a través de cada sección del reporte principal}
  7.       pSection := pSections.Item[i];
  8.     {Obtener la colección de objetos de repore de la sección}
  9.       pRepObjects := pSection.ReportObjects;
  10.     {Ciclar a través de cada uno de los objetos de ésa sección}
  11.       for j := 1 to pRepObjects.Count do
  12.       begin
  13.         pRepObject := IReportObject(pRepObjects.Item[j]);
  14.     {Si el ReportObject es un SubreportObject}
  15.         if (pRepObject.Kind = crSubreportObject) then
  16.         begin
  17.     {Poner el  ReportObject al SubreportObject}
  18.           PSubObject := ISubReportObject(pRepObject);
  19.     {Asignar un nuevo Report object, el cual es el subreporte}
  20.           pSubreport := pSubObject.OpenSubreport;
  21.           sNmbrRprt := pSubObject.SubreportName;
  22.     {Asignar los parámetros de conexión a la base de datos a usar dentro del subreporte}
  23.           pSubObject.OpenSubreport.Database.LogOnServer(sMnj, sIns, sBse, sUsr, sPsw);
  24.     {Asignar los parámetros a usar dentro del subreporte}
  25.  
  26.           if sNmbrRprt = 'srMdFlc089.rpt' then
  27.           begin
  28.             wsSQL := 'SELECT DtllPrsInc.NmbPrs, DtllPrsInc.APtPrs, DtllPrsInc.AMtPrs, DtllPrsInc.AlsPrs, DtllPrsInc.EddPrs, '+
  29.                     'DtllPrsInc.EstPrs, DtllPrsInc.PsoPrs, DtllPrsInc.SxoPrs, CtlCpx.DscCpx, CtlFrmCra.DscFrmCra, '+
  30.                     'CtlTez.DscTez, CtlTpoPlo.DscTpoPlo, CtlCndPlo.DscCndPlo, CtlClrPlo.DscClrPlo, CtlClrOjs.DscClrOjs, '+
  31.                     'CtlTpoOjs.DscTpoOjs, CtlFrmBca.DscFrmBca, CtlFrmLbs.DscFrmLbs, CtlFrmFrn.DscFrmFrn, CtlFrmNrz.DscFrmNrz, '+
  32.                     'CtlFrmMnt.DscFrmMnt, CtlFrmCjs.DscFrmCjs, CtlFrmPtll.DscFrmPtll, CtlFrmBgt.DscFrmBgt, CtlFrmBrb.DscFrmBrb, '+
  33.                     'DtllPrsInc.DrcPrs, DtllPrsInc.DrcCln, DtllPrsInc.AntPnl, DtllPrsInc.RlcSjtVct, CtlLgrRlc.DscLgrRlc, '+
  34.                     'DtllPrsInc.TtjPrs, DtllPrsInc.NmrInc, DtllPrsInc.ClvMnc, DtllPrsInc.Foto, DtllPrsInc.VstCmnPrs, '+
  35.                     'DtllPrsInc.SnsPrtPrsn FROM ((((((((CtlTez INNER JOIN (CtlTpoPlo INNER JOIN (CtlCndPlo INNER JOIN '+
  36.                     '(CtlClrPlo INNER JOIN (CtlClrOjs INNER JOIN (CtlTpoOjs INNER JOIN (CtlFrmMnt INNER JOIN (CtlFrmPtll '+
  37.                     'INNER JOIN (CtlLgrRlc INNER JOIN (CtlCpx INNER JOIN DtllPrsInc ON CtlCpx.ClvCpx = DtllPrsInc.IndCmp) '+
  38.                     'ON CtlLgrRlc.ClvLgrRlc = DtllPrsInc.LgrRlc) ON CtlFrmPtll.ClvFrmPtll = DtllPrsInc.ClvFrmPll) ON '+
  39.                     'CtlFrmMnt.ClvFrmMnt = DtllPrsInc.ClvFrmMtn) ON CtlTpoOjs.ClvTpoOjs = DtllPrsInc.TpoOjsPrs) ON '+
  40.                     'CtlClrOjs.ClvClrOjs = DtllPrsInc.ClrOjsPrs) ON CtlClrPlo.ClvClrPlo = DtllPrsInc.ClrPloPrs) ON '+
  41.                     'CtlCndPlo.ClvCndPlo = DtllPrsInc.ClvCntCbl) ON CtlTpoPlo.ClvTpoPlo = DtllPrsInc.TpoPloPrs) ON '+
  42.                     'CtlTez.ClvTez = DtllPrsInc.ClrPil) INNER JOIN CtlFrmCra ON DtllPrsInc.ClvFrmCra = CtlFrmCra.ClvFrmCra) '+
  43.                     'INNER JOIN CtlFrmBca ON DtllPrsInc.ClvFrmBca = CtlFrmBca.ClvFrmBca) INNER JOIN CtlFrmLbs ON '+
  44.                     'DtllPrsInc.ClvFrmLbs = CtlFrmLbs.ClvFrmLbs) INNER JOIN CtlFrmFrn ON DtllPrsInc.ClvFrmFrn = CtlFrmFrn.ClvFrmFrn) '+
  45.                     'INNER JOIN CtlFrmNrz ON DtllPrsInc.ClvFrmNrz = CtlFrmNrz.ClvFrmNrz) INNER JOIN CtlFrmCjs ON '+
  46.                     'DtllPrsInc.ClvFrmCjs = CtlFrmCjs.ClvFrmCjs) INNER JOIN CtlFrmBgt ON DtllPrsInc.ClvFrmBgt = CtlFrmBgt.ClvFrmBgt) '+
  47.                     'INNER JOIN CtlFrmBrb ON DtllPrsInc.ClvFrmBrb = CtlFrmBrb.ClvFrmBrb '+
  48.                     'WHERE (DtllPrsInc.IndEst = '+QuotedStr('A')+') AND '+
  49.                     '(DtllPrsInc.NmrInc = '+strvrbgblInc+') AND (DtllPrsInc.ClvMnc = '+strvrbgblMnc+') ;';
  50.  
  51.             DtaMdlVrt.adoqryRptMdFlc089.SQL.Clear;
  52.             DtaMdlVrt.adoqryRptMdFlc089.SQL.Text := wsSQL;
  53.             DtaMdlVrt.adoqryRptMdFlc089.Open;
  54.             with pSubreport.Database do
  55.             begin
  56.               SetDataSource(DtaMdlVrt.adoqryRptMdFlc089.Recordset, 3, 1);
  57.               Tables.Item[1].SetLogOnInfo( sIns, sBse, sUsr, sPsw);
  58.               Tables.Item[2].SetLogOnInfo( sIns, sBse, sUsr, sPsw);
  59.               Tables.Item[3].SetLogOnInfo( sIns, sBse, sUsr, sPsw);
  60.               Tables.Item[4].SetLogOnInfo( sIns, sBse, sUsr, sPsw);
  61.               Tables.Item[5].SetLogOnInfo( sIns, sBse, sUsr, sPsw);
  62.               Tables.Item[6].SetLogOnInfo( sIns, sBse, sUsr, sPsw);
  63.               Tables.Item[7].SetLogOnInfo( sIns, sBse, sUsr, sPsw);
  64.               Tables.Item[8].SetLogOnInfo( sIns, sBse, sUsr, sPsw);
  65.               Tables.Item[9].SetLogOnInfo( sIns, sBse, sUsr, sPsw);
  66.               Tables.Item[10].SetLogOnInfo( sIns, sBse, sUsr, sPsw);
  67.               Tables.Item[11].SetLogOnInfo( sIns, sBse, sUsr, sPsw);
  68.               Tables.Item[12].SetLogOnInfo( sIns, sBse, sUsr, sPsw);
  69.               Tables.Item[13].SetLogOnInfo( sIns, sBse, sUsr, sPsw);
  70.               Tables.Item[14].SetLogOnInfo( sIns, sBse, sUsr, sPsw);
  71.               Tables.Item[15].SetLogOnInfo( sIns, sBse, sUsr, sPsw);
  72.               Tables.Item[16].SetLogOnInfo( sIns, sBse, sUsr, sPsw);
  73.               Tables.Item[17].SetLogOnInfo( sIns, sBse, sUsr, sPsw);
  74.               Tables.Item[18].SetLogOnInfo( sIns, sBse, sUsr, sPsw);
  75.               Tables.Item[19].SetLogOnInfo( sIns, sBse, sUsr, sPsw);
  76.             end;
  77.           end;
  78. .
  79. .
  80. .
  81. .
  82. .
  83.  
  84.  
  85.         end;
  86.       end;
  87.     end;
  88. // EOM
  89.  
  90.   CRViewer91.ReportSource := CRReport1.DefaultInterface;
  91.   CRViewer91.ViewReport;



Y con ésto, podemos dar por cerrado el tema.
  • 0

#15 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 13 agosto 2010 - 09:02

Ah que bien, me parece perfecto.

Salud OS
  • 0




IP.Board spam blocked by CleanTalk.