Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Mailing lists / lazarus-es / 2011-04

Formatos númericos en Lazreport

6 messages · 3 people · –

Reply by email Subscribe to this list Your subscription

Read-only archive. Use j and k to move between messages.

Ismael L. Donis García

Como podr�a formatear un campo num�rico para cuando tenga valor 0 me salga -, �sea un signo de menos.

Ejemplo:

Num Fecha Valor CUC Valor CUP
=== ======= ========= ========
1 1/4/2011 - 120.59 2 1/4/2011 10.85 -

Saludos a To2s
=========
|| ISMAEL ||
=========
------------ pr�xima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus-es/attachments/20110426/49212bda/attachment.html>

Reply by email

Paola Bruccoleri
to Ismael L. Donis García

El 26/04/2011 09:52 a.m., Ismael L. Donis Garc�a escribi�:

Show quoted text 8 lines
Como podr�a formatear un campo num�rico para cuando tenga valor 0 me salga -, �sea un signo de menos. Ejemplo: Num Fecha Valor CUC Valor CUP === ======= ========= ======== 1 1/4/2011 - 120.59 2 1/4/2011 10.85 -

Hola Ismael..
te puedes definir una funci�n propia, por ejemplo llamada FORMATO

en el reporte, pones donde va el valor, en vez de [qry."CAMPO"] esto:
[FORMATO([qry."CAMPO"])]

