Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 18-09-2008
metroyd metroyd is offline
Miembro
 
Registrado: oct 2007
Posts: 78
Poder: 17
metroyd Va por buen camino
Números a letras

Hola,espero puedan ayudarme. Estoy haciendo un reporte de cantidades. Al final en la banda Summary tengo los totales, los cuales calculo mediante un QRExpression. Pero me interesa tambien tener estos totales en LETRA. No se como hacer esto. Espero puedan ayudarme. No se como acceder al resultado del QRExpr.

NOTA: He bajado el ATexto, pero no se como usarlo. Tambien habrá cantidades con punto decimal (dos decimales)

Gracias

Última edición por metroyd fecha: 18-09-2008 a las 19:37:14.
Responder Con Cita
  #2  
Antiguo 18-09-2008
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Pones el componente en el form.
Pon esta funcion:
Código Delphi [-]
function Deletrear(numero: real) : string; var
  letras: TLetras;
begin
  letras := TLetras.Create(nil);
  try
    letras.Numero := numero;
    Result := letras.AsString;
  finally
    letras.Free;
  end;
end;
Luego indicas de donde sacas el dato y donde lo quieres pones.
Código Delphi [-]
var
 n: String;
begin
  n:= Deletrear(StrToFloat(QRExpression1.Text) );
  QRlabel1.Text:= (n);

A ver como va la cosa.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #3  
Antiguo 18-09-2008
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
http://www.clubdelphi.com/trucos/ind...ll=0&scrollb=0

revisa hasta el final
__________________

Responder Con Cita
  #4  
Antiguo 18-09-2008
metroyd metroyd is offline
Miembro
 
Registrado: oct 2007
Posts: 78
Poder: 17
metroyd Va por buen camino
Error:

ME MARCA EL SIGUIENTE ERROR:

Project sistema.exe raised exception Class EConverter error with message "" is not a valid floating point value.

Mi codigo es:

Código Delphi [-]
procedure TForm18.BitBtn1Click(Sender: TObject);
   // AQUI METI LA FUNCION QUE ME DIJISTE
   function Deletrear(numero: real) : string; var
     letras: TLetras;
   begin
     letras := TLetras.Create(nil);
     try
       letras.Numero := numero;
       Result := letras.AsString;
     finally
       letras.Free;
   end;
   end;
 // FIN DE LA FUNCION
var
  npages:integer;
  n:string;
begin
IF DE.Date > A.Date THEN BEGIN
         Application.MessageBox('ERROR EN LAS FECHAS','SISTEMA MULTAS',MB_ICONERROR);
     END
     ELSE BEGIN
         Form17:= TForm17.Create(Application);

        datamodule4.buscar.close;
        datamodule4.buscar.SQL.Clear;
        datamodule4.buscar.SQL.Add('SELECT multas.folio,agentes.clave_agente, agentes.nombre, agentes.rfc, multas.importe_agente, sum(multas.importe_agente) AS total_agente,'
        +'sum(multas.importe_agente) * 2 AS total_cien FROM agentes,multas,'
        +'detalle_multa_age WHERE multas.fecha_pago >= "'+QuotedStr(FormatDateTime('yyyy-mm-dd',de.date))+'" AND multas.fecha_pago <= "'+QuotedStr(FormatDateTime('yyyy-mm-dd',a.date))+'"'
        +' AND detalle_multa_age.nombre = agentes.nombre and detalle_multa_age.folio = multas.folio group by clave_agente');
        datamodule4.buscar.Open;

        form17.qrlabel4.Caption:=FormatDateTime('d mmm yyyy',DE.DATE);
        form17.qrlabel5.Caption:=FormatDateTime('d mmm yyyy',A.DATE);


        form17.QuickRep1.DataSet:=datamodule4.buscar;
        form17.QRDBText1.DataSet:=datamodule4.buscar;
        form17.QRDBText2.DataSet:=datamodule4.buscar;
        form17.QRDBText3.DataSet:=datamodule4.buscar;
        form17.QRDBText4.DataSet:=datamodule4.buscar;
        form17.QRDBText5.DataSet:=datamodule4.buscar;

        form17.QRDBText1.DataField:='clave_agente';
        form17.QRDBText2.DataField:='nombre';
        form17.QRDBText3.DataField:='rfc';
        form17.QRDBText4.DataField:='total_agente';
        form17.QRDBText5.DataField:='total_cien';
      
  // AQUI VIENE EL PROCESO QUE QUIERO HACER
        form17.QRExpr2.Expression:='SUM(total_cien)';
        form17.QRExpr3.Expression:='SUM(total_agente)';

    // ACCEDER AL RESULTADO DEL QREXPRE2:
         N:= Deletrear(StrToFloat(form17.QRExpr2.Value.strResult));
        form17.QRLabel22.Caption:=N;

        form17.QuickRep1.Prepare;

        nPages:=form17.QuickRep1.QRPrinter.PageCount;
        form17.QRLabel6.Caption:=FormatDateTime('d mmmm yyyy',DATE);
        form17.QRLabel20.Caption:=inttostr(npages);
        form17.QuickRep1.PreviewModal;
         form17.Close;

     END;

