FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
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:
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' 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.
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 20:05:43. |
#2
|
||||
|
||||
Puede ser muchas cosas, tendríamos que tener claro qué es exactamente lo que estás pasando y qué tipo de variables usas, incluso si en la BD estás usando dialecto 1 o 3.
Los campos fecha son números con decimales, la parte entera son los días transcurridos desde 31/12/1899 creo recordar, y la parte decimal es la hora. Por probar, así de primeras, cambia el asdatetime por asdouble. Otra cosa, tienes punto o coma decimal, esa es otra.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#3
|
||||
|
||||
Cita:
Delphi6 no me da la opción de AsDouble, no la tiene... Como hago para ver que Dialect uso?. Lo Googlee y unos de los resultados me dio esta sentencia:
Hilo iniciado por ENECUMENE en el foro de DELPHIACCESS, pero me dio error, no encuentra esa base, ha de funcionar para otra versión de FB mas nueva. Ah...punto decimal o coma?...bueno en la configuración regional del W11, tengo la de MEXICO, "." punto para definir a los decimales y la "," para la separación de miles. Variables, pues no uso para la captura del dato, solo el objeto TMaskEdit para la captura de la hora, en el caso que nos ocupa, ingresan esta hora: "01:41". los 2 puntos están definidos en la propiedad EditMask, que se debe grabar (save) la literal.
__________________
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 21:12:01. |
#4
|
||||
|
||||
Vayamos por parte, qué es StrToTime( mskHora.Text );
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#5
|
||||
|
||||
Pues para convertir lo q contiene la propiedad TEXT del objeto TMaskEdit a un tipo de dato TIME...o como lo debo de decir a Delphi que el dato que contiene es del tipo TIME??...usé también StrToDateTime y marcó el mismo error...
Por otra parte, encontré como saber que Dialecto usa mi B.D https://stackoverflow.com/questions/...rd-sql-dialect
Según comenta que si el resultado es 0 (entero) usa Dialect 3 y si da 0.500000 (Double Precision) es Dialect 1...me dio 0 (Entero), cosa extraña porque el MSG q me envía Delphi hace pensar que mi B.D. es Dialect 1!! Tendrá algo q ver el CharSet??...lo tengo en "None" y el "Font Character Set" en "ANSI_CHARSET"
__________________
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 21:50:54. |
#6
|
||||
|
||||
A ver, te pregunto por la función strtotime para ver cómo lo haces, porque supongo que es tuya, eso no es de delphi.
Para ver el dialecto basta con abrir la bd con ibexpert y ver sus propiedades, o también ejecuta lo siguiente:
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#7
|
||||
|
||||
Cita:
Código:
Undefined name. Dynamic SQL Error. SQL error code = -204. Table unknown. MON$DATABASE. At line 1, column 29. https://www.delphibasics.co.uk/RTL.php?Name=StrToTime
__________________
Miguel Román Afectuoso saludo desde tierras mexicanas....un aguachile?, con unas "cetaseas" bien "muertas"?, VENTE PUES !! |
#8
|
||||
|
||||
Ah, pensé que era tuya y que devolvía un time, pero si es la propia de delphi entonces devuelve un datetime.
¿Seguro que el campo en la BD es datetime? Si no te funciona el select que he puesto antes entonces es que la versión de firebird que usas todavía no lo tenía implementado, por lo que estás usando el dialecto 1. ¿Puedes copiarnos la estructura de la tabla de tu base de datos y algún ejemplo de código para probar?
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#9
|
||||
|
||||
Por cierto, ¿has seguido el programa con el "debug" para ver qué valor tiene mskHora.Text cuando se le pasa a la función?
Vaya a ser que la máscara añada algo incorrecto, como espacios o no sé, por asegurar de que tiene valor correcto.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#10
|
||||
|
||||
Cita:
Pero haré mas pruebas.
__________________
Miguel Román Afectuoso saludo desde tierras mexicanas....un aguachile?, con unas "cetaseas" bien "muertas"?, VENTE PUES !! |
#11
|
||||
|
||||
Bueno, el campo esta definido como TIMESTAMP...
__________________
Miguel Román Afectuoso saludo desde tierras mexicanas....un aguachile?, con unas "cetaseas" bien "muertas"?, VENTE PUES !! |
#12
|
||||
|
||||
Cita:
__________________
Miguel Román Afectuoso saludo desde tierras mexicanas....un aguachile?, con unas "cetaseas" bien "muertas"?, VENTE PUES !! |
#13
|
||||
|
||||
No recuerdo si firebird 2.0 tiene el tipo "time", puedes usar ese si lo tiene, es que timestamp guarda fecha y hora, de ahí el mensaje de error.
Edito: Deberías plantearte cambiar la versión, al menos la 2.5 si no quieres grandes cambios, hay diferencias importantes para mejor. La versión 2.0 es de hace 17 años (2006). Ya está la versión 5 en modo "release".
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal Última edición por Casimiro Notevi fecha: 11-11-2023 a las 11:39:46. |
#14
|
||||
|
||||
Por cierto, he hecho una prueba con una tabla con un campo timestamp y no ha habido problema:
Edito: Era una versión más nueva de firebird. Con la versión 2 no veo el tipo "time", no sé si te viene bien guardar la hora en formato texto '20:15:18', por ejemplo. La otra opción es seguir usando timestamp y "pasar" de la fecha, puedes guardar la hora con la fecha actual o poner siempre una misma fecha, y depende de lo que mejor te venga.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal Última edición por Casimiro Notevi fecha: 12-11-2023 a las 12:26:05. |
#15
|
||||
|
||||
Usando dialecto 3 puedes tener campos sólo fecha y campos sólo hora, ejemplo:
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#16
|
||||
|
||||
Cita:
A nivel de tabla, SQL, B.D. no tengo problema, el UPDATE que hice de prueba funcionó, se aplicó la actualización sin problema, el problema esta desde DELPHI, ahí no me permite aplicar el update del DataSet asociado. El dato "01:41" que es capturado por el usuario en un objecto TMaskEdit, algo tiene que al momento de dar click sobre el botón que dispara el proceso de actualización, marca error. En fin, seguiré viendo opciones, por lo pronto este fin de semana pasado, no me ocupe, quise distraerme un poco, porque ya tengo 1 semana (talvez un poco mas) tratando de resolver este problema. Saludos y muchas gracias x tu tiempo, a ti y a todos lo que han leido este hilo. Sigo buscando la solución....
__________________
Miguel Román Afectuoso saludo desde tierras mexicanas....un aguachile?, con unas "cetaseas" bien "muertas"?, VENTE PUES !! |
#17
|
||||
|
||||
Por si acaso, me parece recordar que la hora debe indicar también los segundos: 20:35:00
Te prepararé un ejemplo desde delphi, ¿los componentes IB son los IBX?
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#18
|
||||
|
||||
Si....los IB=IBX.
__________________
Miguel Román Afectuoso saludo desde tierras mexicanas....un aguachile?, con unas "cetaseas" bien "muertas"?, VENTE PUES !! |
#19
|
||||
|
||||
Hola compañeros.
Solo para comentarles que pues no lo he resuelto como quería, pero de momento lo solucioné de esta manera: Cree un campo, "HORA_ENTREGA_TXT" de tipo VARCHAR(5) en donde almacenaré la hora de entrega del producto...y el campo HORA_ENTREGA tipo TIMESTAMP / TIME (lo describo asi, porq en ambos tipos marcó el error), lo deje como parte de la estructura y de momento no contendrá datos, mas adelante haré un procedimiento almacenado o trigger para lo que haya en HORA_ENTREGA_TXT pasarlo al campo HORA_ENTREGA. Sigo buscando la solución, una mas profesional...jajajaja. Saludos y gracias por su tiempo.
__________________
Miguel Román Afectuoso saludo desde tierras mexicanas....un aguachile?, con unas "cetaseas" bien "muertas"?, VENTE PUES !! |
#20
|
||||
|
||||
He hecho una prueba simulando tu entorno y ha funcionado como se espera.
He creado esta tabla: Y en un formulario he puesto un maskedit igual que el tuyo para probar, este es el resultado: En un botón va esto: Espero que te sirva.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal Última edición por Casimiro Notevi fecha: 14-11-2023 a las 21:29:57. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
TimeStamp | Willo | MySQL | 4 | 22-03-2016 22:15:00 |
Is not a valid integer value | joancmb | Varios | 9 | 19-03-2013 15:10:58 |
TimeStamp = TimeStamp me da error | Chogo | Firebird e Interbase | 7 | 16-03-2011 05:13:38 |
not valid floating | merlin | Conexión con bases de datos | 1 | 21-07-2004 14:18:53 |
Timestamp y bde 5.2 | Toni | Firebird e Interbase | 2 | 27-05-2003 10:26:33 |
|