PDA

Ver la Versión Completa : Generar reporte en QReport para obtener totales


Obdulia Pérez
03-03-2004, 18:55:58
Saludos a todos
Necesito generar un reporte en QReport para obtener los total de uniformes que debo comprar dependiendo de la medida de la ropa y zapatos de cada trabajador estoy trabajando en Delphi5 con una base de datos Standar .dbf
mi reporte lo quiero generar con QReport y los campos que utiliza son los siguientes:
Tipo caracter: Depto, Dias,Tipo_Bota,Cant_Botas,Cant_Panta, Cant_Camis,Cant_Over,Cantchama,Jabones,Toallas.
Tipo Numerico: Medida,Pantalon,Camisa,Manga,Overol,Chamarra

Realizo un calculo que da como resultado el total de uniformes que le correspode a cada trabajador dependiendo de los dias trabajados en el año.
Uniforme contempla: Camisa,Pantalon,Botas,Chamarras,Overoles,jabones,Toallas,
Yo necesito captar los datos que se generan al hacer ese calculo y plasmarlo en un reporte que me indique el total de uniformes que debo comprar dependiendo de la medida de camisa, pantalon, cuantos pares de botas de tal medida, cuantos overoles, cuantas chamarras segun la medida y un gran total de cada juego.
Nota: tengo pendiente overoles porque muy probable no se entreguen

anexo un ejemplo del calculo:
procedure TFdatos.CalcularClick(Sender: TObject);
Var datos: Integer;
const I= 0.143;

begin
//no es necesario abrir la BD ya esta activa al momento de llamar a esta forma
fdatos.table1.First;
While Not fdatos.table1.EOF do
Begin
datos := StrtoInt(DBEdit1.Text);
fdatos.Table1.Edit;
fdatos.Table1.FieldByName('jabones').Value :=StrtoInt(DBEdit1.Text);
If (datos<>0) then
Begin

fdatos.Table1.Edit;
fdatos.Table1.FieldByName('jabones').Value := (datos * I);
fdatos.Table1.Post;
End
Else
If (datos >365) then
showMessage('checa el numero ');
{ fdatos.Table1.Next;
End; // while
end; //procedimiento


end. }

datos := StrtoInt(DBEdit1.Text);
fdatos.Table1.Edit;
fdatos.Table1.FieldByName('cantchama').Value :=StrtoInt(DBEdit1.Text);
If (datos<=180) then
Begin
fdatos.Table1.Edit;
fdatos.Table1.FieldByName('cantchama').Value := '0';
fdatos.Table1.Post
End
Else
If (datos>=181) then
Begin
fdatos.Table1.Edit;
fdatos.Table1.FieldByName('cantchama').Value := '1';
fdatos.Table1.Post
End
else
If (datos >365) then
showMessage('checa el numero ');


datos := StrtoInt(DBEdit1.Text);
fdatos.Table1.Edit;
fdatos.Table1.FieldByName('cant_camis').Value :=StrtoInt(DBEdit1.Text);
fdatos.Table1.FieldByName('cant_panta').Value :=StrtoInt(DBEdit1.Text);
If (datos<=30) then
Begin
fdatos.Table1.Edit;
fdatos.Table1.FieldByName('cant_camis').Value := '0';
fdatos.Table1.FieldByName('cant_panta').Value := '0';
fdatos.Table1.Post;
End
Else
If (datos<=59) then
Begin
fdatos.Table1.Edit;
fdatos.Table1.FieldByName('cant_camis').Value := '1';
fdatos.Table1.FieldByName('cant_panta').Value := '1';
fdatos.Table1.Post
End
Else
If (datos<=183) then
Begin
fdatos.Table1.Edit;
fdatos.Table1.FieldByName('cant_camis').Value := '2';
fdatos.Table1.FieldByName('cant_panta').Value := '2';
fdatos.Table1.Post
End
Else
If (datos<=300) then
Begin
fdatos.Table1.Edit;
fdatos.Table1.FieldByName('cant_camis').Value := '3';
fdatos.Table1.FieldByName('cant_panta').Value := '3';
fdatos.Table1.Post
End
else
If (datos>=365) then
Begin
fdatos.Table1.Edit;
fdatos.Table1.FieldByName('cant_camis').Value := '5';
fdatos.Table1.FieldByName('cant_panta').Value := '5';
fdatos.Table1.Post
End
Else
If (datos >365) then

