Utilizamos cookies propias y de terceros. [Más información sobre las cookies].
Política de cookies
Proyecto AjpdSoft

· Inicio
· Buscar
· Contactar
· Cookies
· Descargas
· Foros
· Historia
· Nosotros
· Temas
· Top 10
· Trucos
· Tutoriales
· Wiki
Proyecto AjpdSoft: Foros

AjpdSoft :: Ver tema - Error is not a valid floating point value delphi mysql zeos
Foros de discusión Buscar Perfil FAQ Iniciar sesión
Information Error is not a valid floating point value delphi mysql zeos

Publicar nuevo tema Responder al tema
Foros de discusión » Borland Delphi, Codegear Delphi .Net   
Ver tema anterior :: Ver tema siguiente
AutorMensaje
varios
Magnífico usuario


Registrado: Oct 10, 2006
Mensajes: 2092

Asunto: Error is not a valid floating point value delphi mysql zeos Responder citando

Error al ejecutar consulta SQL con Delphi, ZeosDBO y MySQL 5.1:

---------------------------
Debugger Exception Notification
---------------------------
Project facturacion.exe raised exception class EConvertError with message ''' is not a valid floating point value'. Process stopped. Use Step or Run to continue.
---------------------------
OK Help
---------------------------


Utilizo Borland Delphi 6, el componente gratuito para acceso nativo a MySQL para delphi ZeosDBO (versión 6.5.1) y como base de datos utilizo MySQL Server 5.1:

El código que utilizo, el que me da el error:

Código:

  tc3.Close;
  tc3.Connection := bd;
  tc3.SQL.Clear;
  tc3.SQL.Add('select avg(valornumerico) TiempoMedio');
  tc3.SQL.Add ('from incidenciaslog');
  tc3.SQL.Add ('where codigoincidencia = :pCodigo and accion = :pAccion');
  tc3.ParamByName('pcodigo').DataType := ftInteger;
  tc3.ParamByName('pcodigo').AsInteger := 33;
  tc3.ParamByName('pAccion').DataType := ftString;
  tc3.ParamByName('pAccion').AsString := 'Añadida tarea';
  try
    tc3.open;
    txtTiempoMedio.Text := FloatToStr (tc3.fieldbyname('TiempoMedio').AsFloat);
    tc3.Close;
  except
    showmessage ('Error al ejecutar SQL.');
    tc3.close;
  end;
MensajePublicado:
Jue Ago 20, 2009 9:39 am
Top of PageVer perfil de usuario
alonsojpd
Administrador/Moderador


Registrado: Sep 16, 2003
Mensajes: 2687

Asunto: Re: Error is not a valid floating point value delphi mysql z Responder citando



Anuncios



varios escribió:
Error al ejecutar consulta SQL con Delphi, ZeosDBO y MySQL 5.1:

---------------------------
Debugger Exception Notification
---------------------------
Project facturacion.exe raised exception class EConvertError with message ''' is not a valid floating point value'. Process stopped. Use Step or Run to continue.
---------------------------
OK Help
---------------------------


Utilizo Borland Delphi 6, el componente gratuito para acceso nativo a MySQL para delphi ZeosDBO (versión 6.5.1) y como base de datos utilizo MySQL Server 5.1:

El código que utilizo, el que me da el error:

Código:

  tc3.Close;
  tc3.Connection := bd;
  tc3.SQL.Clear;
  tc3.SQL.Add('select avg(valornumerico) TiempoMedio');
  tc3.SQL.Add ('from incidenciaslog');
  tc3.SQL.Add ('where codigoincidencia = :pCodigo and accion = :pAccion');
  tc3.ParamByName('pcodigo').DataType := ftInteger;
  tc3.ParamByName('pcodigo').AsInteger := 33;
  tc3.ParamByName('pAccion').DataType := ftString;
  tc3.ParamByName('pAccion').AsString := 'Añadida tarea';
  try
    tc3.open;
    txtTiempoMedio.Text := FloatToStr (tc3.fieldbyname('TiempoMedio').AsFloat);
    tc3.Close;
  except
    showmessage ('Error al ejecutar SQL.');
    tc3.close;
  end;


¿Te aparece ese error siempre o sólo a veces?


Ultima edición por alonsojpd el Jue Ago 20, 2009 10:47 am, editado 1 vez
MensajePublicado:
Jue Ago 20, 2009 9:41 am
Top of PageVer perfil de usuario
varios
Magnífico usuario


Registrado: Oct 10, 2006
Mensajes: 2092

