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 17-08-2023
Eduard23 Eduard23 is offline
Miembro
 
Registrado: mar 2023
Posts: 32
Poder: 0
Eduard23 Va por buen camino
FastReport, imprimir solo cuando cumpla una condición

Hola amigos nuevamente necesito de su valiosa ayuda esta vez estoy haciendo un reporte Contable (FastReport ) y necesito Acumular un valor y luego imprimirlo solo cuando se cumpla una condicion no necesito se imprima en cada registro .
Adjunto les envio una imagen
de Antemano Muchisimas Gracias

Saludos
Imágenes Adjuntas
Tipo de Archivo: pdf Balanceg.pdf (75,3 KB, 16 visitas)
Responder Con Cita
  #2  
Antiguo 17-08-2023
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.264
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
En el "BeforePrint" le pones la condición.
Responder Con Cita
  #3  
Antiguo 17-08-2023
Avatar de pgranados
pgranados pgranados is offline
Miembro
 
Registrado: sep 2022
Ubicación: México
Posts: 299
Poder: 3
pgranados Va por buen camino
Hola. ¿puedes compartirnos que versión de FastReport tienes? Pasa que la versión gratuita por ejemplo no tiene la sección de código y eventos, por lo que la sugerencia de Casimiro no te funcionaria.

Ahora, también puedes hacerlo mediante código desde Delphi, por ejemplo: yo imprimo recibos de nomina (México) y existen dos tipos de nomina: ordinaria y extraordinaria, por lo que requiero ocultar las bandas del tipo de nomina que no estén. Entonces yo lo hago de esta forma:

Código Delphi [-]
var 
Report: TfrxReport;
RutaPDF, RutaModelo: string; // archivo FR3
pdfExport: TfrxPDFExport;
masterdata: TFrxMasterData;

Report := TfrxReport.Create(nil);
try
  Report.LoadFromFile(RutaModelo);
  // nomina ordinaria
  if (DModuloEmpresa.FDQueryNPR.IsEmpty) and (DModuloEmpresa.FDQueryNDR.IsEmpty) and (DModuloEmpresa.FDQueryNOPR.IsEmpty) then
  begin
    masterdata:= Report.FindObject('o') as TfrxMasterData;
    Masterdata.Visible:= false;
  end;
  // extraordinaria
  if (DModuloEmpresa.FDQueryNPR_E.IsEmpty) and (DModuloEmpresa.FDQueryNDR_E.IsEmpty) and (DModuloEmpresa.FDQueryNOPR_E.IsEmpty) then
  begin
    masterdata:= Report.FindObject('e') as TfrxMasterData;
    Masterdata.Visible:= false;
  end;

   // Preparo el Reporte
   Report.PrepareReport();


   // Crear un objeto de exportación a PDF
    PDFExport := TfrxPDFExport.Create(nil);
    try
      // Configurar las opciones de exportación
      Report.ShowProgress:= false;
      Report.PrintOptions.ShowDialog:= false;
      PDFExport.FileName := RutaPDF;
      PDFExport.ShowProgress:= False;
      PDFExport.ShowDialog := False;
      PDFExport.OverwritePrompt := False;
      // Exportar el informe a PDF
      Report.Export(PDFExport);
    finally
      FreeAndNil(PDFExport);
    end;
   // RutaPDF es la ruta del archivo PDF que voy a crear, este dato yo se lo paso porque en mi codigo,la generación
   // del PDF es una función.
    Result:= FileExists(RutaPDF);


finally
  FreeAndNil(Report);
end;

Saludos.

Última edición por Casimiro Notevi fecha: 18-08-2023 a las 10:46:41.
Responder Con Cita
  #4  
Antiguo 17-08-2023
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.264
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por pgranados Ver Mensaje
Pasa que la versión gratuita por ejemplo no tiene la sección de código y eventos
¿Cuál es la versión gratuita?
Responder Con Cita
  #5  
Antiguo 17-08-2023
Avatar de pgranados
pgranados pgranados is offline
Miembro
 
Registrado: sep 2022
Ubicación: México
Posts: 299
Poder: 3
pgranados Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
¿Cuál es la versión gratuita?
La que viene con Delphi 11 CE



Y la que puedes obtener en GetIt en Delphi 10.4



