Ir al contenido


Foto

FB 2.5 Unsupported field type specified in BETWEEN predicate


  • Por favor identifícate para responder
6 respuestas en este tema

#1 agag4

agag4

    Advanced Member

  • Miembros
  • PipPipPip
  • 298 mensajes
  • LocationMéxico

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

 

 D.FECHAMOV BETWEEN :FECHA1 AND :FECHA2
 
Obviamente ese reporte funciona bien con FB 1.5, pero en la otra versión no, me esta obligando FB 2.5 hacerlo a la antigua
 
 
 D.FECHAMOV >= :FECHA1 AND 
 D.FECHAMOV <= :FECHA2
 
Como ven ?? sera un BUG del FB 2.5 ??

 


  • 0

#2 Fenareth

Fenareth

    Advanced Member

  • Administrador
  • 3.486 mensajes
  • LocationMexico City

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 ! :)


  • 0

#3 agag4

agag4

    Advanced Member

  • Miembros
  • PipPipPip
  • 298 mensajes
  • LocationMéxico

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


  • 0

#4 Nikolas

Nikolas

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 604 mensajes
  • LocationMar del Plata / Bs As / Argentina

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 :FECHA2
 
Obviamente ese reporte funciona bien con FB 1.5, pero en la otra versión no, me esta obligando FB 2.5 hacerlo a la antigua
 
 
 D.FECHAMOV >= :FECHA1 AND 
 D.FECHAMOV <= :FECHA2
 
Como 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


  • 0

#5 Marc

Marc

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1.484 mensajes
  • LocationMallorca

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)


  • 0

#6 agag4

agag4

    Advanced Member

  • Miembros
  • PipPipPip
  • 298 mensajes
  • LocationMéxico

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'

 

 


  • 0

#7 Nikolas

Nikolas

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 604 mensajes
  • LocationMar del Plata / Bs As / Argentina

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.


php
  1. (SELECT FECHA FROM TCARABO WHERE CARABO = 1 AND TIPOMOV = SUBSTRING(D.REFERENCIA FROM 1 FOR 2) AND FOLIO = D.FOLIO AND
  2. FECHA BETWEEN '01.12.2015' AND '19.12.2015')


  • 0




IP.Board spam blocked by CleanTalk.