Ir al contenido


Foto

[RESUELTO] Invalid argument to time encode delphi


  • Por favor identifícate para responder
7 respuestas en este tema

#1 FELIX

FELIX

    Advanced Member

  • Miembros
  • PipPipPip
  • 123 mensajes

Escrito 15 julio 2011 - 04:31

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?

 
  • 0

#2 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 15 julio 2011 - 05:06

Tendrías que verificar el formato la cual estás enviando, puede ser que haya variado.

Saludos.

  • 0

#3 Fenareth

Fenareth

    Advanced Member

  • Administrador
  • 3.486 mensajes
  • LocationMexico City

Escrito 15 julio 2011 - 05:15

Suena a un problema de formato de fechas con tus datos de rango que dices que incluyes...

Saludox ! :)
  • 0

#4 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.295 mensajes
  • LocationArgentina

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,

  • 0

#5 FELIX

FELIX

    Advanced Member

  • Miembros
  • PipPipPip
  • 123 mensajes

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



delphi
  1. procedure TfrmCrearTurnos.BitBtn1Click(Sender: TObject);
  2. Var
  3. i, Hasta: Longint;
  4. begin
  5. Hasta := Trunc(dtpFecha2.Date);
  6. Gauge1.Progress := 0; Gauge1.MinValue := 0;
  7. Gauge1.MaxValue :=  Hasta - Trunc(dtpFecha1.Date);
  8. For i := Trunc(dtpFecha1.Date) to Hasta do
  9.   begin
  10.   Generar_Hora(i);
  11.   Gauge1.Progress := Gauge1.Progress + 1;
  12.   end;
  13. Fdm.Commit;
  14. end;
  15. ///////////////////////////////////////////////////////////////////////////
  16.  
  17. procedure TfrmCrearTurnos.q_SalaAfterScroll(DataSet: TDataSet);
  18. Var
  19. FechaMax: TDateTime;
  20. begin
  21. FechaMax := Fdm.Get_Fecha_Maxima_Programada;
  22. dtpFecha1.Date := FechaMax;
  23. dtpHora1.Time := FechaMax;
  24. dtpFecha2.Date := IncMonth(FechaMax, 1);
  25. end;
  26.  
  27. procedure TfrmCrearTurnos.Generar_Hora(Const Fecha: TDate);
  28. Var
  29. HoraInicio: TDateTime;
  30. MyTime: TTime;
  31. begin
  32. HoraInicio := Fecha + Frac(dtpHora1.Time);
  33. With Fdm.q_Turnos do
  34.   begin
  35.   Close; Open;
  36.   while Not Eof do
  37.     Begin
  38.     MyTime := EncodeTime(FieldByName('Nro_Horas').AsInteger, 0, 0, 0);
  39.     Fdm.AsignarHora(HoraInicio, FieldByName('Nro_Horas').AsInteger);
  40.     HoraInicio := HoraInicio + MyTime;
  41.     Next;
  42.     end;
  43.   end;
  44. end;



  • 0

#6 FELIX

FELIX

    Advanced Member

  • Miembros
  • PipPipPip
  • 123 mensajes

Escrito 16 julio 2011 - 09:04

el error sale en el codigo del boton generar y este llama el preocedimiento



delphi
  1. procedure TfrmCrearTurnos.Generar_Hora(Const Fecha: TDate);
  2. Var
  3. HoraInicio: TDateTime;
  4. MyTime: TTime;
  5. begin
  6. HoraInicio := Fecha + Frac(dtpHora1.Time);
  7. With Fdm.q_Turnos do
  8.   begin
  9.   Close; Open;
  10.   while Not Eof do
  11.     Begin
  12.     MyTime := EncodeTime(FieldByName('Nro_Horas').AsInteger, 0, 0, 0);
  13.     Fdm.AsignarHora(HoraInicio, FieldByName('Nro_Horas').AsInteger);
  14.     HoraInicio := HoraInicio + MyTime;
  15.     Next;
  16.     end;
  17.   end;
  18. end;





  • 0

#7 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.295 mensajes
  • LocationArgentina

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,

  • 0

#8 FELIX

FELIX

    Advanced Member

  • Miembros
  • PipPipPip
  • 123 mensajes

Escrito 18 julio 2011 - 09:27

gracias reprograme el procedimiento Generar_hora() y funciono muchas gracias por el consejo son muy amables
  • 0




IP.Board spam blocked by CleanTalk.