Yo probé fastReport así y me encanto, así que ya adquirí mi licencia

Última edición por Casimiro Notevi fecha: 17-08-2023 a las 22:41:21.
Responder Con Cita
  #6  
Antiguo 17-08-2023
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.264
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Pero esa versión creo que no es gratuita, sino que es la versión "trial" que se puede descargar en su web.
Imagino que tendrá algunas limitaciones.
Responder Con Cita
  #7  
Antiguo 17-08-2023
Avatar de pgranados
pgranados pgranados is offline
Miembro
 
Registrado: sep 2022
Ubicación: México
Posts: 299
Poder: 3
pgranados Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Pero esa versión creo que no es gratuita, sino que es la versión "trial" que se puede descargar en su web.
Imagino que tendrá algunas limitaciones.
Yo lo use como 1 mes y fracción en Delphi 10.4 y no hubo problemas, eso si: viene bastante limitado a diferencia de la estándar (esta es la que tengo yo).

En Delphi 11 CE me vino instalada por default, pero igual: limitada a lo básico.

¿Cómo que diferencias por ejemplo?
En mi caso, en los recibos de nomina necesito imprimir un QR y la versión que viene gratuita no tiene el componente, además de no incluir la sección de data y code, entonces para poder construir el QR debía de insertar una imagen, crear el qr de forma local con alguna librería externa y luego cargarla en el archivo .fr3

Algo que con un evento y una linea de código se resuelve en la versión standar o superior.
Responder Con Cita
  #8  
Antiguo 17-08-2023
Avatar de pgranados
pgranados pgranados is offline
Miembro
 
Registrado: sep 2022
Ubicación: México
Posts: 299
Poder: 3
pgranados Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Pero esa versión creo que no es gratuita, sino que es la versión "trial" que se puede descargar en su web.
Imagino que tendrá algunas limitaciones.
Casimiro un favorcito, es que ya no me deja, en el mensaje donde pude el código me falto declarar en variables

Código Delphi [-]
 var masterdata: TFrxMasterData;

porfas
Responder Con Cita
  #9  
Antiguo 18-08-2023
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.264
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por pgranados Ver Mensaje
... faltó declarar en variables
var masterdata: TFrxMasterData;
Responder Con Cita
  #10  
Antiguo 18-08-2023
manelb manelb is offline
Miembro
 
Registrado: mar 2017
Posts: 297
Poder: 8
manelb Va por buen camino
Cita:
Empezado por Eduard23 Ver Mensaje
Hola amigos nuevamente necesito de su valiosa ayuda esta vez estoy haciendo un reporte Contable (FastReport ) y necesito Acumular un valor y luego imprimirlo solo cuando se cumpla una condicion no necesito se imprima en cada registro .
Adjunto les envio una imagen
de Antemano Muchisimas Gracias

Saludos
Y en el propio objeto de texto(TfrxMemoView), no puedes evaluar la condición?

Esto lo tengo yo en un listado, dentro de un TfrxMemoView:

Código:
[IIF(<_datos."HORAS_FUNCIONAMIENTO">=0,'Km:','Horas:')]
Saludos
Responder Con Cita
  #11  
Antiguo 19-08-2023
Eduard23 Eduard23 is offline
Miembro
 
Registrado: mar 2023
Posts: 32
Poder: 0
Eduard23 Va por buen camino
hola amigos gracias por sus repuestas pero estoy muy nuevo en esto podrian por favor ayudarme un poco mas con la impresion en el evento (No se como hacerlo) uso la version 6.9.3.
creo es lo mas sencillo.
Responder Con Cita
  #12  
Antiguo 19-08-2023
Eduard23 Eduard23 is offline
Miembro
 
Registrado: mar 2023
Posts: 32
Poder: 0
Eduard23 Va por buen camino
hola manelb si lo intente la diferencia es que necesito imprimir una variable algo asi:

[IIF(<_datos."HORAS_FUNCIONAMIENTO">=0,[Saldo],no hacer salto de linea)]
Responder Con Cita
  #13  
Antiguo 19-08-2023
manelb manelb is offline
Miembro
 
Registrado: mar 2017
Posts: 297
Poder: 8
manelb Va por buen camino
Pues lo que te comentaba supongo que estará en todas las versiones de FastReport.

