PDA

Ver la Versión Completa : Sustitución de un campo Fecha en una BD


gluglu
04-04-2006, 11:17:07
Hola compañeros !

Intento susitituir el contenido de un campo DATE de un registro en Interbase 7.5 con el contenido del SIGUIENTE registro de la misma base de datos.

Para ello definí una variable tipo DateTime (Aux_Date) y, si se confirma una condición determinada, asigno el valor del campo fecha del registro posterior a dicha variable, ejecuto un Prior, y reemplazo.
Aux_Date := DataModule1.IBQuery1DATETO.Value;
DataModule1.IBQuery1.Prior;
DataModule1.IBQuery1.Edit;
DataModule1.IBQuery1DATETO.Value := Aux_Date;

Supuestamente y a mi parecer, debería funcionar, pero a pesar de haber comprobado certeramente que el contenido del registro,y por tanto del campo y variable correspondiente no es Null, y además contiene una fecha válida, al ejecutar la última línea del código arriba indicado me dá un error 'Invalid variant type conversion of Null variant into TDateTime'.

Gracias por vuestra ayuda y saludos !

dec
04-04-2006, 11:27:07
Hola,

No estoy yo muy puesto en el tema, pero, me suena que debería hacerse más o menos así:


Aux_Date := DataModule1.IBQuery1DATETO.AsDateTime;
DataModule1.IBQuery1.Prior;
DataModule1.IBQuery1.Edit;
DataModule1.IBQuery1DATETO.AsDateTime := Aux_Date;

gluglu
04-04-2006, 11:32:39
Gracias David,

Ya lo había probado pero tampoco.

Sigo sin explicarme el error. He realizado asignaciones intermedias a Strings, mirado con el Debugger, y en ningún caso el valor es Null sino una fecha válida. Por eso hago uso de vuestros sabios consejos.

:o

P.D. : Creo que al poner un post, la hora del mismo que aparece no es correta.

gluglu
04-04-2006, 12:07:15
:mad: !!!

El error venía (... como siempre en estos casos) por otro lado !! Tenía una condición puesta en el OnValidate de ese campo de la BD y era esa condición la que me liaba el asunto, posicionándose en otros registros, etc.

Gracias de nuevo a todos. ;)