Foros del Web » Programando para Internet » ASP Clásico »

Error de sintaxis con números decimales

Estas en el tema de Error de sintaxis con números decimales en el foro de ASP Clásico en Foros del Web. Tengo un problema con una web en asp. Esta web tiene un apartado dinámico, se trata de un buscador en el que eligiendo varios parámetros ...
  #1 (permalink)  
Antiguo 21/11/2006, 07:53
Ire
 
Fecha de Ingreso: noviembre-2006
Mensajes: 3
Antigüedad: 17 años, 6 meses
Puntos: 0
Error de sintaxis con números decimales

Tengo un problema con una web en asp.
Esta web tiene un apartado dinámico, se trata de un buscador en el que eligiendo varios parámetros nos muestra unos productos que cumplen las características seleccionadas.
La cosa es que en la base de datos Access hay dos campos que tienen valores decimales con coma por ej: 21,5 (el campo en la base de datos está definido como Número Doble).
Lo que ocurre es que en cuanto selecciono un valor con decimales en el buscador y le doy a Buscar, aparece el siguiente error:



Microsoft OLE DB Provider for ODBC Drivers error '80040e14'



[Microsoft][ODBC Microsoft Access Driver] Syntax error (comma) in query expression 'modelo<>'' and (altura<161 or altura=161) and (altura>145,4 or altura=145,4) and (carrera<250 or carrera=250) and (carrera>63,5 or carrera=63,5)'.



/dinamic/cast/productos/resultado_caract.asp, line 67


En el resto de los casos, si los valores son enteros el buscador funciona bien. ¿Alguien puede ayudarme?
  #2 (permalink)  
Antiguo 21/11/2006, 08:32
Avatar de FiNo  
Fecha de Ingreso: octubre-2004
Ubicación: Costa Rica
Mensajes: 265
Antigüedad: 19 años, 8 meses
Puntos: 1
Hola, podrías poner el código y además deberías utilizar en la sentencia where (altura <= 161)
__________________
3S-CRM
  #3 (permalink)  
Antiguo 21/11/2006, 08:32
Avatar de 3pies
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Desde una destilería
Mensajes: 2.584
Antigüedad: 20 años, 6 meses
Puntos: 144
Una opción es hacer un replace, para que te cambie la coma por un punto:
Código:
numero_a_buscar = replace(numero_a_buscar, ",", ".")
Salu2
  #4 (permalink)  
Antiguo 22/11/2006, 01:54
Ire
 
Fecha de Ingreso: noviembre-2006
Mensajes: 3
Antigüedad: 17 años, 6 meses
Puntos: 0
Gracias por la corrección de <=. Pongo el código a ver si puedes ver qué pasa.

Los campos que tienen valores decimales son "altura" y "fuerza".

<%

fuerzamin=request.Form("fuerzamin")
fuerzamax=request.Form("fuerzamax")
alturamin=request.Form("alturamin")
alturamax=request.Form("alturamax")
dcmin=request.Form("dcmin")
dcmax=request.Form("dcmax")
carreramin=request.Form("carreramin")
carreramax=request.Form("carreramax")

criterios=""

if fuerzamin<>"no" or fuerzamax<>"no" then
if fuerzamin<>"no" and fuerzamax<>"no" then
criterios=criterios & " and (fuerza<"&fuerzamax&" or fuerza="&fuerzamax&") and (fuerza>"&fuerzamin& " or fuerza="&fuerzamin&")"
else
if fuerzamin<>"no" and fuerzamax="no" then
criterios=criterios & " and (fuerza>"&fuerzamin&" or fuerza="&fuerzamin&")"
else
criterios=criterios & " and (fuerza<"&fuerzamax&" or fuerza="&fuerzamax&")"
end if
end if
end if

if alturamin<>"no" or alturamax<>"no" then
if alturamin<>"no" and alturamax<>"no" then
criterios=criterios & " and (altura<"&alturamax& " or altura="&alturamax&") and (altura>"&alturamin&" or altura="&alturamin&")"
else
if alturamin<>"no" and alturamax="no" then
criterios=criterios & " and (altura>"&alturamin&" or altura="&alturamin&")"
else
criterios=criterios & " and (altura<"&alturamax&" or altura="&alturamax&")"
end if
end if
end if


if dcmin<>"no" or dcmax<>"no" then
if dcmin<>"no" and dcmax<>"no" then
criterios=criterios & " and (diametro_c<"&dcmax&" or diametro_c="&dcmax&") and (diametro_c>"&dcmin&" or diametro_c="&dcmin&")"
else
if dcmin<>"no" and dcmax="no" then
criterios=criterios & " and (diametro_c>"&dcmin&" or diametro_c="&dcmin&")"
else
criterios=criterios & " and (diametro_c<"&dcmax&" or diametro_c="&dcmax&")"
end if
end if
end if

if carreramin<>"no" or carreramax<>"no" then
if carreramin<>"no" and carreramax<>"no" then
criterios=criterios & " and (carrera<"&carreramax&" or carrera="&carreramax&") and (carrera>"&carreramin&" or carrera="&carreramin&")"
else
if carreramin<>"no" and carreramax="no" then
criterios=criterios & " and (carrera>"&carreramin&" or carrera="&carreramin&")"
else
criterios=criterios & " and (carrera<"&carreramax&" or carrera="&carreramax&")"
end if
end if
end if

set rstcilindro = Server.CreateObject("ADODB.RecordSet")
consultacilindro="SELECT * FROM cilindros WHERE modelo<>'' "& criterios & " order by modelo"
rstcilindro.Open consultacilindro, objConn, 3,3

%>

Muchas gracias y saludos!
  #5 (permalink)  
Antiguo 22/11/2006, 08:45
 
Fecha de Ingreso: abril-2004
Ubicación: México D.F.
Mensajes: 1.724
Antigüedad: 20 años, 1 mes
Puntos: 4
Cita:
Iniciado por 3pies Ver Mensaje
Código:
numero_a_buscar = replace(numero_a_buscar, ",", ".")
La otra opción es usar la función cdbl(numero_con_comas)
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:09.