Asunto: Re: Error is not a valid floating point value delphi mysql z Responder citando



Anuncios



alonsojpd escribió:
¿Te aparece ese error siempre o sólo a veces?


No, a veces se ejecuta bien, me ocurre de vez en cuando.
MensajePublicado:
Jue Ago 20, 2009 9:42 am
Top of PageVer perfil de usuario
alonsojpd
Administrador/Moderador


Registrado: Sep 16, 2003
Mensajes: 2687

Asunto: Re: Error is not a valid floating point value delphi mysql z Responder citando



Anuncios



varios escribió:
No, a veces se ejecuta bien, me ocurre de vez en cuando.


Ten en cuenta que si la consulta SQL no encuentra registros en la tabla "incidenciaslog" que cumplan el filtro, devolverá un registro con el campo con valor "null", esto te dará error al ejecutar "asFloat".

Puedes cambiar el código por este otro:

Código:

  tc3.Close;
  tc3.Connection := bd;
  tc3.SQL.Clear;
  tc3.SQL.Add('select avg(valornumerico) TiempoMedio');
  tc3.SQL.Add ('from incidenciaslog');
  tc3.SQL.Add ('where codigoincidencia = :pCodigo and accion = :pAccion');
  tc3.ParamByName('pcodigo').DataType := ftInteger;
  tc3.ParamByName('pcodigo').AsInteger := 33;
  tc3.ParamByName('pAccion').DataType := ftString;
  tc3.ParamByName('pAccion').AsString := 'Añadida tarea';
  try
    tc3.open;
    if tc3.fieldbyname('TiempoMedio').IsNull then
      txtTiempoMedio.Text := '0'
    else
      txtTiempoMedio.Text := FloatToStr (tc3.fieldbyname('TiempoMedio').AsFloat);
    tc3.Close;
  except
    showmessage ('Error al ejecutar SQL.');
    tc3.close;
  end;


Ultima edición por alonsojpd el Jue Ago 20, 2009 10:48 am, editado 1 vez
MensajePublicado:
Jue Ago 20, 2009 9:49 am
Top of PageVer perfil de usuario
varios
Magnífico usuario


Registrado: Oct 10, 2006
Mensajes: 2092

Asunto: Re: Error is not a valid floating point value delphi mysql z Responder citando



Anuncios



alonsojpd escribió:


Ten en cuenta que si la consulta SQL no encuentra registros en la tabla "incidenciaslog" que cumplan el filtro, devolverá un registro con el campo con valor "null", esto te dará error al ejecutar "asFloat".

Puedes cambiar el código por este otro:

Código:

  tc3.Close;
  tc3.Connection := bd;
  tc3.SQL.Clear;
  tc3.SQL.Add('select sum(valornumerico) TiempoTotal');
  tc3.SQL.Add ('from incidenciaslog');
  tc3.SQL.Add ('where codigoincidencia = :pCodigo and accion = :pAccion');
  tc3.ParamByName('pcodigo').DataType := ftInteger;
  tc3.ParamByName('pcodigo').AsInteger := 33;
  tc3.ParamByName('pAccion').DataType := ftString;
  tc3.ParamByName('pAccion').AsString := 'Añadida tarea';
  try
    tc3.open;
    if tc3.fieldbyname('TiempoTotal').IsNull then
      txtTiempoTotal.Text := '0'
    else
      txtTiempoTotal.Text := FloatToStr (tc3.fieldbyname('TiempoTotal').AsFloat);
    tc3.Close;
  except
    showmessage ('Error al ejecutar SQL.');
    tc3.close;
  end;


Ok, con esto arreglo el problema cuando son nulos, pero ahora me da este otro error, también a veces:

---------------------------
Facturación y Contabilidad
---------------------------
Project facturacion.exe raised exception class EConvertError with message ''57.5926' no es un valor de coma flotante válido'. Process stopped. Use Step or Run to continue.
---------------------------
OK Help
---------------------------


He observado que ocurre cuando aparecen decimales en el "avg" de la consulta SQL. No necesito los decimales ¿cómo puedo arreglarlo?

He intentado cambiar el .AsFloat por .AsInteger y por .Value, obteniendo el mismo error. Lo he intentado con la función "trunc" de Delphi, pero me sigue dando el mismo error.
MensajePublicado:
Jue Ago 20, 2009 10:24 am
Top of PageVer perfil de usuario
alonsojpd
Administrador/Moderador


Registrado: Sep 16, 2003
Mensajes: 2687

Asunto: Re: Error is not a valid floating point value delphi mysql z Responder citando