end;
Responder Con Cita
  #5  
Antiguo 18-09-2008
metroyd metroyd is offline
Miembro
 
Registrado: oct 2007
Posts: 78
Poder: 17
metroyd Va por buen camino
Cita:
Empezado por ContraVeneno Ver Mensaje
Esta funcion (la ultima) que parametros le envio?? La puedo incluir en cualquier form???
Responder Con Cita
  #6  
Antiguo 18-09-2008
metroyd metroyd is offline
Miembro
 
Registrado: oct 2007
Posts: 78
Poder: 17
metroyd Va por buen camino
Probé esto:
Código Delphi [-]
form17.qrlabel22.caption:= form17.QRExpr2.Value.strResult

Y el resultado son caracteres extraños. O sea, el problema viene desde como asignar el resultado de un QRExpr a una variable o label.
Responder Con Cita
  #7  
Antiguo 18-09-2008
metroyd metroyd is offline
Miembro
 
Registrado: oct 2007
Posts: 78
Poder: 17
metroyd Va por buen camino
Ya pude resolver el problema

Gracias a los que me ayudaron.
El problema lo resolvi mediante el evento OnPrint del QRExpression:

Código Delphi [-]
procedure TForm17.QRExpr2Print(sender: TObject; var Value: String);

// AQUI METI LA FUNCION QUE ME DIJISTE
   function Deletrear(numero: real) : string; var
     letras: TLetras;
   begin
     letras := TLetras.Create(nil);
     try
       letras.Numero := numero;
       Result := letras.AsString;
     finally
       letras.Free;
   end;
   end;
 // FIN DE LA FUNCION

 var
    n:string;
begin
   form17.qrlabel37.Caption:=FOrmatfloat('#,##0.00',strtofloat(value));
   n:= Deletrear(StrToFloat(Value));
   form17.QRLabel39.Caption:=uppercase('( '+n+' PESOS 00/100 M.N.)');
   value:=form17.QRLabel37.Caption;

end;
Responder Con Cita
  #8  
Antiguo 18-09-2008
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
Cita:
Empezado por metroyd Ver Mensaje
Esta funcion (la ultima) que parametros le envio?? La puedo incluir en cualquier form???
La puedes incluir en cualquier formulario, le envías un valor tipo moneda y te regresa un texto
__________________

Responder Con Cita
  #9  
Antiguo 25-05-2012
benjineo benjineo is offline
Miembro
NULL
 
Registrado: may 2012
Posts: 12
Poder: 0
benjineo Va por buen camino
a mi me sale el mismo error, pero solo con cantidades como de 3450.00 pero con las pequenias si funciona bien(250.00)!!!....ya le movi al onprint y nada!..alguein sugiere algo?
Responder Con Cita
  #10  
Antiguo 25-05-2012
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Si el dato es obtenido de un campo se necesita ponerlo en el evento before del componente table o query que se use.
NO el evento del reporte, el del query o table, segun sea el caso ya que necesita obtener el dato primero.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #11  
Antiguo 25-05-2012
benjineo benjineo is offline
Miembro
NULL
 