�d�nde la defines? en el evento OnUserFunction del componente frreport. Ac� te pego un ejemplo que uso (obtengo segundos de la consulta, que quiero mostrarlos con el formato d hh:mm:ss

procedure THorasOperario.rptInformeUserFunction(const AName: String; p1, p2,
   p3: Variant; var Val: Variant);
var
   Secs: integer;
begin
   if AName='SEG2TIME' then begin
     Secs := frParser.Calc(P1);
     Val :=  format('%dd ',[Secs div SecsPerDay]);
     Secs := Secs mod SecsPerDay;
     Val := Val + format('%.2d:', [Secs div 3600]);
     Secs := Secs mod 3600;
     Val := Val + format('%.2d:',[Secs div 60]);
     Secs := Secs mod 60;
     Val := Val + format('%.2d',[Secs]);
   end;
end;

Espero te sirva!
chauuuuuuu

------------ pr�xima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus-es/attachments/20110426/2e048389/attachment.html>

Reply by email

Ismael L. Donis García
to Paola Bruccoleri

Paola perfecto. Qued� como sigue:

procedure Tdm.rptUserFunction(const AName: String; p1, p2, p3: Variant;
  var Val: Variant);
var
  sdato: double;
begin
  sdato:=frParser.Calc(P1);
  if lowercase(AName) = 'noceros' then begin
    if sdato = 0 then
   Val:='-'
    else
      Val:=format('%n', [sdato]);
  end;
end;

***
Una pregunta: que hace la funci�n frParser.Calc

Saludos Cordiales
=========
|| ISMAEL ||
=========

Earlier message 57 lines
----- Original Message ----- From: Paola Bruccoleri To: Spanish version of Lazarus List Sent: Tuesday, April 26, 2011 10:07 AM Subject: Re: [Lazarus-es] Formatos n�mericos en Lazreport El 26/04/2011 09:52 a.m., Ismael L. Donis Garc�a escribi�: Como podr�a formatear un campo num�rico para cuando tenga valor 0 me salga -, �sea un signo de menos. Ejemplo: Num Fecha Valor CUC Valor CUP === ======= ========= ======== 1 1/4/2011 - 120.59 2 1/4/2011 10.85 - Hola Ismael.. te puedes definir una funci�n propia, por ejemplo llamada FORMATO en el reporte, pones donde va el valor, en vez de [qry."CAMPO"] esto: [FORMATO([qry."CAMPO"])] �d�nde la defines? en el evento OnUserFunction del componente frreport. Ac� te pego un ejemplo que uso (obtengo segundos de la consulta, que quiero mostrarlos con el formato d hh:mm:ss procedure THorasOperario.rptInformeUserFunction(const AName: String; p1, p2, p3: Variant; var Val: Variant); var Secs: integer; begin if AName='SEG2TIME' then begin Secs := frParser.Calc(P1); Val := format('%dd ',[Secs div SecsPerDay]); Secs := Secs mod SecsPerDay; Val := Val + format('%.2d:', [Secs div 3600]); Secs := Secs mod 3600; Val := Val + format('%.2d:',[Secs div 60]); Secs := Secs mod 60; Val := Val + format('%.2d',[Secs]); end; end; Espero te sirva! chauuuuuuu ------------------------------------------------------------------------------

Reply by email

Francisco Javier Solis Palma
to Ismael L. Donis García: Paola perfecto. Qued� como sigue: procedure Tdm.rptUserFunction(const AName: String;…

Disculpa la molestia mi nombre es Francisco, tengo un problema algo similar al tuyo, bueno tu ya lo resolviste, tengo la siguiente rutina:

procedure TModuloDatosFrm.frReport1UserFunction(const AName: String; p1, p2,
   p3: Variant; var Val: Variant);
var
   sdato: double;
   Entero: Double;
   Fraccion: Double;
begin
   If AName = 'FORMATO' Then
   Begin
     sdato:=frParser.Calc(P1);
     if sdato = 10 then
     Begin
        sdato := Int(sdato);
        Val:=Format('%n', [sdato]);
     End
     else
     Begin
       Entero := Int(sdato);
       Val:=format('%n', [Entero]);
       Fraccion := Frac(sdato);
       If Fraccion  0 Then
         Val := Val + Format('%d', [Fraccion])
       Else
         Val := Val + Format('%.1d', [Fraccion]);
     end;
   end;
end;

El punto es que si el valor es = "10", me debe de mostrar el "10" solo sin decimales, esa parte ya esta puesto que as� lo muestra el sistema, ahora si el valor es menor pero no tiene decimales por ejemplo "9", me debe de mostrar "9.0", el codigo lo realice como esta en el ejemplo, pero me da un error de

Paola perfecto. Qued� como sigue:

EConvertErrorConvertError con el mensaje invalid argument index format, me podr�as ayudar gracias

procedure Tdm.rptUserFunction(const AName: String; p1, p2, p3: Variant;
   var Val: Variant);
var
   sdato: double;
begin
   sdato:=frParser.Calc(P1);
   if lowercase(AName) = 'noceros' then begin
     if sdato = 0 then
    Val:='-'
     else
       Val:=format('%n', [sdato]);
   end;
end;

***
Una pregunta: que hace la funci�n frParser.Calc

Saludos Cordiales
=========
||/ ISMAEL ||
/=========

Earlier message 51 lines
----- Original Message ----- From: Paola Bruccoleri To: Spanish version of Lazarus List Sent: Tuesday, April 26, 2011 10:07 AM Subject: Re: [Lazarus-es] Formatos n�mericos en Lazreport El 26/04/2011 09:52 a.m., Ismael L. Donis Garc�a escribi�: Como podr�a formatear un campo num�rico para cuando tenga valor 0 me salga -, �sea un signo de menos. Ejemplo: Num Fecha Valor CUC Valor CUP === ======= ========= ======== 1 1/4/2011 - 120.59 2 1/4/2011 10.85 - Hola Ismael.. te puedes definir una funci�n propia, por ejemplo llamada FORMATO en el reporte, pones donde va el valor, en vez de [qry."CAMPO"] esto: [FORMATO([qry."CAMPO"])] �d�nde la defines? en el evento OnUserFunction del componente frreport. Ac� te pego un ejemplo que uso (obtengo segundos de la consulta, que quiero mostrarlos con el formato d hh:mm:ss procedure THorasOperario.rptInformeUserFunction(const AName: String; p1, p2, p3: Variant; var Val: Variant); var Secs: integer; begin if AName='SEG2TIME' then begin Secs := frParser.Calc(P1); Val := format('%dd ',[Secs div SecsPerDay]); Secs := Secs mod SecsPerDay; Val := Val + format('%.2d:', [Secs div 3600]); Secs := Secs mod 3600; Val := Val + format('%.2d:',[Secs div 60]); Secs := Secs mod 60; Val := Val + format('%.2d',[Secs]); end; end; ------------ pr�xima parte ------------ Se ha borrado un adjunto en formato HTML... URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus-es/attachments/20110704/ec659b47/attachment.html>

Reply by email

Paola Bruccoleri
to Francisco Javier Solis Palma

El 04/07/2011 03:23 p.m., Francisco Javier Solis Palma escribi�:

Show quoted text 30 lines
Disculpa la molestia mi nombre es Francisco, tengo un problema algo similar al tuyo, bueno tu ya lo resolviste, tengo la siguiente rutina: procedure TModuloDatosFrm.frReport1UserFunction(const AName: String; p1, p2, p3: Variant; var Val: Variant); var sdato: double; Entero: Double; Fraccion: Double; begin If AName = 'FORMATO' Then Begin sdato:=frParser.Calc(P1); if sdato = 10 then Begin sdato := Int(sdato); Val:=Format('%n', [sdato]); End else Begin Entero := Int(sdato); Val:=format('%n', [Entero]); Fraccion := Frac(sdato); If Fraccion 0 Then Val := Val + Format('%d', [Fraccion]) Else Val := Val + Format('%.1d', [Fraccion]); end; end; end;

Hola..
yo probar�a de hacer esto:

       Entero := Int(sdato);
       Val:=format('%n', [Entero]);
       Fraccion := Frac(sdato);
       If Fraccion  0 Then
         Val := Format('%.1d', [sdato])
       Else
         Val := Format('%d', [sdato]);

------------ pr�xima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus-es/attachments/20110704/fec89e5b/attachment.html>

Reply by email