Ir al contenido


Foto

[RESUELTO] Datos parciales.


  • Por favor identifícate para responder
10 respuestas en este tema

#1 Caral

Caral

    Advanced Member

  • Moderador
  • PipPipPip
  • 4.266 mensajes
  • LocationCosta Rica

Escrito 21 julio 2010 - 07:05

Hola
Estoy trabajando mucho......
                                      Imagen Enviada
Estoy tratando de hacer una consulta que me regrese la suma de los totales de las piezas que fabrico, pero esta consulta la ejecuto en un reporte.
La consulta funciona, pero no me da los datos parciales, solo los totales.
Esta es:


sql
  1. SELECT DISTINCT OrdenProdItem.CodParte,
  2. Articulos.Descripcion|| ' ' ||Categoria|| ' ' ||SubCategoria AS Descr, SerieMaterial.CodMaterial,
  3. Materiales.Descripcion, Materiales.Unidad, SUM(SerieMaterial.Cantidad) AS Cantidad,
  4. MAX(Materiales.Costo) AS Costo, MAX(SerieMaterial.CostoALaFecha) AS CostoALaFecha,
  5. (SELECT COUNT(*) FROM OrdenProdItem)
  6. FROM Articulos RIGHT JOIN (OrdenProdItem INNER JOIN (Materiales RIGHT JOIN SerieMaterial
  7. ON Materiales.CodMaterial = SerieMaterial.CodMaterial) ON OrdenProdItem.NumSerie = SerieMaterial.NumSerie)
  8. ON Articulos.CodParte = OrdenProdItem.CodParte
  9. WHERE OrdenProdItem.FinProd >= :f1 AND OrdenProdItem.FinProd <= :f2 +1
  10. GROUP BY OrdenProdItem.CodParte
  11. Articulos.Descripcion|| &#39;&#39; &#39;&#39; ||Categoria|| &#39;&#39; &#39;&#39; ||SubCategoria, SerieMaterial.CodMaterial,
  12. Materiales.Descripcion, Materiales.Unidad


Si teneis alguna idea os lo agradezco.
A mi no se me enciende.....Imagen Enviada
Saludos
  • 0

#2 Caral

Caral

    Advanced Member

  • Moderador
  • PipPipPip
  • 4.266 mensajes
  • LocationCosta Rica

Escrito 21 julio 2010 - 08:00

Hola
Ampliando esto:
Asi llamo al qreport, dividiendo la consulta, osea separando el where y el group by:


delphi
  1. try
  2.         QRProduccionTerminadasPiezas:=TQRProduccionTerminadasPiezas.Create(self);
  3.         QRProduccionTerminadasPiezas.ADOQuery1.SQL.Add(' WHERE OrdenProdItem.FinProd >= :f1 AND OrdenProdItem.FinProd <= :f2 +1');
  4.         QRProduccionTerminadasPiezas.ADOQuery1.SQL.Add(' GROUP BY OrdenProdItem.CodParte, '+
  5.         ' Articulos.Descripcion|| '' '' ||Categoria|| '' '' ||SubCategoria, SerieMaterial.CodMaterial, '+
  6.         ' Materiales.Descripcion, Materiales.Unidad ');
  7.         QRProduccionTerminadasPiezas.ADOQuery1.Params[0].Value:= DateToStr(DTP1.Date);
  8.         QRProduccionTerminadasPiezas.ADOQuery1.Params[1].Value:= DateToStr(DTP2.Date);
  9.  
  10.         QRProduccionTerminadasPiezas.ADOQuery1.Open;
  11.         QRProduccionTerminadasPiezas.QRLblDesde.Caption := DateToStr(DTP1.Date);
  12.         QRProduccionTerminadasPiezas.QRLblHasta.Caption := DateToStr(DTP2.Date);
  13.         If RadioGroup1.ItemIndex = 0 then QRProduccionTerminadasPiezas.Print
  14.         else QRProduccionTerminadasPiezas.Preview;
  15.       finally
  16.         QRProduccionTerminadasPiezas.Free;
  17.       end; //t


Saludos
  • 0

#3 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 21 julio 2010 - 08:02

No entiendo amigo, puedes poner un ejemplo de como sale y como quieres que salga ?

Salud OS
  • 0

#4 Caral