Yo vengo de QuickReport, pero he hecho algunas cosillas muy simples con FastReport por ir probando.

En QuickReport tenemos un control, QRExpr, que es un evaluador de expresiones.
En FastResport, veo que la misma funcionalidad la ofrece el objeto Text Object de la paleta de controles, que al situarlo sobre el formulario se convierte en un TFrxMemoView.

Una vez tienes la caja de texto sobre el formulario, con dos clicks se abre y tienes la posibilidad de añadir expresiones (fíjate en los iconos de la parte superior izquierda: Insert Expression).
Desde aquí vas a poder añadir datos de tus tablas, variables de sistema, utilizar funciones, etc.

Si visualizas algún tutorial básico por internet te resultará mucho más sencillo que con mis explicaciones.

Saludos y suerte
Responder Con Cita
  #14  
Antiguo 19-08-2023
manelb manelb is offline
Miembro
 
Registrado: mar 2017
Posts: 297
Poder: 8
manelb Va por buen camino
Cita:
Empezado por Eduard23 Ver Mensaje
hola manelb si lo intente la diferencia es que necesito imprimir una variable algo asi:

[IIF(<_datos."HORAS_FUNCIONAMIENTO">=0,[Saldo],no hacer salto de linea)]
En la paleta hay una propiedad, AllowHTMTags, que permite colocar comandos html básicos en el texto.
De esta forma puedes gestionar negritas, saltos de línea, y alguna que otra floritura en los textos, no demasiadas.

Perdona Eduard23, pero parece que fastreport no permite usar el salto de línea en los comandos html
Según la ayuda, estos son los permitidos:
<b> : bold text
<i> : italic text
<u> : underlined text
<sub> : subscript
<sup> : superscript
<font color> : font color
<nowrap> : text which is not split when "WordWrap" is enabled, the whole text is shifted to the next line

Última edición por manelb fecha: 19-08-2023 a las 19:36:05.
Responder Con Cita
  #15  
Antiguo 19-08-2023
Eduard23 Eduard23 is offline
Miembro
 
Registrado: mar 2023
Posts: 32
Poder: 0
Eduard23 Va por buen camino
Es decir si se cumple esta condicion debo imprimir la variable SALDO en caso contrario no imprimo nada y no salto la linea
[IIF(<_datos."HORAS_FUNCIONAMIENTO">=0,[Saldo],no imprimir nada ni Saltar Linea )]

Gracias
Responder Con Cita
  #16  
Antiguo 19-08-2023
Eduard23 Eduard23 is offline
Miembro
 
Registrado: mar 2023
Posts: 32
Poder: 0
Eduard23 Va por buen camino
Perfecto pero como seria para imprimir la variable solo cuando cumpla la condicion [IIF(<_datos."HORAS_FUNCIONAMIENTO">=0,[Saldo],'')]
lo pongo asi y arroja error

Saludos
Responder Con Cita
  #17  
Antiguo 19-08-2023
manelb manelb is offline
Miembro
 
Registrado: mar 2017
Posts: 297
Poder: 8
manelb Va por buen camino
Ten en cuenta que debes componer la expresión estrictamente con los datos de tus tablas.
En el caso de que tuvieras una tabla con el nombre "_Datos" y que dos de sus campos fueran "HORAS_FUNCIONAMIENTO" y "Saldo", la expresión quedaría así:

Código:
[IIF(<_datos."HORAS_FUNCIONAMIENTO">=0,<_datos."Saldo">,0)]
Pero lo hago de memoria

Si quieres, me mandas por privado un mensaje, te paso mi teléfono y te echo una mano.
Creo que no estamos lejos

Saludos
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
Fastreport con 2 Pages: Imprimir una Page sólo en la primera copia afxe Impresión 4 29-01-2016 19:17:37
Encontrar primer registro que cumpla condición mike_1979 SQL 10 27-08-2008 23:03:06
sumatoria de una tabla mientras se cumpla una condicion douglas Conexión con bases de datos 28 29-10-2007 23:40:57
Salir del for select cuando se cumpla una condición Ivanzinho Firebird e Interbase 8 30-11-2005 22:47:48
FastReport+No imprimir una linea (Condicion) IVAND Impresión 1 10-04-2004 19:04:32


La franja horaria es GMT +2. Ahora son las 19:56:06.


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