Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-01-2010
elarys elarys is offline
Miembro
 
Registrado: abr 2007
Posts: 94
Poder: 11
elarys Va por buen camino
Datos repetidos con FastReport

Necesito hacer un reporte con 3 paginas
Estas son las tablas que tengo

Código SQL [-]
DailyStatements
Number  PrintDate   TotDuty  TotTax
170925  09/15/2009  1154.55    0.00

Shipment_ABI
Number  Importer  Broker  EstDuty  EstTax
170925  58-23945  176178   533.85    0.00
170925  58-23945  176178   620.70    0.00

ABI_STMT_MSG
Number  ENTRY   SOURCE
170925  11111   ABI

Shipment_ABIFees
Number  Shipment  FeeCode  Amount
170925  10120     499      25.00
170925  20254     501      13.86
170925  20247     499      25.00
170925  20178     501      11.92

Codes
Code  Description
499   Merchandise
501   Harbor Fee


Tengo echa esta consulta
Código SQL [-]
SELECT SUM(FeeAmount) Total, C.Description, D.Number, D.PrintDate, D.TotDuty,
D.TotTax, S.Importer, S.Broker, S.EstDuty, S.EstiTax, M.Entry, M.Source
FROM DailyStatements D
LEFT JOIN Shipment_ABI S ON (D.Number = S.Number)
LEFT JOIN ABI_STMT_MSG M ON (D.Number = M.Number)
LEFT JOIN Shipment_ABIFees F ON (D.Number = F.Number)
LEFT JOIN BASICO.dbo.Codes C ON (C.Code=F.FeeCode)
WHERE D.Number ='170925'
GROUP BY F.FeeCode, C.Description,
D.Number, D.PrintDate, D.TotDuty, D.TotTax,
S.Importer, S.Broker, S.EstDuty, S.EstiTax,
M.Entry, M.Source
ORDER BY Number

Esto me devuelve
Código SQL [-]
Total  Description  Number  PrintDate   TotDuty  TotTax  Importer  Broker  EstDuty  EstTax  Entry  Source
50.00  Merchandise  170925  09/15/2009  1154.55    0.00  58-23945  176178   533.85    0.00  11111  ABI
50.00  Merchandise  170925  09/15/2009  1154.55    0.00  58-23945  176178   620.70    0.00  11111  ABI
25.78  Harbor Fee   170925  09/15/2009  1154.55    0.00  58-23945  176178   533.85    0.00  11111  ABI
25.78  Harbor Fee   170925  09/15/2009  1154.55    0.00  58-23945  176178   620.70    0.00  11111  ABI

Bueno quiero saber que estoy haciendo mal o que me falta para que los datos no se repitan en el informe.
Aunque si se repiten en la consulta porque esta devuelve el producto cartesiano

Este seria el informe que me muestra en este momento

Código SQL [-]
PAGE: 1

STATEMENT: 170925
PRINT DATE: 09/15/2009     
                                                                                            
BROKER  EST. DUTY  EST. TAX
176178     533.85      0.00
176178     620.70      0.00
176178     533.85      0.00
176178     620.70      0.00

------------------------------

PAGE: 2

STATEMENT: 170925
PRINT DATE: 09/15/2009 

Totals
Total Duty   1,154.55
Total Taxes      0.00
Merchandise     50.00
Merchandise     50.00
Harbor Fee      25.78
Harbor Fee      25.78

------------------------------

PAGE: 3

STATEMENT: 170925
PRINT DATE: 09/15/2009 

ENTRY   SOURCE
11111   ABI
11111   ABI
11111   ABI
11111   ABI

Se repite los datos en detalle...

Tendria que mostrar asi
Código SQL [-]
PAGE: 1

STATEMENT: 170925
PRINT DATE: 09/15/2009     
                                                                                            
BROKER  EST. DUTY  EST. TAX
176178     533.85      0.00
176178     620.70      0.00

------------------------------

PAGE: 2

STATEMENT: 170925
PRINT DATE: 09/15/2009 

Totals
Total Duty   1,154.55
Total Taxes      0.00
Merchandise     50.00
Harbor Fee      25.78

------------------------------

PAGE: 3

STATEMENT: 170925
PRINT DATE: 09/15/2009 

ENTRY   SOURCE
11111   ABI

Repito por las dudas que el reporte esta en FastReport
Bueno y seguramente le estoy errando en algo o me esta faltando algo

El reporte tiene la cabecera que se repite en las 3 paginas
Con un GroupHeader con el DataSet filtrando por Number

