| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
yao_13 Master


Registrado: 29 Jul 2003Mensajes: 226
|
Publicado: Mar 25 Jul, 2006 10:02 pm Asunto: Quick Report: Uno hoja por grupo. |
|
|
ke onda señores... pues aki nuevamente aprovechandome de su sapiencia...
Tengo un programita ke lee informacion de x hojas en Excel y los sube a una base de datos, dentro de esa info, viene un código de barras,le tienda, cantidad de cajas y pares por caja...e hice un reporte agrupando por tienda y caja... kiero ke al momento de la impresión y en la visualización del reporte, cambie de hoja cada ke termina un grupo...y como el grupo principal es la Tienda entonces kedaría:
Tienda 1 (hoja 1)
Tienda 2 (hoja 2 y 3)
Tienda 3 (hoja 4)
etc
etc...
Hay alguna forma de hacer eso?????
si alguien tiene idea... le ruego ke me ayude , gracias. _________________ Sin pena, ni gloria |
|
| Volver arriba |
|
 |
Buildero Master


Registrado: 23 Dic 2003Mensajes: 523Ubicación: Puebla, México
|
Publicado: Mar 25 Jul, 2006 11:34 pm Asunto: |
|
|
Claro que se puede, sólo necesitas cambiar en la banda que agrupa, el valor de la propiedad ForceNewPage = true. Esto hara que cada vez que cambies de grupo se imprima en una nueva hoja.
Saludos _________________ Quien hace una pregunta teme parecer un ignorante durante cinco minutos, quien no pregunta se mantiene ignorante toda la vida. |
|
| Volver arriba |
|
 |
yao_13 Master


Registrado: 29 Jul 2003Mensajes: 226
|
Publicado: Mie 26 Jul, 2006 2:38 pm Asunto: |
|
|
Asi es mi kerido buildero.. ayer estuve haciendo experimento y si... tan facil como colocar esa propiedad en TRUE... muchas gracias... _________________ Sin pena, ni gloria |
|
| Volver arriba |
|
 |
yao_13 Master


Registrado: 29 Jul 2003Mensajes: 226
|
Publicado: Mie 26 Jul, 2006 11:42 pm Asunto: |
|
|
Una pregunta mas amigos... ke ahorita me acaba de pasar... lo ke pasa es ke como voy a tener una Tienda-caja por grupo ... kiero ke la tienda , ke tambien es agrupada salga en el Header... ya ocultéla banda de Group1 (Tienda)... y lo ke hago es colocar un QRLabel en el header y con la instruccion :
| Código: |
Form2->QRLabel3->Caption = Form2->Query2->FieldByName("CAJA")->AsString; |
le paso el valor al Label... el hecho es ke si pasa el valor pero no del grupo... es decir, tengo 2 grupos de tiendas (Polanco e Insurgentes) y para cada uno tengo 3 cajas.. pues solo me pone en el Label de Header el primer grupo en todas las hojas... es decir...para todas las hojas pone como Tienda : Polanco... ke estoy haciendo mal ?
en el reporte tengo un Page Header, QRGroup1(tienda), QRGroup1(caja), y un Detail (cantidad de cajas...
el query es este:
| Código: |
select tienda,caja,codigo,cadena,descripcion,count(cantidad) from codigos
where pedido = :pedi
group by tienda,caja,codigo,cadena,descripcion
order by tienda asc
|
_________________ Sin pena, ni gloria |
|
| Volver arriba |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Jue 27 Jul, 2006 7:36 am Asunto: |
|
|
No acabo de comprender muy bien que es lo que te pasa. Si quieres agrupar por tienda y caja, ¿por qué ocultas la banda de grupo?
En el QuickReport has puesto, o así lo he entendido, un QRGroup donde indicas la tienda y otro para la caja, ¿correcto?. ¿Qué has puesto en la propiedad Expression de los QRGroup? Si tienes dos bandas deberían ser algo así, si lo queires poner de forma dinámica:
| Código: | QRGroup1->Expression = "Query.tienda";
QRGroup2->Expression = "Query.caja"; |
También podrías agrupar los dos campos en un solo grupo:
| Código: | QRGroup1->Expression = "Query.tienda + Query.caja"; |
Sí te aconsejaría que usieras una banda que cerrara cada uno de los grupos abiertos; utiliza un QRBand normal poniendo en la propiedad BandType que es rbGroupFooter y en el grupo correspondiente selecciona en la propiedad FooterBand el nombre de la QRBand que sea necesario.
¡Ah! Otra cosa: por favor ¿Tanto cuesta escribir bien? ¿Cuesta mucho poner que en vez de ke? Si hasta hace daño a la vista y cuesta mucho más entender un mensaje escrito con esa moda de los SMS. _________________ Un saludo
Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA) |
|
| Volver arriba |
|
 |