Registrado: may 2012
Posts: 12
Poder: 0
benjineo Va por buen camino
de hecho me guie en el procedimiento de @metroyd, el dato lo estoy sacando de un QRExpr, lo paso a un QRLabel y despues ese QRlabel lo convierto, y me funciona bien para cantidades pequenias, pero ya a cantidades como de 3540 me arroja el error!
Responder Con Cita
  #12  
Antiguo 25-05-2012
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Podrias usar un qrlabel.Caption:=Formatfloat('#,##0.00',strtofloat(value));
Asi le das formato ya que el ATexto funciona con numeros y sacas el dato de un caption.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #13  
Antiguo 25-05-2012
benjineo benjineo is offline
Miembro
NULL
 
Registrado: may 2012
Posts: 12
Poder: 0
benjineo Va por buen camino
Se supone que asi lo hagio, Este es mi codigo:


procedure TVenta.QRExpr2Print(sender: TObject; var Value: String);

function Deletrear(numero: real) : string; var
letras: TLetras;
begin
letras := TLetras.Create(nil);
try
letras.Numero := Trunc(numero);
Result := Format('%s CON %d/100 .-', [Letras.AsString, Trunc(100*Frac(Numero))]); *no se si el error me de por esta seccion?!
finally
letras.Free;
end;
end;

var
n:string;
begin
Ventas.qrlabel38.Caption:=FOrmatfloat('#,##0.00',strtofloat(value));
n:= Deletrear(StrToFloat(Value));
form17.QRLabel39.Caption:=uppercase('( '+n+')');
value:=Ventas.QRLabel38.Caption;

end;
Responder Con Cita
  #14  
Antiguo 29-05-2012
benjineo benjineo is offline
Miembro
NULL
 
Registrado: may 2012
Posts: 12
Poder: 0
benjineo Va por buen camino
pues ya lo modifique y nada, me sigue dando el error cuando la cantidad es de 1000.00 para arriba solo me escribe bien cuando llega hasta 999.99...alguna sugerencia?
Responder Con Cita
  #15  
Antiguo 31-05-2012
benjineo benjineo is offline
Miembro
NULL
 
Registrado: may 2012
Posts: 12
Poder: 0
benjineo Va por buen camino
Números a letras

hola que tal a todos, tengo un problemilla, uso este codigo:

function Deletrear(numero: real) : string; var
letras: TLetras;
begin
letras := TLetras.Create(nil);
try
letras.Numero := Trunc(numero);
Result := Format('%s CON %d/100 .-', [Letras.AsString, Trunc(100*Frac(Numero))]); *no se si el error me de por esta seccion?!
finally
letras.Free;
end;
end;

var
n:string;
begin
Ventas.qrlabel38.Caption:=FOrmatfloat('#,##0.00',strtofloat(value));
n:= Deletrear(StrToFloat(Value));
form17.QRLabel39.Caption:=uppercase('( '+n+')');
value:=Ventas.QRLabel38.Caption;

end;

me funciona bien, pero solo para numeros hasta el 999.99, cuando pasa a 1000 me pone el siguiente error: "raised exception Class EConverter error with message "1000.23" is not a valid floating point value....

ya modifique en el on print, en el before print, y nada...alguna recomendacion?!!
Responder Con Cita
  #16  
Antiguo 31-05-2012
benjineo benjineo is offline
Miembro
NULL
 
Registrado: may 2012
Posts: 12
Poder: 0
benjineo Va por buen camino
#25
Hace 1 Minuto
benjineo
Registrado

Registrado: may 2012
Posts: 5

hola que tal a todos, tengo un problemilla, uso este codigo:

Código Delphi [-]
function Deletrear(numero: real) : string; var
letras: TLetras;
begin
letras := TLetras.Create(nil);
try
letras.Numero := Trunc(numero);
Result := Format('%s CON %d/100 .-', [Letras.AsString, Trunc(100*Frac(Numero))]); *no se si el error me de por esta seccion?!
finally
letras.Free;
end;
end;