El detalle apuntando al DataSet = DS
Mas o menos asi

Código SQL [-]
PAGE: 1

GroupHeader        DS."Number"

STATEMENT: DS."Number"
PRINT DATE: DS."PrintDate"
                               
En detalle
MasterData         DS
Broker        EST. DUTY      EST. TAX
DS."Broker"   DS."EstDuty"   S."EstTax"

Igual para la pagina2 y pagina3 pero cambia lo que va dentro del masterdata
------------------------------

PAGE: 2

STATEMENT: DS."Number"
PRINT DATE: DS."PrintDate"

Totals
Total Duty    DS."TotDuty"
Total Taxes   DS."TotTax"

MasterData         DS
DS."Description"   DS."Total"

------------------------------

PAGE: 3

STATEMENT: DS."Number"
PRINT DATE: DS."PrintDate"

Entry        Source
DS."Entry"   DS."Source"

Espero que me puedan dar una idea si estoy mal en mi consulta o en FastReport, creo que el 2do es donde fallo
Noten que el reporte tiene 3 paginas en donde se repite la cabecera y lo que va cambiando es el detalle

Page 1
Cabecera igual
Detalle Page1

Page 2
Cabecera igual
Detalle Page2

Page 3
Cabecera igual
Detalle Page3

Lo de mostrar los reportes con [ SQL ] [ / SQL ] es porque no sabia como mostrar los ejemplos
si tengo algun error en los datos, es porque resumi de lo que tengo hecho, seria muy engorroso ya que muestro 10 veces mas datos

Última edición por elarys fecha: 18-01-2010 a las 22:20:43.
Responder Con Cita
  #2  
Antiguo 14-01-2010
elarys elarys is offline
Miembro
 
Registrado: abr 2007
Posts: 94
Poder: 11
elarys Va por buen camino
Se me ocurre hacer una consulta por pagina a mostrar como si fueran reportes diferentes

Código SQL [-]
SELECT D.Number, D.PrintDate, D.TotDuty, D.TotTax, S.Importer, S.Broker, S.EstDuty, S.EstiTax,
FROM DailyStatements D
LEFT JOIN Shipment_ABI S ON (D.Number = S.Number)
WHERE D.Number ='170925'
ORDER BY Number

Código SQL [-]
SELECT SUM(FeeAmount) Total, C.Description, D.Number, D.PrintDate, D.TotDuty, D.TotTax
FROM DailyStatements D
LEFT JOIN Shipment_ABIFees F ON (D.Number = F.Number)
LEFT JOIN BASICO.dbo.Codes C ON (C.Code=F.FeeCode)
WHERE D.Number ='170925'
GROUP BY F.FeeCode, C.Description, D.Number, D.PrintDate, D.TotDuty, D.TotTax,
ORDER BY Number

Código SQL [-]
SELECT D.Number, D.PrintDate, D.TotDuty, D.TotTax, M.Entry, M.Source
FROM DailyStatements D
LEFT JOIN ABI_STMT_MSG M ON (D.Number = M.Number)
WHERE D.Number ='170925'
ORDER BY Number

Esto funciona bien pero al cambiarle el WHERE y pasarle muchos registros
Me esta mostrando
Page 1
1º registro
2º registro
etc

Page 2
1º registro
2º registro
etc

Page 3
1º registro
2º registro
etc


Y tengo que mostrar el reporte asi:
1º registro
Page 1
Page 2
Page 3

2º registro
Page 1
Page 2
Page 3

y asi n registros, nadie me da una mano

Última edición por elarys fecha: 15-01-2010 a las 18:47:35.
Responder Con Cita
  #3  
Antiguo 15-01-2010
elarys elarys is offline
Miembro
 
Registrado: abr 2007
Posts: 94
Poder: 11
elarys Va por buen camino
Mi funcion para mostrar el reporte
Suprimido el reporte tiene 10 veces mas datos, solo muestro pocos datos aca, asi se entiende


Código Delphi [-]
procedure PrintDailyStatement(number:string;filter:string);
var
  sql:string;
  MyReport:TfrxReport;
  RptFr3:string;
  QryAux1:TADOQuery;
  DsrAux1:TDataSource;
  QryAux2:TADOQuery;
  DsrAux2:TDataSource;
  QryAux3:TADOQuery;
  DsrAux3:TDataSource;
