Ver Mensaje Individual
  #2  
Antiguo 08-12-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Reputación: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Hay varias opciones.

Una es interceptar la excepción:

Código Delphi [-]
try
  MXCICLO:=STRTOFLOAT(DATA.qped4CICLO.VALUE);
except
  { aquí pones el código para manejar el dato erróneo }
end;

Puedes usar la función TryStrToFloat:

Código Delphi [-]
if not TryStrToFloatDef(DATA.qped4CICLO.VALUE, MXCICLO) then
begin
  { aquí pones el código para manejar el dato erróneo }
end;

O también puedes usar StrToFloatDef si conoces de antemano que algún valor no es posible. Por ejemplo, si sabes que ningún dato puede ser -1 entonces pones:

Código Delphi [-]
MXCICLO := StrToFloatDef(DATA.qped4CICLO.VALUE, -1);
if MXCICLO = -1 then
begin
  { aquí pones el código para manejar el dato erróneo }
end;

El código que pongas para manejar el error dependerá de qué es lo que quieres hacer con un dato erróneo. Tratándose de un ciclo muy posiblemente no quieras mostrar un mensaje al usuario ya que la ejecución del ciclo se detendría en cada dato incorrecto. Puedes optar por apuntar el registro ofensor en un archivo log. Si sabes que los datos vacíos han de tratarse como ceros entonces quizá la tercera opción te sea más cómoda (cambiando -1 por 0) ya que te hará autmáticamente la conversión.

Por otra parte no indicas qué error te da, pero tratándose de bases de datos quizá el problema provenga de que el valor del campo es NULL. En tal caso, si deseas que ese valor se trate como 0 puedes tambier optar por poner la variable global NullStrictConvert en false lo que ocasiona que los valores NULL automáticamente se conviertan a ceros.

// Saludos
Responder Con Cita