var
n:string;
begin
Ventas.qrlabel38.Caption:=FOrmatfloat('#,##0.00',strtofloat(value));
n:= Deletrear(StrToFloat(Value));
form17.QRLabel39.Caption:=uppercase('( '+n+')');
value:=Ventas.QRLabel38.Caption;

end;

me funciona bien, pero solo para numeros hasta el 999.99, cuando pasa a 1000 me pone el siguiente error: "raised exception Class EConverter error with message "1000.23" is not a valid floating point value....

ya modifique en el on print, en el before print, y nada...alguna recomendacion?!!

Última edición por Casimiro Notevi fecha: 01-06-2012 a las 16:47:20.
Responder Con Cita
  #17  
Antiguo 31-05-2012
benjineo benjineo is offline
Miembro
NULL
 
Registrado: may 2012
Posts: 12
Poder: 0
benjineo Va por buen camino
lo que no eh intentado y voy hacer es lo dela configuracion regional!
Responder Con Cita
  #18  
Antiguo 31-05-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Hola benjineo, creo que necesitas volver a leer nuestra guía de estilo, gracias por tu colaboración

Y recuerda poner los tags al código fuente, ejemplo:



Gracias

Resumiendo, pregunta nueva en hilo nuevo.
Este es de hace 4 años y creo que no das ninguna solución al tema tratado, sino que tienes una duda similar, en todo caso.
Saludos.
Responder Con Cita
  #19  
Antiguo 31-05-2012
benjineo benjineo is offline
Miembro
NULL
 
Registrado: may 2012
Posts: 12
Poder: 0
benjineo Va por buen camino
error de Punto Flotante

una diculpa, tengo una duda similar, uso este codigo:

Código Delphi [-]
function Deletrear(numero: real) : string; var
letras: TLetras;
begin
letras := TLetras.Create(nil);
try
letras.Numero := Trunc(numero);
Result := Format('%s CON %d/100 .-', [Letras.AsString, Trunc(100*Frac(Numero))]); *no se si el error me de por esta seccion?!
finally
letras.Free;
end;
end;

var
n:string;
begin
Ventas.qrlabel38.Caption:=FOrmatfloat('#,##0.00',strtofloat(value));
n:= Deletrear(StrToFloat(Value));
form17.QRLabel39.Caption:=uppercase('( '+n+')');
value:=Ventas.QRLabel38.Caption;

end;

me funciona bien, pero solo para numeros hasta el 999.99, cuando pasa a 1000 me pone el siguiente error: "raised exception Class EConverter error with message "1000.23" is not a valid floating point value....

ya modifique en el on print, en el before print, y nada...alguna recomendacion?!!
Responder Con Cita
  #20  
Antiguo 31-05-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Bien, pero crear un hilo nuevo no es contestar a un hilo existente, tu pregunta no es una respuesta a este hilo en el que estamos.
Debes crear un hilo nuevo. Por ejemplo, en el mismo foro "Varios", botón "crear nuevo hilo", pones un título descriptivo y explicas lo que has puesto aquí.
Son equivocaciones normales en los "novatos" que llegan a clubdelphi, tenlo en cuenta para la siguiente pregunta que quieras hacer, gracias.

Tu error es simple: raised exception Class EConverter error with message "1000.23" is not a valid floating point value....

El problema es que estás usando las comas y los puntos al revés, o lo cambias en tu código o lo cambias en la "configuración regional" de windows. Allí debes decirle que usas las comas para separar millares y los puntos para los decimales... o viceversa.
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
Convertir números en letras c748a Varios 14 10-04-2015 20:52:18
Numeros a letras citlalliDgp Varios 6 19-03-2009 07:14:54
Numeros y letras Caral Varios 11 28-03-2008 18:22:53
Numeros En Letras Cañones Impresión 2 11-06-2007 23:55:12
Numeros a Letras!! jmedina Varios 26 20-10-2005 20:19:42


La franja horaria es GMT +2. Ahora son las 08:34:11.


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