begin
  QryAux1:=tadoquery.Create(nil);
  DsrAux1:=TDataSource.Create(nil);
  QryAux2:=tadoquery.Create(nil);
  DsrAux2:=TDataSource.Create(nil);
  QryAux3:=tadoquery.Create(nil);
  DsrAux3:=TDataSource.Create(nil);

  sql:= ' SELECT D.Number, D.PrintDate, D.TotDuty, D.TotTax,'+
        ' S.Importer, S.Broker, S.EstDuty, S.EstiTax'+
        ' FROM DailyStatements D'+
        ' LEFT JOIN Shipment_ABI S ON (D.Number = S.Number)'+
        ' WHERE D.Number <> '+QuotedStr('');

  if filter = '' then
    sql:= sql +
        ' AND D.Number='+QuotedStr(number)+
        ' ORDER BY D.Number'
  else
    sql:= sql + filter + ' ORDER BY D.Number';

  dressqueries(QryAux1,sql,Datafiles.dbBROKERAGE);
  DsrAux1.DataSet:=QryAux1;
  Datafiles.frxDBDataset1.DataSource := DsrAux1;

  sql:= ' SELECT SUM(FeeAmount) Total, C.Description,'+
        ' D.Number, D.PrintDate, D.TotDuty, D.TotTax'+
        ' FROM DailyStatements D'+
        ' LEFT JOIN Shipment_ABIFees F ON (D.Number = F.Number)'+
        ' LEFT JOIN BASICO.dbo.Codes C ON (C.Code=F.FeeCode)'+
        ' WHERE D.Number <> '+QuotedStr('');

  if filter = '' then
    sql:= sql +
        ' AND D.Number='+QuotedStr(number)+
        ' GROUP BY F.FeeCode, C.Description,'+
        ' D.Number, D.PrintDate, D.TotDuty, D.TotTax'+
        ' ORDER BY D.Number'
  else
    sql:= sql + filter +
        ' GROUP BY F.FeeCode, C.Description,'+
        ' D.Number, D.PrintDate, D.TotDuty, D.TotTax'+
        ' ORDER BY D.StatementNumber';

  dressqueries(QryAux2,sql,Datafiles.dbBROKERAGE);
  DsrAux2.DataSet:=QryAux2;
  Datafiles.frxDBDataset2.DataSource := DsrAux2;

  sql:= ' SELECT'+
        ' D.Number, D.PrintDate, D.TotDuty, D.TotTax,'+
        ' M.Entry, M.Source'+
        ' FROM DailyStatements D'+
        ' LEFT JOIN ABI_STMT_MSG M ON (D.Number = M.Number)'+
        ' WHERE M.Entry <> '+QuotedStr('');

  if filter = '' then
    sql:= sql +
        ' AND D.Number='+QuotedStr(number)+
        ' ORDER BY D.Number'
  else
    sql:= sql + filter + ' ORDER BY D.Number';

  dressqueries(QryAux3,sql,Datafiles.dbBROKERAGE);
  DsrAux3.DataSet:=QryAux3;
  Datafiles.frxDBDataset3.DataSource := DsrAux3;

  RptFr3 := Datafiles.StrPath+Datafiles.dbbasico.DLLCommon_Path + 'reports\DailyStatement.fr3';

  MyReport := Datafiles.Report;
  MyReport.LoadFromFile(RptFr3);
  MyReport.PreviewOptions.Modal := true;
  MyReport.PreviewOptions.AllowEdit := false;
  MyReport.PreviewOptions.OutlineVisible := false;
  MyReport.PrintOptions.ShowDialog := false;
  MyReport.ReportOptions.Compressed := true;

  frmPreviewer := TfrmPreviewer.Create(nil);
  frmPreviewer.form_name:='Daily Statement';
  MyReport.PrepareReport;
  MyReport.Preview := frmPreviewer.Preview;
  frmPreviewer.ShowModal;
end;

Me lei la ayuda de Fast Report 4 y solo tiene explicado un informe con Group Header y un Master Data al estilo de una factura.

Última edición por elarys fecha: 15-01-2010 a las 21:52:51.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Datos repetidos en un master/detail de rave report mcalmanovici Impresión 1 14-01-2010 17:10:37
Datos no se muestran de Grid ftavarez Tablas planas 3 27-06-2007 04:10:53
TRxDBLookupCombo. Problema de desplazamiento en datos repetidos. Jose_Pérez OOP 0 07-02-2006 15:49:32
datos repetidos en tabla marceloalegre SQL 3 03-08-2005 21:37:47
Datos repetidos... SQL... emeceuy Conexión con bases de datos 6 18-08-2003 16:10:41


La franja horaria es GMT +2. Ahora son las 15:11:13.


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