Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Impresión
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 22-03-2013
steelha steelha is offline
Miembro
 
Registrado: mar 2012
Posts: 158
Poder: 13
steelha Va por buen camino
Ordenar y/o Agrupar por uno o 2 campos

Hola estoy utilizando fast report debido a que estoy teniendo problema con los programas cuando utilizo crystal report. Deseo que un reporte el cual logre hacer en fast report se orderne por un campo y se agrupe por 2 o viceversa (En crystal no me tomo mas de 10 min realizarlo). Ademas necesito totalizar en un campo 2 valores por cada registro.

Utilizando delphi 7, fast report 4.9.32.

Campo importantes mes, tipotra, itbis(iva), valorfactura

Aca dejo el codigo para que vean y me ayuden, ya que utilize el wizard de fastreport pero aun asi no logro me ordene o agrupe bien.

Código Delphi [-]
procedure Tfrmgenerar606.AdvGlassButton4Click(Sender: TObject);
var
  ruta : string;
  ano, mes, dia  : Word;
  anop : Integer;
begin
  anop := 0;
  ruta := ExtractFilePath(Application.ExeName)+'\';
  DecodeDate(Date,ano,mes,dia);
  repeat until  TryStrToInt(InputBox('AÑO DEL PERIODO', 'PERIODO',''),anop);
  with dm.sql606 do
  begin
    Close;
    SQL.Clear;
    SQL.Text := 'SELECT [606].TIPOTRA, [606].MES, [606].PERIODO, [606].ANO, [606].RNC, [606].TIPODOC, [606].NCF, [606].NCFMODIFICA, [606].FECHACOMPRA, [606].FECHAPAGO, [606].ITBIS, [606].ITBISRET, [606].MONTOFACT, [606].RETENCION10PORC'+
                ' FROM 606'+
                ' GROUP BY [606].TIPOTRA, [606].MES, [606].PERIODO, [606].ANO, [606].RNC, [606].TIPODOC, [606].NCF, [606].NCFMODIFICA, [606].FECHACOMPRA, [606].FECHAPAGO, [606].ITBIS, [606].ITBISRET, [606].MONTOFACT, [606].RETENCION10PORC'+
                ' HAVING ((([606].ANO)='+IntToStr(anop)+'))'+
                ' ORDER BY [606].TIPOTRA, [606].MES;';

    Open;

    if dm.sql606.RecordCount < 1 then
      begin
        ShowMessage('No existen datos para este registro');
        Exit;
      end
    else
    begin
      {Crystal report
      rptInforme.DiscardSavedData;
      rptInforme.ReportName := ruta+'Reporte606Acumulado.rpt';
      dm.sql606.SQL.Text := 'SELECT * FROM [606] '+ ' WHERE ano = ' + IntToStr(anop);
      dm.sql606.Open;
      rptInforme.Tables[0].DataPointer := @(dm.sql606.Recordset);
      rptInforme.Execute;      }

      //Fastreport
       frxReport1.LoadFromFile(ruta+'Listado606.fr3');
       frxReport1.PrepareReport;
      If frxReport1.PrepareReport Then
         frxReport1.ShowPreparedReport;
    end;
  end;
end;

Favor ayuden con cualquier conocimiento, ya que no encuentro mucho sobre fastreport, gracais de antemano.
Responder Con Cita
  #2  
Antiguo 25-03-2013
Avatar de Young
Young Young is offline
Miembro
 
Registrado: abr 2006
Ubicación: San Felipe, Chile
Posts: 86
Poder: 19
Young Va por buen camino
Amigo espero poder ayudarte un poco, te cuento como haría yo ese ejercicio:

1. Quitaría la clausula group by ya que fast-report posee unas bandas para agrupar.
2. La cláusula order by tiene que ser en el mismo orden que vas a agrupar (eso es obvio). Puedes ir anidando grupos.
3. En tu reporte tira una banda "cabecera de grupo" y seleccionas el campo por el que quieres esa agrupación (o una expresión). Ya aquí puedes poner un label asociado al campo de grupo para que lo pruebes.
4. Colocas un banda de datos maestros y arrastras los campos que necesitas.

Ya con esto verás que fast-report se encarga de agrupar los datos, también puedes colocar un pié de grupo en donde puedes totalizar los campos que quieras.

Puede que los nombres que dí cambien un poco ya que lo estoy haciendo de memoria.

Saludos.
Responder Con Cita
  #3  
Antiguo 26-03-2013
steelha steelha is offline
Miembro
 
Registrado: mar 2012
Posts: 158
Poder: 13
steelha Va por buen camino
Muchas gracias Young, no sabia que era tan facil, pero otra preguntita es como puedo dar un total en la misma linea es decir la suma de dos o mas campo por registro
Responder Con Cita
  #4  
Antiguo 26-03-2013
Avatar de Young
Young Young is offline
Miembro
 
Registrado: abr 2006
Ubicación: San Felipe, Chile
Posts: 86
Poder: 19
Young Va por buen camino
Cita:
Empezado por steelha Ver Mensaje
Muchas gracias Young, no sabia que era tan facil, pero otra preguntita es como puedo dar un total en la misma linea es decir la suma de dos o mas campo por registro
Bueno yo trabajo con IBX y con campos persistentes por lo tanto eso lo haría con campos calculados en el query. Pero por tu forma de trabajar deberías lograrlo con el mismo fast-report arrastrando un label a la banda de datos he insertando los campos y sumandolos. El resultado algo asi:

Código Delphi [-]
[datos.campo1] + [datos.campo2] + etc...

Saludos.
Responder Con Cita
  #5  
Antiguo 26-03-2013
steelha steelha is offline
Miembro
 
Registrado: mar 2012
Posts: 158
Poder: 13
steelha Va por buen camino
Muchas Gracias
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
agrupar por campos y ordenar diegohugogalleg SQL 7 05-01-2012 16:23:50
Agrupar un listado por 2 campos josito Impresión 3 12-01-2009 08:03:53
Agrupar ordenados u Ordenar agrupados salvica SQL 10 17-01-2008 11:31:52
Agrupar campos en ClientDataSet y recorrer el resultado David Conexión con bases de datos 3 20-06-2007 11:13:11
agrupar varios campos satabel Impresión 0 03-08-2005 18:17:17


La franja horaria es GMT +2. Ahora son las 01:39:01.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi