Ver Mensaje Individual
  #7  
Antiguo 01-06-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
Cita:
Empezado por Giniromero
Conclusión sólo me da problemas para modificar
campos date que inicialmente estaban vacíos o es null.
Primero que nada te advierto que yo no sé nada de Interbase por lo que a lo mejor digo una burrada. Pero leyendo tus mensajes creo saber cuál es el problema. De hecho hice una pequeña prueba en Paradox y más o menos pude recrear el problema. Digo más o menos porque en el caso de Paradox, al intentar actualizar un registro donde el campo DATE era nulo no sólo no me actualiza sino que de hecho me lanza una excepción.

Creo que el punto es que los valores NULL no pueden compararse con una igualdad. En tu sentencia UPDATE:

Código SQL [-]
update VTOS
set
  CODVTO = :CODVTO,
  DESCRIPCION = ESCRIPCION,
  NUMGRUP = :NUMGRUP,
  FECHAINI = :FECHAINI,
  FECHAFIN = :FECHAFIN
where
  CODVTO = :OLD_CODVTO and
  NUMGRUP = :OLD_NUMGRUP and
  FECHAINI = :OLD_FECHAINI

el valor de :OLD_FECHAINI será NULL en el caso problemático de manera que la condición realmente se ve así:

FECHAINI = NULL

pero esta condición siempre será falsa ya que la comparación con NULL se hace con el operador IS en lugar del operador de igualdad.

En el caso de Paradox pude corregir el problema sustituyendo la condición por

(FECHAINI = :OLD_FECHAINI or FECHAINI is null)

Te repito que de Interbase no sé nada pero juraría que aquí está el problema: no encuentra el registro que hay que actualizar dado que la condición siempre valúa a FALSE.

Espero que esto te ayude.

// Saludos
Responder Con Cita