saludos, hice el cambio de a firebird 2.5 han salido varios inconvenientes que se han podido solucionar; bueno ahora al abrir un formario llamado Crear Turnos por Sala, puedo selecionar el nombre de la sala y programar un rango de las fechas pero al tratar de generarlos sale un error "Invalid argument to time encode", mealguien me podria decir que es esa falla?
[RESUELTO] Invalid argument to time encode delphi
Comenzado por
FELIX
, jul 15 2011 04:31
7 respuestas en este tema
#1
Escrito 15 julio 2011 - 04:31
#2
Escrito 15 julio 2011 - 05:06
Tendrías que verificar el formato la cual estás enviando, puede ser que haya variado.
Saludos.
Saludos.
#3
Escrito 15 julio 2011 - 05:15
Suena a un problema de formato de fechas con tus datos de rango que dices que incluyes...
Saludox !
Saludox !
#4
Escrito 15 julio 2011 - 09:57
Hola FELIX,
Algo de código para traer más luz no vendría mal
Por cierto, ¿De tipo es el campo que declaraste en la tabla?
Saludos,
Algo de código para traer más luz no vendría mal
Por cierto, ¿De tipo es el campo que declaraste en la tabla?
Saludos,
#5
Escrito 16 julio 2011 - 08:27
tengo 3 datatimepicker que manejan fecha desde que se crea el turno, otra hasta donde llega el turno y la hora, tambien hay ub edit que carga la sala que se separa y esta conectada a un data source (funciona ok), cuando doy clic el el boton GENERAR SALE EL ERROR
CODIGO BOTON GENERAR
CODIGO BOTON GENERAR
delphi
procedure TfrmCrearTurnos.BitBtn1Click(Sender: TObject); Var i, Hasta: Longint; begin Hasta := Trunc(dtpFecha2.Date); Gauge1.Progress := 0; Gauge1.MinValue := 0; Gauge1.MaxValue := Hasta - Trunc(dtpFecha1.Date); For i := Trunc(dtpFecha1.Date) to Hasta do begin Generar_Hora(i); Gauge1.Progress := Gauge1.Progress + 1; end; Fdm.Commit; end; /////////////////////////////////////////////////////////////////////////// procedure TfrmCrearTurnos.q_SalaAfterScroll(DataSet: TDataSet); Var FechaMax: TDateTime; begin FechaMax := Fdm.Get_Fecha_Maxima_Programada; dtpFecha1.Date := FechaMax; dtpHora1.Time := FechaMax; dtpFecha2.Date := IncMonth(FechaMax, 1); end; procedure TfrmCrearTurnos.Generar_Hora(Const Fecha: TDate); Var HoraInicio: TDateTime; MyTime: TTime; begin HoraInicio := Fecha + Frac(dtpHora1.Time); With Fdm.q_Turnos do begin Close; Open; while Not Eof do Begin MyTime := EncodeTime(FieldByName('Nro_Horas').AsInteger, 0, 0, 0); Fdm.AsignarHora(HoraInicio, FieldByName('Nro_Horas').AsInteger); HoraInicio := HoraInicio + MyTime; Next; end; end; end;
#6
Escrito 16 julio 2011 - 09:04
el error sale en el codigo del boton generar y este llama el preocedimiento
delphi
procedure TfrmCrearTurnos.Generar_Hora(Const Fecha: TDate); Var HoraInicio: TDateTime; MyTime: TTime; begin HoraInicio := Fecha + Frac(dtpHora1.Time); With Fdm.q_Turnos do begin Close; Open; while Not Eof do Begin MyTime := EncodeTime(FieldByName('Nro_Horas').AsInteger, 0, 0, 0); Fdm.AsignarHora(HoraInicio, FieldByName('Nro_Horas').AsInteger); HoraInicio := HoraInicio + MyTime; Next; end; end; end;
#7
Escrito 16 julio 2011 - 10:39
El error que aprecio es que el parámetro que recibe el procedimiento Generar_Hora() es de tipo TDate, mientras que el valor de la variable i que le pasas dentro del ciclo for es de tipo numérico; concretamente longint.
Y como el tipo de dato longint es incompatible con el TDate arroja ese error. Ten presente que los tipos de datos fechas y horas son en realidad un número flotante, siendo la parte entera los días y la decimal las horas, minutos y segundos. Para el caso, TDate, tiene en la parte decimal cero.
O reprogramas tu procedimiento Generar_hora() para recibir el tipo numérico, o bien buscas el modo de pasar un TDate a éste y ves el modo de cómo hacer una correspondencia i -> TDate.
Saludos,
Y como el tipo de dato longint es incompatible con el TDate arroja ese error. Ten presente que los tipos de datos fechas y horas son en realidad un número flotante, siendo la parte entera los días y la decimal las horas, minutos y segundos. Para el caso, TDate, tiene en la parte decimal cero.
O reprogramas tu procedimiento Generar_hora() para recibir el tipo numérico, o bien buscas el modo de pasar un TDate a éste y ves el modo de cómo hacer una correspondencia i -> TDate.
Saludos,
#8
Escrito 18 julio 2011 - 09:27
gracias reprograme el procedimiento Generar_hora() y funciono muchas gracias por el consejo son muy amables