Caral

    Advanced Member

  • Moderador
  • PipPipPip
  • 4.266 mensajes
  • LocationCosta Rica

Escrito 21 julio 2010 - 08:21

Hola
Mira como va esto:
El reporte genera los datos de las piezas que he fabricado, lo que hace es sumar los datos de acuerdo al tipo de pieza mostrando los materiales y las cantidades de estos.
Este es el actual; genera la cantidad de piezas total, en este caso 22.
Imagen Enviada

El asunto es que como es un reporte en el que suma las cantidades contrae todo.
Lo que busco es la suma parcial de las piezas por modelo.
Imagen Enviada
Espero veas la diferencia. (y)
Saludos

  • 0

#5 Marc

Marc

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1.484 mensajes
  • LocationMallorca

Escrito 22 julio 2010 - 02:20

Hola.

Puedes poner una banda de agrupación, de forma que el sumatorio en el pie de agrupación solo te afectará al grupo correspondiente.

Así es como lo hacemos en Fast-Reports.

Saludos.
  • 0

#6 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4.483 mensajes
  • LocationVenezuela

Escrito 22 julio 2010 - 07:16

en QR es igual a como te lo comenta Marc, eso que quieres hacer es directamente con QR no con Firebird.

Deberias tener un

GROUPBAND
  DetailBAnd
FooterGroup
SummaryBand

en GroupBand: Las Cabeceras
en DetailBand: Los detalles del producto
en FooterGroup: Las expresiones(qrExpr) con los parciales(estas deben tener la propiedad ResetAfterPrint en true)
en SummeryBand: Las expresiones(qrExpr) con los totales.

  • 0

#7 Caral

Caral

    Advanced Member

  • Moderador
  • PipPipPip
  • 4.266 mensajes
  • LocationCosta Rica

Escrito 22 julio 2010 - 06:27

Hola
Asi es como lo tengo pero no me salen los datos parciales.
Gracias amigos por vuestros consejos.
Saludos
  • 0

#8 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4.483 mensajes
  • LocationVenezuela

Escrito 23 julio 2010 - 06:18

y relacionastes el groupband con el footerband en su propiedad footer???
  • 0

#9 Caral

Caral

    Advanced Member

  • Moderador
  • PipPipPip
  • 4.266 mensajes
  • LocationCosta Rica

Escrito 23 julio 2010 - 07:28

Hola
Si amigo, el reporte funciona, el problema es sacar ese dato parcial.
No camina.
Saludos
  • 0

#10 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 23 julio 2010 - 08:06

y cual es la funcion que estas usando en QReport para mostrar el valor que quieres y no lo hace ?

Salud OS
  • 0

#11 Caral

Caral

    Advanced Member

  • Moderador
  • PipPipPip
  • 4.266 mensajes
  • LocationCosta Rica

Escrito 29 julio 2010 - 05:25

Hola
Hoy he terminado de resolver este problema, os cuento.
Queria que me salieran los datos parciales, pero, el problema era que dependia del dato que suministraba el query que esta en el reporte, osea, como sacar ese dato si cuando lo captura lo muestra inmediatamente?.
Bien, lo solucione, después de romperme la cabeza, usando el evento AfterScroll del query.
Ahi es donde hago el codigo (en un query independiente) para que me muestre el dato.
Osea, el reporte ahora tiene dos query y en el unit del reporte coloco el codigo que en realidad es sencillo.


delphi
  1. procedure TQRProduccionTerminadasPiezas.ADOQuery1AfterScroll(
  2.   DataSet: TDataSet);
  3. begin
  4.   AQTemp.Close;
  5.   AQTemp.SQL.Text:= 'select count(*) from OrdenProdItem Where OrdenProdItem.CodParte = :cod'+
  6.           ' and OrdenProdItem.FinProd >= :f1 AND OrdenProdItem.FinProd <= :f2 +1';
  7.   AQTemp.Params[0].Value:= ADOQuery1CODPARTE.AsString;
  8.   AQTemp.Open;
  9. end;


El codigo de la pieza lo saca del adoquery1 y las fechas las saca del form que lo llama.

Bueno:
Caso resulto y lo doy por terminado, gracias a todos por vuestros consejos. (y)
Saludos

  • 0




IP.Board spam blocked by CleanTalk.