![]() |
| |||||||
| Registrarse | Preguntas Frecuentes | Lista de Foreros | Calendario | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
| | LinkBack | Herramientas | Desplegado |
| |||
| Estimado grupo, Hace una semana que estoy liado con un problema el cual no encuentro solucion, seguramente es que me he quedado con una idea fija en la cabeza, y no puedo salir de ahi jejejeje. El tema es el siguiente, necesito hacer un informe con el Quick Report de Delphi 6 Enterprise, usando tablas Paradox. Las tablas contienen aproximadamente estos datos --------------------- | TABLA-A | --------------------- |Campo1 | Campo2| --------------------- | a1 | a1 | --------------------- -------------------- | TABLA-B | -------------------- |Campo1 | Campo2| -------------------- | b1 | b1 | -------------------- | b2 | b2 | -------------------- | b3 | b3 | --------------------- --------------------- | TABLA-C | --------------------- |Campo1 | Campo2| --------------------- | c1 | c1 | ---------------------- ---------------------- | TABLA-D | ---------------------- |Campo1 | Campo2| --------------------- | d1 | d1 | -------------------- | d2 | d2 | -------------------- Bueno, estas son de alguna manera las tablas y sus datos, en un principio el informe se hacia imprimiendo los datos de cada tabla uno debajo del otro, o sea cada tabla en una banda diferente del Quick Report, resulta que ahora ya que este es un informe oficial los datos deben de salir todos en una misma fila, o sea, poner las 4 tablas en una misma banda del Quick Report, una solución que "encontre" fue agregar un componente TQuery con la siguiente instruccion SQL: SELECT Tabla-A.Campo1, Tabla-A.Campo2, Tabla-B.Campo1, Tabla-B.Campo2, Tabla-C.Campo1, Tabla-C.Campo2, Tabla-D.Campo1, Tabla-D.Campo2 FROM "Tabla-A.db" Tabla-A INNER JOIN "Tabla-B.DB" Tabla-B ON (Tabla-A.Clave1 = Tabla-B.Clave1) AND (Tabla-A.Clave2 = Tabla-B.Clave2) INNER JOIN "Tabla-C.DB" Tabla-C ON (Tabla-B.Clave1 = Tabla-C.Clave1) AND (Tabla-B.Clave2 = Tabla-C.Clave2) INNER JOIN "Tabla-D.DB" Tabla-D ON (Tabla-C.Clave1 = Tabla-D.Clave1) AND (Tabla-C.Clave2 = Tabla-D.Clave2) El tema es que el resultado que me da es el siguiente: Tabla-A Tabla-B Tabla-C Tabla-D ------------------------------------------ | a1 a1 | b1 b1 | c1 c1 | d1 d1 | | a1 a1 | b1 b1 | c1 c1 | d2 d2 | | a1 a1 | b2 b2 | c1 c1 | d1 d1 | | a1 a1 | b2 b2 | c1 c1 | d2 d2 | | a1 a1 | b3 b3 | c1 c1 | d1 d1 | | a1 a1 | b3 b3 | c1 c1 | d2 d2 | ------------------------------------------ Y Yo lo que necesito es un resultado como el siguiente: Tabla-A Tabla-B Tabla-C Tabla-D ------------------------------------------ |a1 a1 | b1 b1 | c1 c1 | d1 d1 | | | b2 b2 | | d2 d2 | | | b3 b3 | | | ------------------------------------------ Como hago para llegar a este resultado con los datos anteriormente explicados? Espero haber sido claro, y entiendan cual es el problema. Alguien es tan amable de darme una solucion, sea cual fuera y si necesitan algun otro dato, por favor preguntarme. Desde ya Muchas gracias a Todos |
| | ||||
| ||||
| |
| |||
| no entiendo totalmente tu problema, pero vamos, yo no lo haria de la forma en que lo estas haciendo , ya que como parece ser, el nº de registros de estas tablas seran mas o menos siempre los mismos, prepararia el report en tiempo dinámico para imprimir un nº de registros dentro de la banda incluso si te es mas facil, crearia las etiquetas en tiempo de diseño , y luego me recorreria las tablas en tiempo de ejecucion rellenando las etiquetas que se vallan a imprimir y 'limpiando' las que no. como al qreport debes de darle un dataset maestro, pues le asignaria la tabla a, que parece ser la principal y luego, dentro de la banda que quieras imprimir las demas tablas, abriria las demas tablas usando querys, e imprimiendolos a mi gusto en etiquetas ya creadas , (incluso podrias crearlas en tiempo de ejecucion), tambien puedes hacer crecer o disminuir el tamaño de la banda en funcion del nº de registros para q te hagas una idea, algo asi , pero usando todas las tablas Procedure qrdetailtbandafterprint() var Label:Tqrlabel; q:tibquery; x:integer; begin q:=tibquery.create(self); q.sql.add('select * from tableb where clave1='+tableaclave1.asstring'); q.open; x:=0; while (not q.eof) do begin label:=tqrlabel.create(self); label.parent:=qrdetailband1; label.left:=100; label.top:=20+(x*20) label.caption:=q.fieldbyname('campo1').asstring; label:=tqrlabel.create(self); label.parent:=qrdetailband1; label.left:=150; label.top:=20+(x*20) label.caption:=q.fieldbyname('campo2').asstring; q.next; inc(x); end; "armadillo" <armadillo***ono.com> escribió en el mensaje news:VpXtd.3369$US.2588***news.ono.com... > Estimado grupo, > Hace una semana que estoy liado con un problema el cual no encuentro > solucion, seguramente es que me he quedado con una idea fija en la cabeza, y > no puedo salir de ahi jejejeje. > El tema es el siguiente, necesito hacer un informe con el Quick Report de > Delphi 6 Enterprise, usando tablas Paradox. > Las tablas contienen aproximadamente estos datos > > --------------------- > | TABLA-A | > --------------------- > |Campo1 | Campo2| > --------------------- > | a1 | a1 | > --------------------- > > -------------------- > | TABLA-B | > -------------------- > |Campo1 | Campo2| > -------------------- > | b1 | b1 | > -------------------- > | b2 | b2 | > -------------------- > | b3 | b3 | > --------------------- > > --------------------- > | TABLA-C | > --------------------- > |Campo1 | Campo2| > --------------------- > | c1 | c1 | > ---------------------- > > ---------------------- > | TABLA-D | > ---------------------- > |Campo1 | Campo2| > --------------------- > | d1 | d1 | > -------------------- > | d2 | d2 | > -------------------- > > Bueno, estas son de alguna manera las tablas y sus datos, en un principio el > informe se hacia imprimiendo los datos de cada tabla uno debajo del otro, o > sea cada tabla en una banda diferente del Quick Report, resulta que ahora ya > que este es un informe oficial los datos deben de salir todos en una misma > fila, o sea, poner las 4 tablas en una misma banda del Quick Report, una > solución que "encontre" fue agregar un componente TQuery con la siguiente > instruccion SQL: > > SELECT Tabla-A.Campo1, Tabla-A.Campo2, Tabla-B.Campo1, Tabla-B.Campo2, > Tabla-C.Campo1, Tabla-C.Campo2, Tabla-D.Campo1, Tabla-D.Campo2 > FROM "Tabla-A.db" Tabla-A > INNER JOIN "Tabla-B.DB" Tabla-B > ON (Tabla-A.Clave1 = Tabla-B.Clave1) > AND (Tabla-A.Clave2 = Tabla-B.Clave2) > INNER JOIN "Tabla-C.DB" Tabla-C > ON (Tabla-B.Clave1 = Tabla-C.Clave1) > AND (Tabla-B.Clave2 = Tabla-C.Clave2) > INNER JOIN "Tabla-D.DB" Tabla-D > ON (Tabla-C.Clave1 = Tabla-D.Clave1) > AND (Tabla-C.Clave2 = Tabla-D.Clave2) > > El tema es que el resultado que me da es el siguiente: > > > Tabla-A Tabla-B Tabla-C Tabla-D > ------------------------------------------ > | a1 a1 | b1 b1 | c1 c1 | d1 d1 | > | a1 a1 | b1 b1 | c1 c1 | d2 d2 | > | a1 a1 | b2 b2 | c1 c1 | d1 d1 | > | a1 a1 | b2 b2 | c1 c1 | d2 d2 | > | a1 a1 | b3 b3 | c1 c1 | d1 d1 | > | a1 a1 | b3 b3 | c1 c1 | d2 d2 | > ------------------------------------------ > > Y Yo lo que necesito es un resultado como el siguiente: > > > Tabla-A Tabla-B Tabla-C Tabla-D > ------------------------------------------ > |a1 a1 | b1 b1 | c1 c1 | d1 d1 | > | | b2 b2 | | d2 d2 | > | | b3 b3 | | | > ------------------------------------------ > > > Como hago para llegar a este resultado con los datos anteriormente > explicados? > > Espero haber sido claro, y entiendan cual es el problema. > Alguien es tan amable de darme una solucion, sea cual fuera y si necesitan > algun otro dato, por favor preguntarme. > > Desde ya Muchas gracias a Todos > > |
| |||
| no entiendo totalmente tu problema, pero vamos, yo no lo haria de la forma en que lo estas haciendo , ya que como parece ser, el nº de registros de estas tablas seran mas o menos siempre los mismos, prepararia el report en tiempo dinámico para imprimir un nº de registros dentro de la banda incluso si te es mas facil, crearia las etiquetas en tiempo de diseño , y luego me recorreria las tablas en tiempo de ejecucion rellenando las etiquetas que se vallan a imprimir y 'limpiando' las que no. como al qreport debes de darle un dataset maestro, pues le asignaria la tabla a, que parece ser la principal y luego, dentro de la banda que quieras imprimir las demas tablas, abriria las demas tablas usando querys, e imprimiendolos a mi gusto en etiquetas ya creadas , (incluso podrias crearlas en tiempo de ejecucion), tambien puedes hacer crecer o disminuir el tamaño de la banda en funcion del nº de registros para q te hagas una idea, algo asi , pero usando todas las tablas Procedure qrdetailtbandafterprint() var Label:Tqrlabel; q:tibquery; x:integer; begin q:=tibquery.create(self); q.sql.add('select * from tableb where clave1='+tableaclave1.asstring'); q.open; x:=0; while (not q.eof) do begin label:=tqrlabel.create(self); label.parent:=qrdetailband1; label.left:=100; label.top:=20+(x*20) label.caption:=q.fieldbyname('campo1').asstring; label:=tqrlabel.create(self); label.parent:=qrdetailband1; label.left:=150; label.top:=20+(x*20) label.caption:=q.fieldbyname('campo2').asstring; q.next; inc(x); end; "armadillo" <armadillo***ono.com> escribió en el mensaje news:VpXtd.3369$US.2588***news.ono.com... > Estimado grupo, > Hace una semana que estoy liado con un problema el cual no encuentro > solucion, seguramente es que me he quedado con una idea fija en la cabeza, y > no puedo salir de ahi jejejeje. > El tema es el siguiente, necesito hacer un informe con el Quick Report de > Delphi 6 Enterprise, usando tablas Paradox. > Las tablas contienen aproximadamente estos datos > > --------------------- > | TABLA-A | > --------------------- > |Campo1 | Campo2| > --------------------- > | a1 | a1 | > --------------------- > > -------------------- > | TABLA-B | > -------------------- > |Campo1 | Campo2| > -------------------- > | b1 | b1 | > -------------------- > | b2 | b2 | > -------------------- > | b3 | b3 | > --------------------- > > --------------------- > | TABLA-C | > --------------------- > |Campo1 | Campo2| > --------------------- > | c1 | c1 | > ---------------------- > > ---------------------- > | TABLA-D | > ---------------------- > |Campo1 | Campo2| > --------------------- > | d1 | d1 | > -------------------- > | d2 | d2 | > -------------------- > > Bueno, estas son de alguna manera las tablas y sus datos, en un principio el > informe se hacia imprimiendo los datos de cada tabla uno debajo del otro, o > sea cada tabla en una banda diferente del Quick Report, resulta que ahora ya > que este es un informe oficial los datos deben de salir todos en una misma > fila, o sea, poner las 4 tablas en una misma banda del Quick Report, una > solución que "encontre" fue agregar un componente TQuery con la siguiente > instruccion SQL: > > SELECT Tabla-A.Campo1, Tabla-A.Campo2, Tabla-B.Campo1, Tabla-B.Campo2, > Tabla-C.Campo1, Tabla-C.Campo2, Tabla-D.Campo1, Tabla-D.Campo2 > FROM "Tabla-A.db" Tabla-A > INNER JOIN "Tabla-B.DB" Tabla-B > ON (Tabla-A.Clave1 = Tabla-B.Clave1) > AND (Tabla-A.Clave2 = Tabla-B.Clave2) > INNER JOIN "Tabla-C.DB" Tabla-C > ON (Tabla-B.Clave1 = Tabla-C.Clave1) > AND (Tabla-B.Clave2 = Tabla-C.Clave2) > INNER JOIN "Tabla-D.DB" Tabla-D > ON (Tabla-C.Clave1 = Tabla-D.Clave1) > AND (Tabla-C.Clave2 = Tabla-D.Clave2) > > El tema es que el resultado que me da es el siguiente: > > > Tabla-A Tabla-B Tabla-C Tabla-D > ------------------------------------------ > | a1 a1 | b1 b1 | c1 c1 | d1 d1 | > | a1 a1 | b1 b1 | c1 c1 | d2 d2 | > | a1 a1 | b2 b2 | c1 c1 | d1 d1 | > | a1 a1 | b2 b2 | c1 c1 | d2 d2 | > | a1 a1 | b3 b3 | c1 c1 | d1 d1 | > | a1 a1 | b3 b3 | c1 c1 | d2 d2 | > ------------------------------------------ > > Y Yo lo que necesito es un resultado como el siguiente: > > > Tabla-A Tabla-B Tabla-C Tabla-D > ------------------------------------------ > |a1 a1 | b1 b1 | c1 c1 | d1 d1 | > | | b2 b2 | | d2 d2 | > | | b3 b3 | | | > ------------------------------------------ > > > Como hago para llegar a este resultado con los datos anteriormente > explicados? > > Espero haber sido claro, y entiendan cual es el problema. > Alguien es tan amable de darme una solucion, sea cual fuera y si necesitan > algun otro dato, por favor preguntarme. > > Desde ya Muchas gracias a Todos > > |
| |||
| no entiendo totalmente tu problema, pero vamos, yo no lo haria de la forma en que lo estas haciendo , ya que como parece ser, el nº de registros de estas tablas seran mas o menos siempre los mismos, prepararia el report en tiempo dinámico para imprimir un nº de registros dentro de la banda incluso si te es mas facil, crearia las etiquetas en tiempo de diseño , y luego me recorreria las tablas en tiempo de ejecucion rellenando las etiquetas que se vallan a imprimir y 'limpiando' las que no. como al qreport debes de darle un dataset maestro, pues le asignaria la tabla a, que parece ser la principal y luego, dentro de la banda que quieras imprimir las demas tablas, abriria las demas tablas usando querys, e imprimiendolos a mi gusto en etiquetas ya creadas , (incluso podrias crearlas en tiempo de ejecucion), tambien puedes hacer crecer o disminuir el tamaño de la banda en funcion del nº de registros para q te hagas una idea, algo asi , pero usando todas las tablas Procedure qrdetailtbandafterprint() var Label:Tqrlabel; q:tibquery; x:integer; begin q:=tibquery.create(self); q.sql.add('select * from tableb where clave1='+tableaclave1.asstring'); q.open; x:=0; while (not q.eof) do begin label:=tqrlabel.create(self); label.parent:=qrdetailband1; label.left:=100; label.top:=20+(x*20) label.caption:=q.fieldbyname('campo1').asstring; label:=tqrlabel.create(self); label.parent:=qrdetailband1; label.left:=150; label.top:=20+(x*20) label.caption:=q.fieldbyname('campo2').asstring; q.next; inc(x); end; "armadillo" <armadillo***ono.com> escribió en el mensaje news:VpXtd.3369$US.2588***news.ono.com... > Estimado grupo, > Hace una semana que estoy liado con un problema el cual no encuentro > solucion, seguramente es que me he quedado con una idea fija en la cabeza, y > no puedo salir de ahi jejejeje. > El tema es el siguiente, necesito hacer un informe con el Quick Report de > Delphi 6 Enterprise, usando tablas Paradox. > Las tablas contienen aproximadamente estos datos > > --------------------- > | TABLA-A | > --------------------- > |Campo1 | Campo2| > --------------------- > | a1 | a1 | > --------------------- > > -------------------- > | TABLA-B | > -------------------- > |Campo1 | Campo2| > -------------------- > | b1 | b1 | > -------------------- > | b2 | b2 | > -------------------- > | b3 | b3 | > --------------------- > > --------------------- > | TABLA-C | > --------------------- > |Campo1 | Campo2| > --------------------- > | c1 | c1 | > ---------------------- > > ---------------------- > | TABLA-D | > ---------------------- > |Campo1 | Campo2| > --------------------- > | d1 | d1 | > -------------------- > | d2 | d2 | > -------------------- > > Bueno, estas son de alguna manera las tablas y sus datos, en un principio el > informe se hacia imprimiendo los datos de cada tabla uno debajo del otro, o > sea cada tabla en una banda diferente del Quick Report, resulta que ahora ya > que este es un informe oficial los datos deben de salir todos en una misma > fila, o sea, poner las 4 tablas en una misma banda del Quick Report, una > solución que "encontre" fue agregar un componente TQuery con la siguiente > instruccion SQL: > > SELECT Tabla-A.Campo1, Tabla-A.Campo2, Tabla-B.Campo1, Tabla-B.Campo2, > Tabla-C.Campo1, Tabla-C.Campo2, Tabla-D.Campo1, Tabla-D.Campo2 > FROM "Tabla-A.db" Tabla-A > INNER JOIN "Tabla-B.DB" Tabla-B > ON (Tabla-A.Clave1 = Tabla-B.Clave1) > AND (Tabla-A.Clave2 = Tabla-B.Clave2) > INNER JOIN "Tabla-C.DB" Tabla-C > ON (Tabla-B.Clave1 = Tabla-C.Clave1) > AND (Tabla-B.Clave2 = Tabla-C.Clave2) > INNER JOIN "Tabla-D.DB" Tabla-D > ON (Tabla-C.Clave1 = Tabla-D.Clave1) > AND (Tabla-C.Clave2 = Tabla-D.Clave2) > > El tema es que el resultado que me da es el siguiente: > > > Tabla-A Tabla-B Tabla-C Tabla-D > ------------------------------------------ > | a1 a1 | b1 b1 | c1 c1 | d1 d1 | > | a1 a1 | b1 b1 | c1 c1 | d2 d2 | > | a1 a1 | b2 b2 | c1 c1 | d1 d1 | > | a1 a1 | b2 b2 | c1 c1 | d2 d2 | > | a1 a1 | b3 b3 | c1 c1 | d1 d1 | > | a1 a1 | b3 b3 | c1 c1 | d2 d2 | > ------------------------------------------ > > Y Yo lo que necesito es un resultado como el siguiente: > > > Tabla-A Tabla-B Tabla-C Tabla-D > ------------------------------------------ > |a1 a1 | b1 b1 | c1 c1 | d1 d1 | > | | b2 b2 | | d2 d2 | > | | b3 b3 | | | > ------------------------------------------ > > > Como hago para llegar a este resultado con los datos anteriormente > explicados? > > Espero haber sido claro, y entiendan cual es el problema. > Alguien es tan amable de darme una solucion, sea cual fuera y si necesitan > algun otro dato, por favor preguntarme. > > Desde ya Muchas gracias a Todos > > |
| |||
| no entiendo totalmente tu problema, pero vamos, yo no lo haria de la forma en que lo estas haciendo , ya que como parece ser, el nº de registros de estas tablas seran mas o menos siempre los mismos, prepararia el report en tiempo dinámico para imprimir un nº de registros dentro de la banda incluso si te es mas facil, crearia las etiquetas en tiempo de diseño , y luego me recorreria las tablas en tiempo de ejecucion rellenando las etiquetas que se vallan a imprimir y 'limpiando' las que no. como al qreport debes de darle un dataset maestro, pues le asignaria la tabla a, que parece ser la principal y luego, dentro de la banda que quieras imprimir las demas tablas, abriria las demas tablas usando querys, e imprimiendolos a mi gusto en etiquetas ya creadas , (incluso podrias crearlas en tiempo de ejecucion), tambien puedes hacer crecer o disminuir el tamaño de la banda en funcion del nº de registros para q te hagas una idea, algo asi , pero usando todas las tablas Procedure qrdetailtbandafterprint() var Label:Tqrlabel; q:tibquery; x:integer; begin q:=tibquery.create(self); q.sql.add('select * from tableb where clave1='+tableaclave1.asstring'); q.open; x:=0; while (not q.eof) do begin label:=tqrlabel.create(self); label.parent:=qrdetailband1; label.left:=100; label.top:=20+(x*20) label.caption:=q.fieldbyname('campo1').asstring; label:=tqrlabel.create(self); label.parent:=qrdetailband1; label.left:=150; label.top:=20+(x*20) label.caption:=q.fieldbyname('campo2').asstring; q.next; inc(x); end; "armadillo" <armadillo***ono.com> escribió en el mensaje news:VpXtd.3369$US.2588***news.ono.com... > Estimado grupo, > Hace una semana que estoy liado con un problema el cual no encuentro > solucion, seguramente es que me he quedado con una idea fija en la cabeza, y > no puedo salir de ahi jejejeje. > El tema es el siguiente, necesito hacer un informe con el Quick Report de > Delphi 6 Enterprise, usando tablas Paradox. > Las tablas contienen aproximadamente estos datos > > --------------------- > | TABLA-A | > --------------------- > |Campo1 | Campo2| > --------------------- > | a1 | a1 | > --------------------- > > -------------------- > | TABLA-B | > -------------------- > |Campo1 | Campo2| > -------------------- > | b1 | b1 | > -------------------- > | b2 | b2 | > -------------------- > | b3 | b3 | > --------------------- > > --------------------- > | TABLA-C | > --------------------- > |Campo1 | Campo2| > --------------------- > | c1 | c1 | > ---------------------- > > ---------------------- > | TABLA-D | > ---------------------- > |Campo1 | Campo2| > --------------------- > | d1 | d1 | > -------------------- > | d2 | d2 | > -------------------- > > Bueno, estas son de alguna manera las tablas y sus datos, en un principio el > informe se hacia imprimiendo los datos de cada tabla uno debajo del otro, o > sea cada tabla en una banda diferente del Quick Report, resulta que ahora ya > que este es un informe oficial los datos deben de salir todos en una misma > fila, o sea, poner las 4 tablas en una misma banda del Quick Report, una > solución que "encontre" fue agregar un componente TQuery con la siguiente > instruccion SQL: > > SELECT Tabla-A.Campo1, Tabla-A.Campo2, Tabla-B.Campo1, Tabla-B.Campo2, > Tabla-C.Campo1, Tabla-C.Campo2, Tabla-D.Campo1, Tabla-D.Campo2 > FROM "Tabla-A.db" Tabla-A > INNER JOIN "Tabla-B.DB" Tabla-B > ON (Tabla-A.Clave1 = Tabla-B.Clave1) > AND (Tabla-A.Clave2 = Tabla-B.Clave2) > INNER JOIN "Tabla-C.DB" Tabla-C > ON (Tabla-B.Clave1 = Tabla-C.Clave1) > AND (Tabla-B.Clave2 = Tabla-C.Clave2) > INNER JOIN "Tabla-D.DB" Tabla-D > ON (Tabla-C.Clave1 = Tabla-D.Clave1) > AND (Tabla-C.Clave2 = Tabla-D.Clave2) > > El tema es que el resultado que me da es el siguiente: > > > Tabla-A Tabla-B Tabla-C Tabla-D > ------------------------------------------ > | a1 a1 | b1 b1 | c1 c1 | d1 d1 | > | a1 a1 | b1 b1 | c1 c1 | d2 d2 | > | a1 a1 | b2 b2 | c1 c1 | d1 d1 | > | a1 a1 | b2 b2 | c1 c1 | d2 d2 | > | a1 a1 | b3 b3 | c1 c1 | d1 d1 | > | a1 a1 | b3 b3 | c1 c1 | d2 d2 | > ------------------------------------------ > > Y Yo lo que necesito es un resultado como el siguiente: > > > Tabla-A Tabla-B Tabla-C Tabla-D > ------------------------------------------ > |a1 a1 | b1 b1 | c1 c1 | d1 d1 | > | | b2 b2 | | d2 d2 | > | | b3 b3 | | | > ------------------------------------------ > > > Como hago para llegar a este resultado con los datos anteriormente > explicados? > > Espero haber sido claro, y entiendan cual es el problema. > Alguien es tan amable de darme una solucion, sea cual fuera y si necesitan > algun otro dato, por favor preguntarme. > > Desde ya Muchas gracias a Todos > > |
| |||
| no entiendo totalmente tu problema, pero vamos, yo no lo haria de la forma en que lo estas haciendo , ya que como parece ser, el nº de registros de estas tablas seran mas o menos siempre los mismos, prepararia el report en tiempo dinámico para imprimir un nº de registros dentro de la banda incluso si te es mas facil, crearia las etiquetas en tiempo de diseño , y luego me recorreria las tablas en tiempo de ejecucion rellenando las etiquetas que se vallan a imprimir y 'limpiando' las que no. como al qreport debes de darle un dataset maestro, pues le asignaria la tabla a, que parece ser la principal y luego, dentro de la banda que quieras imprimir las demas tablas, abriria las demas tablas usando querys, e imprimiendolos a mi gusto en etiquetas ya creadas , (incluso podrias crearlas en tiempo de ejecucion), tambien puedes hacer crecer o disminuir el tamaño de la banda en funcion del nº de registros para q te hagas una idea, algo asi , pero usando todas las tablas Procedure qrdetailtbandafterprint() var Label:Tqrlabel; q:tibquery; x:integer; begin q:=tibquery.create(self); q.sql.add('select * from tableb where clave1='+tableaclave1.asstring'); q.open; x:=0; while (not q.eof) do begin label:=tqrlabel.create(self); label.parent:=qrdetailband1; label.left:=100; label.top:=20+(x*20) label.caption:=q.fieldbyname('campo1').asstring; label:=tqrlabel.create(self); label.parent:=qrdetailband1; label.left:=150; label.top:=20+(x*20) label.caption:=q.fieldbyname('campo2').asstring; q.next; inc(x); end; "armadillo" <armadillo***ono.com> escribió en el mensaje news:VpXtd.3369$US.2588***news.ono.com... > Estimado grupo, > Hace una semana que estoy liado con un problema el cual no encuentro > solucion, seguramente es que me he quedado con una idea fija en la cabeza, y > no puedo salir de ahi jejejeje. > El tema es el siguiente, necesito hacer un informe con el Quick Report de > Delphi 6 Enterprise, usando tablas Paradox. > Las tablas contienen aproximadamente estos datos > > --------------------- > | TABLA-A | > --------------------- > |Campo1 | Campo2| > --------------------- > | a1 | a1 | > --------------------- > > -------------------- > | TABLA-B | > -------------------- > |Campo1 | Campo2| > -------------------- > | b1 | b1 | > -------------------- > | b2 | b2 | > -------------------- > | b3 | b3 | > --------------------- > > --------------------- > | TABLA-C | > --------------------- > |Campo1 | Campo2| > --------------------- > | c1 | c1 | > ---------------------- > > ---------------------- > | TABLA-D | > ---------------------- > |Campo1 | Campo2| > --------------------- > | d1 | d1 | > -------------------- > | d2 | d2 | > -------------------- > > Bueno, estas son de alguna manera las tablas y sus datos, en un principio el > informe se hacia imprimiendo los datos de cada tabla uno debajo del otro, o > sea cada tabla en una banda diferente del Quick Report, resulta que ahora ya > que este es un informe oficial los datos deben de salir todos en una misma > fila, o sea, poner las 4 tablas en una misma banda del Quick Report, una > solución que "encontre" fue agregar un componente TQuery con la siguiente > instruccion SQL: > > SELECT Tabla-A.Campo1, Tabla-A.Campo2, Tabla-B.Campo1, Tabla-B.Campo2, > Tabla-C.Campo1, Tabla-C.Campo2, Tabla-D.Campo1, Tabla-D.Campo2 > FROM "Tabla-A.db" Tabla-A > INNER JOIN "Tabla-B.DB" Tabla-B > ON (Tabla-A.Clave1 = Tabla-B.Clave1) > AND (Tabla-A.Clave2 = Tabla-B.Clave2) > INNER JOIN "Tabla-C.DB" Tabla-C > ON (Tabla-B.Clave1 = Tabla-C.Clave1) > AND (Tabla-B.Clave2 = Tabla-C.Clave2) > INNER JOIN "Tabla-D.DB" Tabla-D > ON (Tabla-C.Clave1 = Tabla-D.Clave1) > AND (Tabla-C.Clave2 = Tabla-D.Clave2) > > El tema es que el resultado que me da es el siguiente: > > > Tabla-A Tabla-B Tabla-C Tabla-D > ------------------------------------------ > | a1 a1 | b1 b1 | c1 c1 | d1 d1 | > | a1 a1 | b1 b1 | c1 c1 | d2 d2 | > | a1 a1 | b2 b2 | c1 c1 | d1 d1 | > | a1 a1 | b2 b2 | c1 c1 | d2 d2 | > | a1 a1 | b3 b3 | c1 c1 | d1 d1 | > | a1 a1 | b3 b3 | c1 c1 | d2 d2 | > ------------------------------------------ > > Y Yo lo que necesito es un resultado como el siguiente: > > > Tabla-A Tabla-B Tabla-C Tabla-D > ------------------------------------------ > |a1 a1 | b1 b1 | c1 c1 | d1 d1 | > | | b2 b2 | | d2 d2 | > | | b3 b3 | | | > ------------------------------------------ > > > Como hago para llegar a este resultado con los datos anteriormente > explicados? > > Espero haber sido claro, y entiendan cual es el problema. > Alguien es tan amable de darme una solucion, sea cual fuera y si necesitan > algun otro dato, por favor preguntarme. > > Desde ya Muchas gracias a Todos > > |
| |||
| Si no entiendo mal quieres que no se vuelvan a imprimir los datos repetidos, si es esto, se me ocurren dos posibles soluciones: 1.- Creas un group band y pones como expression los campos que se pueden repetir, una group band por cada campo. La pega es que te quedarán los datos en distintas líneas, pero tiene solución. 2.- En el evento AfterPrint de la banda guardas los valores que has impreso y después en el evento OnPrint comparas los valores anteriores con los que vas a imprimir, si son iguales le pasas al parámetro Text un texto vacío. No me he extendido mucho porque no sé si es ese el problema que quieres resolver, pero si no me entiendes dímelo y me estiro un poco más en explicarlo. Un saludo. |
| |
| |
| |||
| Si no entiendo mal quieres que no se vuelvan a imprimir los datos repetidos, si es esto, se me ocurren dos posibles soluciones: 1.- Creas un group band y pones como expression los campos que se pueden repetir, una group band por cada campo. La pega es que te quedarán los datos en distintas líneas, pero tiene solución. 2.- En el evento AfterPrint de la banda guardas los valores que has impreso y después en el evento OnPrint comparas los valores anteriores con los que vas a imprimir, si son iguales le pasas al parámetro Text un texto vacío. No me he extendido mucho porque no sé si es ese el problema que quieres resolver, pero si no me entiendes dímelo y me estiro un poco más en explicarlo. Un saludo. |
| |||
| Si no entiendo mal quieres que no se vuelvan a imprimir los datos repetidos, si es esto, se me ocurren dos posibles soluciones: 1.- Creas un group band y pones como expression los campos que se pueden repetir, una group band por cada campo. La pega es que te quedarán los datos en distintas líneas, pero tiene solución. 2.- En el evento AfterPrint de la banda guardas los valores que has impreso y después en el evento OnPrint comparas los valores anteriores con los que vas a imprimir, si son iguales le pasas al parámetro Text un texto vacío. No me he extendido mucho porque no sé si es ese el problema que quieres resolver, pero si no me entiendes dímelo y me estiro un poco más en explicarlo. Un saludo. |
| |||
| Si no entiendo mal quieres que no se vuelvan a imprimir los datos repetidos, si es esto, se me ocurren dos posibles soluciones: 1.- Creas un group band y pones como expression los campos que se pueden repetir, una group band por cada campo. La pega es que te quedarán los datos en distintas líneas, pero tiene solución. 2.- En el evento AfterPrint de la banda guardas los valores que has impreso y después en el evento OnPrint comparas los valores anteriores con los que vas a imprimir, si son iguales le pasas al parámetro Text un texto vacío. No me he extendido mucho porque no sé si es ese el problema que quieres resolver, pero si no me entiendes dímelo y me estiro un poco más en explicarlo. Un saludo. |
![]() |
| Herramientas | |
| Desplegado | |
| |
Temas Similares | ||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| No puedo importar a access tablas de paradox, antes si | Hirotaro | Newsgroup microsoft.public.es.access | 1 | 11-06-2008 22:45:16 |
| Cambiar idioma tablas paradox desde delphi2 | tecno | Newsgroup es.comp.lenguajes.delphi | 21 | 05-10-2004 20:28:20 |
| ganar velocidad con tablas paradox | Santy Concepción | Newsgroup es.comp.lenguajes.delphi | 7 | 16-09-2004 20:30:02 |
| Tablas paradox, Cambiar estructura. | armadillo | Newsgroup es.comp.lenguajes.delphi | 6 | 10-06-2004 08:55:15 |
| problemas con acceso a tablas paradox | Carlos García | Newsgroup microsoft.public.es.vs | 0 | 29-08-2003 13:50:03 |