Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Quick Report: Uno hoja por grupo.
Ir a página 1, 2  Siguiente
 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Quick Report: Uno hoja por grupo. Responder citando

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
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

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 Very Happy
_________________
Sin pena, ni gloria
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Entonces te había entendido otra cosa. No tienes fácil solución. Miraré a ver si tengo algo en el trabajo y te lo paso.
_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Si, sé que esta muy difícil... quizá Master _Leo, pues ayudarnos.
_________________
Sin pena, ni gloria
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Para ocultar los elementos de un QuickReport la porpiedad que tienes que cambiar es Enabled, poniéndola a false si no quieres verlos.
_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Surprised Surprised Surprised .... ok lo voy a intentar asi, y te cuento... GRACIAS !!!!
_________________
Sin pena, ni gloria
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.