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
Started by
FELIX
, Jul 15 2011 04:31 PM
7 replies to this topic
#1
Posted 15 July 2011 - 04:31 PM
#2
Posted 15 July 2011 - 05:06 PM
Tendrías que verificar el formato la cual estás enviando, puede ser que haya variado.
Saludos.
Saludos.
#3
Posted 15 July 2011 - 05:15 PM
Suena a un problema de formato de fechas con tus datos de rango que dices que incluyes...
Saludox !
Saludox !
#4
Posted 15 July 2011 - 09:57 PM
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
Posted 16 July 2011 - 08:27 AM
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
Posted 16 July 2011 - 09:04 AM
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
Posted 16 July 2011 - 10:39 AM
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
Posted 18 July 2011 - 09:27 AM
gracias reprograme el procedimiento Generar_hora() y funciono muchas gracias por el consejo son muy amables