Buen dia, estoy haciendo el cambio de FB 1.5 a FB 2.5, al estar depurando en mi aplicación en varios reportes me sale este error
Unsupported field type specified in BETWEEN predicate
Al usar esta condición dentro del Where
Escrito 19 diciembre 2015 - 10:06
Buen dia, estoy haciendo el cambio de FB 1.5 a FB 2.5, al estar depurando en mi aplicación en varios reportes me sale este error
Unsupported field type specified in BETWEEN predicate
Al usar esta condición dentro del Where
Escrito 19 diciembre 2015 - 10:53
Muy extraño que te genere ese error, yo manejo en muchos lados la condición BETWEEN sin mayores problemas en FB 2.5...
Con qué te estás conectando ? De qué tipo son tus parámetros de entrada ?
Saludox !
Escrito 19 diciembre 2015 - 10:56
El tipo de dato es DATE, uso el firebird 2.5 sobre linux ubuntu v15
Hasta aqui mencionan de un posible BUG
http://tracker.fireb...rowse/CORE-1095
Escrito 19 diciembre 2015 - 12:36
Buen dia, estoy haciendo el cambio de FB 1.5 a FB 2.5, al estar depurando en mi aplicación en varios reportes me sale este error
Unsupported field type specified in BETWEEN predicate
Al usar esta condición dentro del Where
D.FECHAMOV BETWEEN :FECHA1 AND :FECHA2Obviamente ese reporte funciona bien con FB 1.5, pero en la otra versión no, me esta obligando FB 2.5 hacerlo a la antiguaD.FECHAMOV >= :FECHA1 ANDD.FECHAMOV <= :FECHA2Como ven ?? sera un BUG del FB 2.5 ??
en windows funciona sin problemas
te dejo una muestra:
begin
FOR select
rz,tipo,tipocomprobante,cliente,lpad(punto,3,0),lpad(numerofactura,6,0),totalneto,totaliva,totalfactura,
pago_efectivo,pago_tarjeta,pago_ctacte,pago_cheque
from
pedidoscabecera
where
cast(fecha as date) between :fi and :ff
order by tipo,punto,numerofactura asc
into :p1,:p2,:p3,:p4,:p5,:p6,:p7,:p8,:p9,:p10,:p11,:p12,:p13
do
begin
suspend;
end
end
en este caso uso un cast ya que saco la hora
Escrito 19 diciembre 2015 - 01:09
La verdad es que aún estoy con Firebird 2.0, en esa versión tienes que indicarle a las variables su tipo.
Es decir :
D.FECHAMOV BETWEEN cast(:FECHA1 as timestamp) AND cast(:FECHA2 as timestamp)
Escrito 19 diciembre 2015 - 02:45
Ya se que pasa compañeros, resulta que en un SELECT, dentro del Where tengo otro Select donde tomo la fecha de otra tabla, y comparo si esta dentro del rango curiosamente alli es donde marca el error, pero si la separo para quitar el BetWeen no marca error:
ASI FUNCIONA:
SELECT .....
WHERE
......
(SELECT FECHA FROM TCARABO WHERE CARABO = 1 AND TIPOMOV = SUBSTRING(D.REFERENCIA FROM 1 FOR 2) AND FOLIO = D.FOLIO ) >= '01.12.2015' AND
(SELECT FECHA FROM TCARABO WHERE CARABO = 1 AND TIPOMOV = SUBSTRING(D.REFERENCIA FROM 1 FOR 2) AND FOLIO = D.FOLIO ) <= '19.12.2015' AND
........
ASI NO FUNCIONA:
SELECT .....
WHERE
......
(SELECT FECHA FROM TCARABO WHERE CARABO = 1 AND TIPOMOV = SUBSTRING(D.REFERENCIA FROM 1 FOR 2) AND FOLIO = D.FOLIO ) BETWEEN '01.12.2015' AND '19.12.2015'
Escrito 19 diciembre 2015 - 04:00
ASI NO FUNCIONA:
SELECT .....
WHERE
......
(SELECT FECHA FROM TCARABO WHERE CARABO = 1 AND TIPOMOV = SUBSTRING(D.REFERENCIA FROM 1 FOR 2) AND FOLIO = D.FOLIO ) BETWEEN '01.12.2015' AND '19.12.2015'
ahi tenes mal un parentesis, ¿lo viste? aunque cambia lo que haces.
(SELECT FECHA FROM TCARABO WHERE CARABO = 1 AND TIPOMOV = SUBSTRING(D.REFERENCIA FROM 1 FOR 2) AND FOLIO = D.FOLIO AND FECHA BETWEEN '01.12.2015' AND '19.12.2015')