PDA

Ver la Versión Completa : validar una fecha en un ciclo repetitivo....


uper
24-05-2005, 19:57:50
Discupen tengo un problemita al pasar de una tabla informacion fechas, de echo son varios campos pero solo dos de ellos le agrege una condicion para que verificara que si no esta vacio le pase el valor; en caso contario lo deje en blanco hice un bucle por ser varios registros.

este es el codigo

While not tbClienteOrigen.Eof do
begin
tbClienteDetID.value:=tbClienteOrigenID.value;
tbClienteDetAnotacion.value.=tbClienteOrigenAnotacion.value;
if not tbClienteOrigenFechaInicio.isnull then
tbClienteDetfechaInicio.value:= tbClienteOrigenFechaInicio.value
else
tbClienteDetfechaInicio.value:=''; //----->error incompatible types Tdatetime and string
if not tbClienteOrigenFechaFinal.Isnull then
tbClienteDetfechaFinal.value:= tbClienteOrigenFechaFinal.value;
else
tbClienteDetfechaFinal.value:=''; //----> error incompatible types tdatetime and string
tbClienteDetActivo.value:='A';
tbClienteOrigen.next;

end

Aun si yo cambiara value por tbClienteDetfechaFinal.AsDateTime :='';
me sige el error.
Cual seria la manera para que quedara vacio el campo si es que es null vacio.
me falta algun parametro.

les agradesco

roman
24-05-2005, 20:37:45
¿No sirve poner?


tbClienteDetfechaInicio.value:= NULL;


// Saludos

uper
24-05-2005, 21:24:58
ya lo comprobe y no funciona poner un null, compile el programa y no me da error alguno pero al ejecutarse ese procedimiento me dice:
'Invalid varian type conversion'

Tambien comprobe haciendo un cambio de value por AsDateTime y aun da ese error invalid varian...

While not tbClienteOrigen.Eof do
begin
tbClienteDetID.value:=tbClienteOrigenID.value;
tbClienteDetAnotacion.value.=tbClienteOrigenAnotacion.value;
if not tbClienteOrigenFechaInicio.isnull then
tbClienteDetfechaInicio.value:= tbClienteOrigenFechaInicio.value
else
tbClienteDetfechaInicio.AsDateTime:=null;
if not tbClienteOrigenFechaFinal.Isnullthen
tbClienteDetfechaFinal.value:= tbClienteOrigenFechaFinal.value;
else
tbClienteDetfechaFinal.AsDateTime:=null;
and string
tbClienteDetActivo.value:='A';
tbClienteOrigen.next;

end

por que hace esto ?

roman
24-05-2005, 21:33:36
al ejecutarse ese procedimiento me dice:
'Invalid varian type conversion'


¿En qué línea te marca ese error? ¿Tienes algún DBGrid u otro control de datos conectado a tbClienteOrigen?

Intenta poner NullStrictConvert := false

al principio del procedimiento.

// Saludos

marcoszorrilla
24-05-2005, 21:42:41
Prueba esto otro:
tbClienteDetfechaInicio.Clear

Un Saludo.

uper
25-05-2005, 00:52:02
Saludos ya quedo con el metodo Clear agregandole para pasar fechas nulas,
y por que con este bucle me pasa los datos pero le falta el ultimo registro de donde se toman los datos de origen.

tengo mi tabla con 1517 registros y me copio 1516 en la tabla de destino.
este el codigo completo:
try
tbClienteOrigen.open;
tbClienteOrigen.first;
tbClienteDet.open;
While not tbClienteOrigen.Eof do
begin
tbClienteDet.append;
tbClienteDetID.value:=tbClienteOrigenID.value;
tbClienteDetAnotacion.value.=tbClienteOrigenAnotacion.value;
if not tbClienteOrigenFechaInicio.isnull then
tbClienteDetfechaInicio.value:= tbClienteOrigenFechaInicio.value
else
tbClienteDetfechaInicio.Clear;
if not tbClienteOrigenFechaFinal.Isnull then
tbClienteDetfechaFinal.value:= tbClienteOrigenFechaFinal.value;
else
tbClienteDetfechaFinal.clear;
tbClienteDetActivo.value:='A';
tbClienteDet.post;
tbClienteOrigen.next;
end
finally
tbClienteDet.close;
tbClienteOrigen.close;
end;

roman
25-05-2005, 02:21:10
No alcanzo a ver el error :(

Pero haciendo un pequeño paréntesis te comento que ni Marco ni yo entramos a editar tu mensaje para colorear cada palabra reservada. Cuando publiques código delphi basta que lo encierres entre etiquetas [ delphi ] y [ /delphi ] (sin los espacios al lado de los corchetes) para que se coloree automágicamente además de que así se preservan las indentaciones. ;)

// Saludos