Anuncios



varios escribió:
Ok, con esto arreglo el problema cuando son nulos, pero ahora me da este otro error, también a veces:

---------------------------
Facturación y Contabilidad
---------------------------
Project facturacion.exe raised exception class EConvertError with message ''57.5926' no es un valor de coma flotante válido'. Process stopped. Use Step or Run to continue.
---------------------------
OK Help
---------------------------


He observado que ocurre cuando aparecen decimales en el "avg" de la consulta SQL. No necesito los decimales ¿cómo puedo arreglarlo?

He intentado cambiar el .AsFloat por .AsInteger y por .Value, obteniendo el mismo error. Lo he intentado con la función "trunc" de Delphi, pero me sigue dando el mismo error.


¿Qué tipo de datos tienes definido para el campo "valornumero" de la tabla "incidenciaslog"?
MensajePublicado:
Jue Ago 20, 2009 10:40 am
Top of PageVer perfil de usuario
varios
Magnífico usuario


Registrado: Oct 10, 2006
Mensajes: 2092

Asunto: Re: Error is not a valid floating point value delphi mysql z Responder citando



Anuncios



alonsojpd escribió:
¿Qué tipo de datos tienes definido para el campo "valornumero" de la tabla "incidenciaslog"?


Es de tipo: INT(10).
MensajePublicado:
Jue Ago 20, 2009 10:42 am
Top of PageVer perfil de usuario
alonsojpd
Administrador/Moderador


Registrado: Sep 16, 2003
Mensajes: 2687

Asunto: Re: Error is not a valid floating point value delphi mysql z Responder citando



Anuncios



varios escribió:
Es de tipo: INT(10).


Puedes utilizar la función de MySQL "TRUNCATE", sería algo así:

Código:

  tc3.Close;
  tc3.Connection := bd;
  tc3.SQL.Clear;
  tc3.SQL.Add('select truncate(avg(valornumerico), 0) TiempoMedio');
  tc3.SQL.Add ('from incidenciaslog');
  tc3.SQL.Add ('where codigoincidencia = :pCodigo and accion = :pAccion');
  ...
MensajePublicado:
Jue Ago 20, 2009 10:45 am
Top of PageVer perfil de usuario
alonsojpd
Administrador/Moderador


Registrado: Sep 16, 2003
Mensajes: 2687

Asunto: Re: Error is not a valid floating point value delphi mysql z Responder citando



Anuncios



Aquí tienes más información sobre la función de MySQL "truncate":

http://www.ajpdsoft.com/modules.php?name=Encyclopedia&op=content&tid=801
MensajePublicado:
Vie Ago 21, 2009 5:21 am
Top of PageVer perfil de usuario
salvica
Excelente usuario


Registrado: Jan 20, 2009
Mensajes: 16

Asunto: Responder citando

Hola a tod@s, hacía tiempo que no entraba.

El problema que tienes no es de la Base de datos, sino de Delphi (más bien en como Delphi trata los datos de tu sistema).

Tienes dos formas de solucionarlo:
1º - Decirle a tu sistema que la coma corresponde a los millares y el punto es un "punto decimal". Esto lo haces desde el panel de control -> Configuración regional. Tiene el problema de que es una solución local (solo vale para tu sistema) y tienes que repetir el mismo proceso en todos los ordenadores que ejecuten tu programa.

2º - Obligar a Delphi que "ignore" windows y que se encargue él de transladar los formatos. Para hacer esta debes incluir en el procedimiento OnCreate del form principal el siguiente código:
Código:

{
  al crear la ventana, definir los parámetros "por defecto" del sistema
}
  DateSeparator     := '/';
  DecimalSeparator  := '.';
  LongDateFormat    := 'dd/mm/yyyy';
  ThousandSeparator := ',';
  TimeSeparator     := ':';


Esto te asegura que el programa sea "portable" a cualquier ordenador.

Saludos
salvica
MensajePublicado:
Vie Nov 20, 2009 10:16 am
Top of PageVer perfil de usuario
Mostrar mensajes de anteriores:   
Todas las horas son GMT - 1 Horas
Publicar nuevo tema Responder al tema
Foros de discusión » Borland Delphi, Codegear Delphi .Net  

Cambiar a:  
Key
  Puede publicar nuevos temas en este foro
No puede responder a temas en este foro
No puede editar sus mensajes en este foro
No puede borrar sus mensajes en este foro
No puede votar en encuestas en este foro
Visita nuestro nuevo sitio web con programas y contenidos actualizados: Proyecto A