datos := StrtoInt(DBEdit1.Text);
fdatos.Table1.Edit;
fdatos.Table1.FieldByName('toallas').Value :=StrtoInt(DBEdit1.Text);
If (datos<=121) then
Begin
fdatos.Table1.Edit;
fdatos.Table1.FieldByName('toallas').Value := '0';
fdatos.Table1.Post
End
Else
If (datos>=122)and (datos<=242) then
Begin
fdatos.Table1.Edit;
fdatos.Table1.FieldByName('toallas').Value := '1';
fdatos.Table1.Post
End
Else
If (datos>=243) and (datos<365) then
Begin
fdatos.Table1.Edit;
fdatos.Table1.FieldByName('toallas').Value := '2';
fdatos.Table1.Post
End
else
If (datos=365) then
Begin
fdatos.Table1.Edit;
fdatos.Table1.FieldByName('toallas').Value := '3';
fdatos.Table1.Post
End
Else
If (datos >365) then
showMessage('checa el numero ');
fdatos.Table1.Next;
End; // while
end; //procedimiento


end.

Para ti Moderador agradezco tus comentarios y pido disculpas por ser tan poco observadora decidí hacer un nuevo hilo pero no supe donde ubicarlo si me equivoco que es lo más seguro, te pido lo acomodes en el lugar que corresponde gracias...

__cadetill
03-03-2004, 18:59:37
Yo no soy moderador de Impresión, pero lo que sí te pediría es que editaras tu mensaje y utilizaras la etiqueta [ code ] ..... [ /code ] sin los espacios, para poner el codigo, ya que tantas lineas se hacen practicamente imposibles de seguir

gracias

andres1569
03-03-2004, 19:52:25
Hola:

Obdulia, aparte de lo que indica Cadetill para que se pueda leer mejor el código, ¿podrías indicar dónde tienes el problema o la duda, es decir, dónde falla?

Así, a bote pronto, parece que funciona, aunque no lo he probado :), lo que quiero decirte es que para poder ayudarte sería necesario que nos dijeras qué es lo que falla, o si te salta un mensaje de error, o si da un resultado que no es el que esperas ... para poder entrarle a ese código.

Un saludo

Obdulia Pérez
03-03-2004, 21:34:33
No tengo problemas con el codigo que anexe considere necesario ponerlo porque los valores que arroja ese codigo es lo que yo necesito sumar y obtener los totales de lo que debo mandar comprar has de cuenta:

Dias Tipo_Bota Medida Cant_Bota Pantalon Cant_Panta Camisa Cant_camis
365 sc 9.5 2 32 4 16 4
200 cc 8 1 38 2 18.5 2
100 sc 8 1 32 1 18.5 1

sc = sin casquillo
cs = con casquilloTotales

Bota con Casquillo Talla cantidad
8 1

Bota sin Casquillo 8 1
9.5 2

Pantalon 32 5
38 2

Camisas 16 4
18.5 3

y asi sucesivamente tengo 700 empleados y no todos trabajan los 365 dias en el año por lo que no les corresponde la misma cantidad de uniformes.....
no se si me di a entender espero sus comentarios gracias.

andres1569
04-03-2004, 17:53:52
Me cuesta entenderte, la verdad, quizás no sea tanto una cuestión del informe sino del método que usas para averiguar el número de uniformes que corresponden a cada empleado. ¿Lo haces mediante una consulta SQL? Si es que Sí, ¿qué consulta aplicas?

un saludo