FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
Parametros tipo DATE que no funcionan como supondría.
A ver si alguien me puede dar un norte.
Uso FB Embedded 2.0 y quiero hacer esta consulta:
En Delphi utilizó los parámetros :fecha1 y :fecha2 para introducir las fechas por medio de datetimepickers así:
Sin embargo cuando ejecuto el query me genera el error -105 que menciona que el parametro de EXTRACT no es una fecha literal válida. Leyendo un poco me entero que FB tiene la graciosada de considerar las fechas divididas con "/" como fechas en formato gringo sin importar nada de los parámetros de win o linux. Para especificarlo en otro formato hay que usar "." como separadores. Hasta aquí ya se entiende como arreglarlo pero entonces: 1.- Tendría que convertir el valor de los datepickers a cadena y sustituir los "/" por puntos. 2.- Tendria que añadir un cast a mi query para que me acepte la cadena en forma literal. Si no hay otra forma pues ni modo pero quisiera ver si alguien lo pudo resolver usando los parámetros normalmente.
__________________
AKA "El animalito" ||Cordobés a mucha honra|| |
#2
|
||||
|
||||
Creo que Extract te regresa un valor entero, y al compararlo con fecha debe de ser un tipo Date, entonces la comparación debe ser:
ó
__________________
"Como pasa el tiempo..... ayer se escribe sin H y hoy con H" |
#3
|
||||
|
||||
perdon...olvide mencionar que el campo fecha representa un día del mes o lo que es lo mismo un entero.
__________________
AKA "El animalito" ||Cordobés a mucha honra|| |
#4
|
||||
|
||||
Y por qué en ves de resolverlo a nivel de FB, no lo resuelves a nivel de tu aplicación Delphi ?
En vez de pasarle el párametro como fecha, y después en FB sacar el día, sácalo directamente en Delphi y le pasas el parámetro como integer.
__________________
Piensa siempre en positivo ! |
#5
|
||||
|
||||
finalmente metí un campo calculado y con eso me las arreglé.
__________________
AKA "El animalito" ||Cordobés a mucha honra|| |
#6
|
||||
|
||||
¡Hola!
Cita:
Cita:
Cita:
Perdón si no comprendí bien el planteamiento, César, ¿podrías detallarlo un poco más? Saludos. Al. |
#7
|
||||
|
||||
Los párametros nunca los hé definido por tipo, simplemente dejo que Delphi les asigne el tipo de acuerdo con lo que le devuelve el motor y hasta ahora no tuve problemas.
La graciosada de los separadores no se si sea única de FB pero por ejemplo en MySQL por default utiliza el formato ISO pero se puede definir perfectamente cualquier otro formato que uno desee así como los separadores correspondiente. Precisamente en MySQL utilizaba mis parametros como ".AsDate" y le pasaba directo el valor de los datepickers olvidándome del formato de fechas de MySQL y nunca tuve problemas. En MySQL por ejemplo puedo hacer lo siguiente: y funciona perfectamente haciendo esto:
Sin embargo ese mismo código no sirve para FB. Primero porque no hay tal función "DayOf" y segundo porque la función equivalente (que por cierto igual existe en MySQL) "extract" se niega a tomar los valores de un parámetro que se le pasen como fecha. Para que funcione es necesario hacer esto:
Además de que el parametro :fecha hay que pasárselo como cadena y en formato "DD.MM.AAAA" si le pasa uno el parámetro :fecha como Date FB simplemente no le reconoce como fecha.
__________________
AKA "El animalito" ||Cordobés a mucha honra|| Última edición por AzidRain fecha: 06-05-2008 a las 05:00:10. |
#8
|
||||
|
||||
¡Hola!
Cita:
En Firebird y otras bases de datos cliente-servidor también. Cita:
Cita:
No dejes de retroalimentar el hilo para llegar al punto justo de la verdad. Saludos afectuosos. Al González. |
#9
|
||||
|
||||
Y había intentado forzar el tipo del parámetro a ftDate pero al ejecutar el programa me genera una excepción pues al parecer el query utiliza el parámetro como string.
Si en modo diseño escribo el query con los parámetros así tal cual lo indiqué al principio y luego quiero acceder a los parámetros mediante el object inspector me doy cuenta que ambos parámetros son tratados como cadenas, es decir les asigna el tipo ftString. De hecho probé el mismo query en MySQL usando extract y ahi si funciona, es decir cuando le paso el parámetro como fecha MySQL lo interpreta correctamente como fecha. Estaba pensando aunque no se que tan cierto sea pues de momento no tengo como probarlo, que el problema tal vez pueda ser el componente que uso para conectarme, en este caso Zeos, que es el mismo que usaba para conectarme vía MySQL. Si corro querys normales sin parámetros si se ejecutan con este componente pero al parecer debe tener algún problema para lo de los parámetros. Recordemos que la sustitución de parámetros por los valores correspondientes los hace el componente de manera que probablemente esté haciendo esta sustitución de forma incorrecta. Nadando en el código de Zeos observé que utiliza diferente código cuando se conecta a MySQL. ¿Que otra alternativa tengo para conectarme a Firebird? Probablemente si cambio los componentes y lo intento de nuevo ahora si resulte.
__________________
AKA "El animalito" ||Cordobés a mucha honra|| |
#10
|
||||
|
||||
Cita:
Cita:
Cita:
También considera que IBX está "casado" con InterBase, y no hay garantía de buen funcionamiento de estos componentes con Firebird 2. Yo utilizo dbExpress con el controlador de InterBase para acceder a bases de datos Firebird 1.5, apoyándome con objetos TClientDataSet. Cuando decida empezar a usar Firebird 2, sólo tendré que conseguir el controlador (DLL) adecuado (dbExpress es una tecnología abierta a cualquier base de datos y la más avanzada de CodeGear). Seguimos indagando. Al González. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
tipo date | jSr | MySQL | 7 | 14-11-2007 08:36:57 |
Como funcionan los indice para una tabla de tipo TADOTable | locotenentul | Conexión con bases de datos | 1 | 10-04-2007 13:46:58 |
Como seleccionar de una campo tipo date solo el dia | Gaby123 | Conexión con bases de datos | 1 | 06-09-2006 16:55:50 |
Como filtrar un campo tipo Date en una Tabla? | JuanErasmo | C++ Builder | 6 | 21-12-2005 09:24:59 |
campo tipo date | Giniromero | Firebird e Interbase | 21 | 13-08-2003 13:47:53 |
|