yao_13 Master


Registrado: 29 Jul 2003Mensajes: 226
|
Publicado: Jue 27 Jul, 2006 8:01 pm Asunto: |
|
|
OK OK , lo que pasa es que siempre es escrito asi , y no es por flojeta ni nada, y ni siquiera uso celular...
bueno.. el problema es que hago un reporte con 2 columna por hoja... y no me queda nivelada la información por el Group Header... vean la imagen:
ke puedo hacer para ke me kede nivelada y no se vea tan feo?
Nota... Angel, ya solo puse un Group Header como me dijiste Query1.TIENDA + Query1.CAJA  _________________ Sin pena, ni gloria |
|
| Volver arriba |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Vie 28 Jul, 2006 7:20 am Asunto: |
|
|
En los informes encolumnados hay siempre un problema, o por lo menos a mi me ha ocurrido siempre: QuickReport va rellenado las columnas hasta donde llegue. Dicho de otra forma: es como si considerara cada columna como una página.
Supón que el informe a imprimir tiene 50 registros y en cada columna caben 30; en lugar de poner 25 y 25, dejando cinco libres en cada columna, te pondrá 30 en la primera (una página) y los otros 20 en la segunda (otra página). Por más que lo he intentado no he podido evitarlo, y mira que molesta cuando imprimes por ejemplo, etiquetas.
En la imagen que has puesto veo que lo que quieres es imprimir etiquetas. Lo único que se me ocurre es ir modificando de forma dinámica el final del informe. Dentro de QuickReport1->Page hay una propiedad BottomMargin que indica el margen inferior de la página; podrías probar a ir cambiando ese valor según vayan imprimiéndose etiquetas.
Otra opción: Como sabes de antemano cuantos registros vas a imprimir ya que has ejecutado el query, y puedes saber cuantos van impresos, en el evento BeforePrint puedes hacer esa modificación. Yo haría algo así:
| Cita: | Supongamos que en cada página de etiquetas caben como máximo 30 en dos columnas. Se podría hacer los siguiente:
1º. Definir una variable en la que iremos acumulando el número de etiquetas impresas (por ejemplo nImpresas).
2º. En el evento AfterPrint de la banda, cada vez que se imprime una acumulas. | Código: | void __fastcall TForm1::QRBand1AfterPrint(TQRCustomBand *Sender, bool BandPrinted)
{
nImpresas ++;
} |
3º. En el evento BeforePrint del informe verificas las etiquetas que quedan por imprimir y ajsutas el final de página si hace falta. | Código: | void __fastcall TForm1::QuickRep1BeforePrint(TCustomQuickRep *Sender, bool &PrintReport)
{
if (Query1->RecordCount - nImpresas < 30)
{
int nFaltan = (Query1->RecordCount - nImpresas) / QuickRep1->Page->Columns;
QuickRep1->Height = QuickRep1->Height - nFaltan * QRBand1->Height;
}
} |
|
Más o menos creo que por aquí podrían ir los tiros. Ya me dirás si te ha valido de algo esta elucubración. _________________ Un saludo
Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA) |
|
| Volver arriba |
|
 |
yao_13 Master


