Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 15-10-2024
pruz pruz is offline
Miembro
 
Registrado: sep 2003
Posts: 225
Poder: 23
pruz Va por buen camino
Error al Actualizar Decimales

Hola amigos:

Su pesadilla otra vez

Tengo el siguiente problema, estoy trabajando con Mysql 5.1 y Delphi Tokio.

Tengo un valor con decimales, pero solo cuando actualizo me da el siguiente error (ver imagen)

Código Delphi [-]
      Valor := SacaMiles(edt_uf.Text);
      ModuloDatos.QTablas.SQL.Clear;
      ModuloDatos.QTablas.SQL.Add(' Update remaux ');
      ModuloDatos.QTablas.SQL.Add(' set valor  = ''' + FloatToStr(Valor) + '''');
      ModuloDatos.QTablas.SQL.Add(' Where Raiz =  ''' + copy(edt_cuf.Text,1,1) + '''');
      ModuloDatos.QTablas.SQL.Add(' and Codigo = ''' + Trim(copy(edt_cuf.Text,3,3)) + '''');
      ModuloDatos.QTablas.Execute;

Ya revise el campo en la tablas Mysql y es de Double(15,4)


Estoy usando la siguiente funcion para validar el punto o coma, como separador de miles o decimales.


Código Delphi [-]
Function SacaMiles( cValor : String ): Extended ;
var
  cRetorno, smiles, sdecimal : String ;
  n        : word ;
begin
  smiles   := SysUtils.FormatSettings.ThousandSeparator ;
  sdecimal := SysUtils.FormatSettings.DecimalSeparator ;

  cRetorno := '';
  For n := 1 To Length( cValor ) do begin
     If (cValor[ n ] <> '.')  then
               cRetorno :=  cRetorno + cValor[ n ] ;
  end;
  If cRetorno = '' then cRetorno := '0' ;
  Result := StrToFloat( cRetorno ) ;

end ;
Imágenes Adjuntas
Tipo de Archivo: png Error_GrabaDecimales.png (18,5 KB, 23 visitas)
Responder Con Cita
  #2  
Antiguo 15-10-2024
aledieb aledieb is offline
Miembro
 
Registrado: jun 2005
Ubicación: Buenos Aires, Argentina
Posts: 147
Poder: 21
aledieb Va por buen camino
Hola, proba con:

Código Delphi [-]
      Valor := SacaMiles(edt_uf.Text);
      ModuloDatos.QTablas.SQL.Clear;
      ModuloDatos.QTablas.SQL.Add(' Update remaux ');
      ModuloDatos.QTablas.SQL.Add(' set valor  = :valor');
      ModuloDatos.QTablas.SQL.Add(' Where Raiz =  ''' + copy(edt_cuf.Text,1,1) + '''');
      ModuloDatos.QTablas.SQL.Add(' and Codigo = ''' + Trim(copy(edt_cuf.Text,3,3)) + '''');
      ModuloDatos.QTablas.parambyname('valor').value:=valor;
      ModuloDatos.QTablas.Execute;

Editado, entendí mal y estas grabando un valor como texto. No convendría modificar la tabla y grabar un valor numérico?
__________________
Suerte
Alejandro

Última edición por aledieb fecha: 15-10-2024 a las 23:11:45.
Responder Con Cita
  #3  
Antiguo 16-10-2024
navbuoy navbuoy is offline
Miembro
 
Registrado: mar 2024
Posts: 360
Poder: 3
navbuoy Va por buen camino
si utilizas FloatToStr() lo conviertes a cadena de texto, quizas deberias usar la funcion FormatFloat()

La función FormatFloat en Delphi se utiliza para dar formato a un número de punto flotante (float) de acuerdo con una cadena de formato especificada.

Sintaxis:
Código:
function FormatFloat(const Format: string; Value: Extended): string;
Format: Especifica cómo debe formatearse el número, utilizando ciertos caracteres especiales.
Value: Es el número que deseas formatear.

Ejemplo:

Código:
var
  formattedValue: string;
  number: Double;
begin
  number := 12345.6789;
  formattedValue := FormatFloat('#,##0.00', number);
  ShowMessage(formattedValue);  // Resultado: "12,345.68"
end;
Caracteres comunes para el formato:
0: Se usa para forzar la aparición de ceros en posiciones vacías.
#: Representa un dígito opcional. No se muestra si no hay dígito en esa posición.
.: Se utiliza como separador decimal.
,: Se utiliza como separador de miles.
Responder Con Cita
  #4  
Antiguo 16-10-2024
navbuoy navbuoy is offline
Miembro
 
Registrado: mar 2024
Posts: 360
Poder: 3
navbuoy Va por buen camino
Formato simple:

Código:
FormatFloat('0.00', 123.456);  // "123.46"
Separador de Miles:

Código:
FormatFloat('#,##0.00', 12345.678);  // "12,345.68"
Formato con signos positivos - negativos

Código:
FormatFloat('+0.00;-0.00', -123.45);  // "-123.45"
La función es muy útil para presentar valores numéricos con un formato específico, como cuando deseas mostrar cantidades con separadores de miles, números decimales fijos, o en un estilo contable.
Responder Con Cita
  #5  
Antiguo 16-10-2024
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.669
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Es mejor y más seguro usar parámetros, tal y como ha explicado aledieb

Y de todas formas, a simple vista me parece que esto está mal:
Código Delphi [-]
ModuloDatos.QTablas.SQL.Add(' set valor  = ''' + FloatToStr(Valor) + '''');
Porque al hacer floatostr ya te devuelve el valor entre comillas (un string), y tú estás añadiendo más comillas.
Responder Con Cita
  #6  
Antiguo 16-10-2024
pruz pruz is offline
Miembro
 
Registrado: sep 2003
Posts: 225
Poder: 23
pruz Va por buen camino
Lo primero que voy hacer es aplicar la sugerencia de Casimiro y si no resulta ire escalando en las soluciones propuestas

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
Error con numeros y decimales river_1 OOP 5 24-04-2013 20:53:56
Error en decimales RebeccaGL MySQL 1 23-07-2011 20:13:06
Error texto y decimales al exportar a excel. movorack Varios 9 07-02-2008 19:18:12
error sql al actualizar alberto grande SQL 2 21-11-2007 22:17:28
Error al actualizar sanz Conexión con bases de datos 3 12-04-2006 17:57:41


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


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