FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Uso de QRStringsBand
Hola,
he comenzado un hilo sobre como se efectúan las consultas entre varias tablas con SUM aquí. En realidad, y como comento en dicho hilo, la consulta es para un reporte, concretamente un QReport y, la consulta la hago mediante un TIBQuery. He pensado en que otra solución para mi problema es recorrer el Dataset para efectuar la sumatoria, y luego, mostrar los campos en un QRStringsBand. El problema es que no tengo ni idea de como hacerlo . He consultado el manual de QReport disponible en el sitio de Qusoft. Pero sólo te dicen para que sirve el QRStringsBand y nada más. En el foro, sólo hay un hilo donde se comentó la posibilidad de usarlo pero sin entrar en mayores detalles. ¿Alguien me podría dar más detalles? Hasta ahora llevo hecho esto: Código:
IBQdetalle->Close(); IBQdetalle->ParamByName("codPago")->AsInteger=codigoPago; IBQdetalle->Prepare(); IBQdetalle->Open(); DSdetalle->DataSet->First(); while(!DSdetalle->DataSet->Eof) { QRStringsBand1->Items->Add(DSdetalle->DataSet->FieldByName("NOMBRE")->AsString); DSdetalle->DataSet->Next(); } QuickRep1->PreviewModal(); Código:
void __fastcall TfrmResumenPago::QRLabel8Print(TObject *sender, AnsiString &Value) { Value = QRStringsBand1->Item; } Lo dicho, ¿alguien me podría dar más detalles sobre como usar las QRStringsBand? Nota 1: Como habrán notado programo en BuilderC++. Pero no tengo problemas en que me respondan con código de Delphi, ya que la idea me valdrá. Nota 2: No quise continuar las preguntas en el hilo anterior y espero con eso, no estar infringiendo la regla de no duplicar mensajes. Pero me parece que esto es un caso distinto, ya que éste hilo aborda un tema que no tiene nada que ver con el otro.
__________________
Saludos, Gabo A menos que se indique lo contrario, el código estará hecho en C++Builder. |
#2
|
||||
|
||||
Hola Gabo, no he manejado QrStringBand del quickreport, pero podrias tambien recorrer tu dataset utilizando el evento OnNeedData del quickReport.
En dicho evento debes colocar lo siguiente para recorrer tu dataset, el resultado se mostrara en un QRLabel, en este caso lo que estoy usando es una banda Detail ahi dentro el QRLabel.
y despues en tu evento BeforePrint del quickReport inicializas tu dataset con Query1.First; Tambien puedes usar el componente QrExpr para hacer la sumatoria, con la función de sum que tiene, solo tienes que indicarle sobre que campo quieres que haga ese sum. Espero te sirva.
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar. |
#3
|
||||
|
||||
Lo he traducido:
Código:
void __fastcall TfrmResumenPago::QuickRep1NeedData(TObject *Sender, bool &MoreData) { AnsiString cadena; MoreData=IBQdetalle->Eof; if (MoreData) { cadena= IBQdetalle->Fields->Fields[0]->AsString; //FieldByName("NOMBRE")->AsString; También lo he probado así QRLabel8->Caption=cadena; IBQdetalle->Next(); } } //--------------------------------------------------------------------------- void __fastcall TfrmResumenPago::QuickRep1BeforePrint( TCustomQuickRep *Sender, bool &PrintReport) { IBQdetalle->First(); } //--------------------------------------------------------------------------- Código:
QRLabel8->Caption="hola"; Seguiré intentándolo.
__________________
Saludos, Gabo A menos que se indique lo contrario, el código estará hecho en C++Builder. |
#4
|
||||
|
||||
Hola Gabo,
informarte de que el QReport incluye objetos de tipo expresión que realizan las sumas, medias, etc, sin que tengas que intervenir más que para definir que tipo de calculo quieres realizar. Para probar, ouedes incluir un TQRExpr de la paleta QReport en la banda que quieras, definir una expresión y ver qué ocurre. Si quieres ver los pagos a los empleados, listalos todos, incluye una banda de grupo y un objeto del que te he indicado. Te ahorra un montón de trabajo. El valor de expresion en la banda de grupo es el que indica cuando se imprime; puede ser un campo ( se imprime cada vez que cambai el valor de un campo)una expresión ,... Imagino que no tendrás demasiados problemas. Suerte y saludos
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino - |
#5
|
||||
|
||||
Pero, tengo entendido que sólo se puede usar el TQRExpr sólo se puede usar con Table y yo uso Query.
Lo he probado, por si acaso y no me coge los campos del IBQdetalle.
__________________
Saludos, Gabo A menos que se indique lo contrario, el código estará hecho en C++Builder. |
#6
|
||||
|
||||
Acabo de ver el tutorial de QuickReport de Qusoft y allí el ejemplo es con Table y trabajan con la propiedad IndexName que no está disponible en Query.
__________________
Saludos, Gabo A menos que se indique lo contrario, el código estará hecho en C++Builder. |
#7
|
||||
|
||||
Hola de nuevo Gabo, como te decia puedes usar el qrexpr del quickreport para hacer la suma, tambien funciona con query, solo que tu consulta ya tiene que estar hecha y su propiedad active tiene que estar en true en tiempo de diseño.
Colocas el componente qrexpr en tu banda, seleccionas su propiedad Expresion ahi te aparecera un Wizard, escojes function -> SUM -> continue, despues debes introducir el campo sobre el que se hara la suma, donde escojeras Database field, ahi te aparecera el query con sus respectivos campos, ahora escojeras sobre el campo que quieres hacer la sumatoria, despues aceptas todo lo que hiciste y listo. Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar. |
#8
|
||||
|
||||
Lo probaré.
Verás las veces que he intentado ocuparlo no me aparecen los campos de la Query, sólo las o las Querys disponibles. Cuando hacía clic en alguna de ellas no me aparecían los campos. Di por sentado que era porque no usaba el IBTable que sugerían en el manual. Voy a probarlo cambiando el Active del Query a True. ¡Gracias!
__________________
Saludos, Gabo A menos que se indique lo contrario, el código estará hecho en C++Builder. |
#9
|
||||
|
||||
¡Gracias Caro y fjcg02!
Ya pude ver por que no conseguía hacer las sumatorias... Al poner la propiedad Active del TQuery en True, comencé a ver los campos en el asistente del TQRExpr. Yo pensaba que era por no usar el control IBTable, pero ya veo que no. De nuevo, ¡muchas gracias!
__________________
Saludos, Gabo A menos que se indique lo contrario, el código estará hecho en C++Builder. |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
|