Como dices los compañeros, lo del formato despliegue lo defines tu.
Mencionas en tu primer post que usas los componentes FIBPlus. Bueno el TpfIBDataset tiene una propiedad 'DefaultFormats' en la cual puedes definir los siguientes formatos de despliegue:
Con esto das solución a el problema al formato de despliegue de datos. Saludos cordiales |
Perdonad que os moleste de nuevo con este tema. He usado los parámetros como me habéis dicho pero con este código me da el error:
SQL Error code -303 Arithmetic excepcion, numeric overflow or string truncation. El código que uso es:
Cuando voy introduciendo la fecha en el Edit1 en este formato: ej."23.06.202" hasta aqui funciona bien y hace bien la consulta, pero cuando introduzco el último "0" de "año 2020" me da el error. He probado con Cast, Extract y este código es el que mas se aproxima a lo que quiero, sabéis que puede pasar para que me de ese error?? Gracias por anticipado. |
Presta atención al consejo: Sigues sin usar los tipos de datos correctos. Estas mandando como texto un fecha.
|
Esto no tiene los tipos adecuados: fechas como fechas, enteros como enteros...
|
Y agregaria: Deja de usar un control de texto para un campo fecha. Usa uno que no requiera uso de StrToDate, como TDateTimePicker
|
Gracias por vuestros consejos y tenéis razón. Sólo deciros que cuando se hacen las grabaciones (append o edit) los campos están definidos correctamente los Date con DateTimePicker y los numericos con FloatEdit etc. Sólo he usado los CampoDate.AsString para filtrar las consultas con el LIKE según va cambiando el Edit de la busqueda caracter a caracter para intentar conseguir que si en el Edit de busqueda tecleo un 2, que me filtre TODOS aquellos registros que en cualquiera de sus campos contengan un "2", si luego tecleo "3", que aparezcan todos los campos que contengan "23", y así sucesivamente hasta acotar al máximo el resultado deseado.
|
Cita:
Hola Como ya te explicaron los tipo datetime son representados internamente como numeros aunque al visualizarlos tengan el formato de fecha que conocemos. Haciendo una prueba rapida hice esto:
Obteniendo: 43990.6227021528 Si te das cuenta para la fecha 08/06/2020 obtengo este numero con lo cual al querer filtrar mientras este escribiendo la fecha no te va a funcionar; es mas te dara errores por todos lados. Te estas complicando innecesariamente. Las fechas debes filtrarlas cuando ya esten ingresadas completamente. Saludos |
Cita:
Es MUY problematico hacer esos brincos de tipos, porque eso afecta todo: El orden, la exactitud, lo correcto de esas operaciones, la velocidad (si esos campos tienen indices al pasar a texto LOS ANULASTE), etc. Mira por ejemplo: "Mentiras que los programadores creen sobre el tiempo": https://infiniteundo.com/post/253269...eve-about-time Con solo los primeros flipas: Cita:
Asi que lo que debes hacer es usar la funcion de fecha correcta, o traducir lo que hace LIKE al pensamiento de fechas. Si lo que quieres es filtrar por ejemplo "dame los registros del mes", entonces debe extraer el año/mes y comparar con año/mes. Para eso consulta la documentacion de la BD. Hay estan las funciones correctas de fecha. P.D: Aunque a nivel informativo te han explicado como internamente estan implementados los tipos de fecha, NO USES FECHAS ASI. Es incorrecto convertir fechas a flotantes* y hacer comparaciones. Es igual de erroneo que usar texto. *Porque hacer comparaciones con flotantes es de los mas flipante/absurdo que hay. |
Cita:
|
Cita:
Si exactamente :D Saludos |
Cita:
Lo que debes comprender es que aunque uses Asstring para pasar un texto al parametro internamente al procesar la consulta firebird lo hara con el tipo real del campo osea Date, si le pasas "23" no lo podra manejar ya que no es un valor de fecha valido. Debes enviar una fecha completa. Saludos |
La franja horaria es GMT +2. Ahora son las 17:34:54. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi