Ver Mensaje Individual
  #1  
Antiguo 10-11-2023
Avatar de mRoman
mRoman mRoman is offline
Miembro
 
Registrado: nov 2003
Posts: 599
Reputación: 21
mRoman Va por buen camino
Not Valid Timestamp

Hola amigos, nuevamente recurriendo a uds y a su expertis.

Trabajo: DELPHI 6, WIN11, FB 2.0, COMPONENTES IB

(Ya he consultado este hilo)

https://www.clubdelphi.com/foros/sho...alid+timestamp

Es el mismo problema y habla de cambiar la CLASE del campo persistente, como se hace eso?. Talvez hace falta hacer eso, pero como lo hago?. Doble click sobre el componente TIBDataSet y en la opción FieldsEditor agregar los campos??...ya lo tengo asi, y si es esto, entonces como le cambio el tipo de dato??...en que propiedad.

UN POCO DE CONTEXTO:

Tuve que cambiar de equipo portátil y reinstale Delphi y toda la bola de componentes que uso (una joda)

PROBLEMA:

Desarrollé una aplicación, que antes de la forzosa "actualización" de mi equipo portátil, funcionaba bien, pero el caso es que ahora volvió a marcar error, ya lo había resuelto, pero jajaja..ya no recuerdo como le hice o que cosa hice para solucionarlo, en fin, tengo lo siguiente:

Código Delphi [-]
procedure TfrmCaptura.sBtnF3Click(Sender: TObject);
begin

    try

        dsProds.FieldByName('RESPONSABLE_DEVOLUCION').AsInteger:=cbxDevolLiq.ItemIndex;
        dsProds.FieldByName('HORA_ENTREGA').AsDateTime :=  StrToTime( mskHora.Text );
        dsProds.FieldByName('FECHA_REGISTRO_VENTA').AsDateTime:=Date;
        dsProds.FieldByName('COSTO_LITRO').AsFloat:=qryContrato.fieldbyname('PRECIO_LITRO_CONCESIONARIO').As  Float;
        dsProds.Post;
        dsProds.ApplyUpdates;
    except
       on E: Exception do
       begin
            ShowMessage(E.Message);
            modDatos.trsFluida.Rollback;
            Application.MessageBox('Lo siento, los datos no se pudieron grabar','Aviso',mb_Ok+mb_IconError);
            K_VK_ESCAPE(Sender);
       end;
    end;
end;

El problema surge al momento de dar POST y precisamente en el campo HORA_ENTREGA, el cual esta definido en la B.D. como de tipo TIMESTAMP, solo me interesa almacenar en este campo la hora, la cual es ingresado/capturada en un TMaskEdit que en su propiedad "EditMask" tengo esto: "!90:00;1;"

Bueno pues al momento de dar click sobre el botón que ejecuta el código anterior, me envía este error:

Código:
...exception class EConvertError with message "0.6060000" is not a valid timestamp'
El 0.6060000 = 01:41

Como les comentaba, anteriormente trabajaba bien, con el código que hoy les envío. En su momento por las prisas, lo resolví creando un campo varchar para almacenar el dato, pero no era lo adecuado, asi que ahora me vuelvo a enfrentar a este error.

LO QUE HE HECHO:

1.- Cambiar de tipo de dato en la BD el campo HORA_ENTREGA a solo TIME, y tampoco funcionó, me seguía enviando el mismo error.
2.- Hice una prueba en el IBExpert, haciendo el update por SQL y ahí si funciono, se actualizó el campo.
Código SQL [-]
UPDATE venta a
SET a.hora_entrega=CAST(:HORA as time)
WHERE a.folio_impreso=1005731

Entonces me hace pensar que es desde delphi que no esta pasando bien el dato, como que no lo esta convirtiendo....alguna luz compañeros?

Saludos y gracias por su tiempo.
__________________
Miguel Román

Afectuoso saludo desde tierras mexicanas....un aguachile?, con unas "cetaseas" bien "muertas"?, VENTE PUES !!

Última edición por mRoman fecha: 10-11-2023 a las 19:05:43.
Responder Con Cita