Registrado: 29 Jul 2003Mensajes: 226
|
Publicado: Vie 28 Jul, 2006 4:31 pm Asunto: |
|
|
Gracias Angel , por tu respuesta tan detallada ... pero que crees ?... realmente lo que quiero es que al imprimir el reporte queden nivelados los datos, es decir, tomando la imagen de mi post anterior... asi es como me sale actualmente ... y desearía que me saliera así:
Es decir... se desnivela la altura de la información por que en la primera columna tengo el Group Header... hay forma de dejar la info a la misma altura... como lo muestro en la imagen ?
Nota: La imagen fue editada.. para dejar el reporte como lo deseo. _________________ Sin pena, ni gloria |
|
| Volver arriba |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
|
| Volver arriba |
|
 |
yao_13 Master


Registrado: 29 Jul 2003Mensajes: 226
|
Publicado: Vie 28 Jul, 2006 7:38 pm Asunto: |
|
|
Si, sé que esta muy difícil... quizá Master _Leo, pues ayudarnos. _________________ Sin pena, ni gloria |
|
| Volver arriba |
|
 |
yao_13 Master


Registrado: 29 Jul 2003Mensajes: 226
|
Publicado: Lun 31 Jul, 2006 6:11 pm Asunto: |
|
|
lo ke tambien traté de hacer es ocultar la banda QRGroup...y los QRDBText para la tienda y caja.. y puse dentro de la banda header, dos QRLabel's para poner ahi lo de los valores ke vaya tomando el QRGroup... pero no cambiaba los valores del Label cada ke cambiaba el valor del QRDBText en el QRGroup... como podría hacer eso ?
Esa es la única forma ke se me ocurre. _________________ Sin pena, ni gloria |
|
| Volver arriba |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
|
| Volver arriba |
|
 |
yao_13 Master


Registrado: 29 Jul 2003Mensajes: 226
|
Publicado: Lun 31 Jul, 2006 9:46 pm Asunto: |
|
|
Si , eso lo sé, pero lo que quiero hacer es que la banda Header funcione las veces como la de QRGroup.. o sea... ke el valor de los componentes QRLabel cambie de valor conforme el componente QRDBText lo vaya haciendo... si me pasa el primer valro , pero ya no cambia a los demas valores de los grupos... es decir, si tengo 3 grupos :
- Durango
- Satelite
- Centro
utilizo lo siguiente para cambiar el valor del QRLabel, como si fuera el QRDBText del QRGroup:
| Código: |
Label1->Caption = Form2->Query2->FieldByName("TIENDA")->Value;
|
Query2 es donde tengo el código de esta forma:
| Código: |
select tienda,caja,codigo,cadena,descripcion,count(cantidad) from codigos
where pedido = :pedi and tienda = :tien
group by tienda,caja,codigo,cadena,descripcion
order by tienda asc
|
el primer valor si me lo escribe en el QRLabel, pero ya no cambia... como cambiaría en el Group Band el QRDBtext...
como puedo hacer eso ? para ke el Label del Header Band cambie como el QRDBText del Group Band? _________________ Sin pena, ni gloria |
|
| Volver arriba |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Mar 01 Ago, 2006 9:02 am Asunto: |
|
|
A ver si esto te soluciona el problema.
Creo que es mejor que uses un elemento QRExpr en lugar de un QRLabel. Puedes poner algo así, incluso de forma dinámica:
| Código: | QRExpr1->Expression = "'Tienda: ' + Query2.Tienda";
^ ^
Comillas simples |
Atento a la sintaxis si lo haces de forma dinámica en vez de hacerlo por el panel de propiedades. Este sistema yo lo yuso con bastante frecuencia y me ahorro estar diseñando muchos infores muy parecidos. Es más, puedes usar el mismo código tanto para el QRExpr como para la cabecera del grupo:
| Código: | QRGroup1->Expression = "'Tienda: ' + Query2.Tienda";
QRExpr1->Expression = "'Tienda: ' + Query2.Tienda"; |
Y así no tienes que estar preocupándote de hacer asignacioes según se genera el informe. _________________ Un saludo
Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA) |
|
| Volver arriba |
|
 |
yao_13 Master


Registrado: 29 Jul 2003Mensajes: 226
|
Publicado: Mar 01 Ago, 2006 5:40 pm Asunto: |
|
|
.... ok lo voy a intentar asi, y te cuento... GRACIAS !!!! _________________ Sin pena, ni gloria |
|
| Volver arriba |
|
 |
|