Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Problema con consulta SQL desde VB

Estas en el tema de Problema con consulta SQL desde VB en el foro de Visual Basic clásico en Foros del Web. Bueno, voy a tratar de explicar Estube trabajando con una aplicacion en la que hacia una consulta a una base de datos Access, la consulta ...
  #1 (permalink)  
Antiguo 28/05/2005, 22:18
Avatar de marcos1979  
Fecha de Ingreso: abril-2004
Ubicación: 62º 06' 18" O / 33º 07' 47" S
Mensajes: 331
Antigüedad: 20 años
Puntos: 1
Problema con consulta SQL desde VB

Bueno, voy a tratar de explicar
Estube trabajando con una aplicacion en la que hacia una consulta a una base de datos Access, la consulta era algo asi:
SQL = "SELECT * FROM clientes WHERE total > " & txtDeuda.text

Originalmente, el contenido del textbox era un numero formateado con la coma (,) como separador de decimales y todo andaba bien.
Por cuestiones que no vienen al caso tube que formatear la Pc (previa copia de seguridad del proyecto) y ahora esa consulta me da error:

Error de sintaxis (coma) en la exprecion de consulta 'total > 3,3'

(suponiendo que el contenido del textbox era 3,3)
Si paso ese numero al formato con punto (3.3) no me da el error pero quiero que vulva a nadar como antes!!!
Alguien sabe si hay alguna opcion de configuracion para cambiar esto???
La configuracion regional de win esta con coma como separador decimal
La verdad que no se a que se puede deber eso, espero que alguien me de una mano o alguna idea.
Gracias
  #2 (permalink)  
Antiguo 30/05/2005, 02:10
 
Fecha de Ingreso: mayo-2005
Mensajes: 93
Antigüedad: 19 años
Puntos: 1
Ah!!!! el maravilloso mundo de vb que el formateo de los número es diferente al formateo de los número de tu PC o bbdd. Qué bonito es!!!!!

Tienes que cambiarlo ya que access no acepta la coma como separador decimal a no ser que tenga una versión de access en inglés, que entonces, el motor propio de la base de datos te hace el cambio directamente.

NO tiene nada que ver con lo de la configuración regional (o por lo menos no he encontrado nada al respecto), sino con el motor de base de datos que utilizas, mejor dicho, en el idioma del motor de la base de datos.

Tengo comprobado que esas sentencias con el Access en inglés, funciona correctamente, ya que código que realicé en EEUU me dejó de funcionar cuando volví de nuevo a casa.

No sé porqué es, pero te recomiendo que te generes una bonita función que te formatee cualquier tipo de número, y así quitarte este problema.
  #3 (permalink)  
Antiguo 30/05/2005, 07:49
 
Fecha de Ingreso: mayo-2005
Mensajes: 14
Antigüedad: 19 años
Puntos: 0
probaste de cambiarlo de la configuracion regiional de tu pc?? cambia el . por la , y viceversa
  #4 (permalink)  
Antiguo 30/05/2005, 11:26
Avatar de marcos1979  
Fecha de Ingreso: abril-2004
Ubicación: 62º 06' 18" O / 33º 07' 47" S
Mensajes: 331
Antigüedad: 20 años
Puntos: 1
Gracias Zabait, leyendo y releyendo en la ayuda de Access dice que debe usarse el punto como separador, y deduzco que antes de formatear la pc tenia istalado el motor en ingles... es lo unico que se me ocurre, sino por que andaba bien con la coma????
Entonces decis que si formateo el Nº con el punto como separador decimal SIEMPRE andará bien sin importar que motor esté instalado (idioma)??? Eso fue lo que hice pero me gustaria estar seguro que va a andar sin importar el idioma.
Gracias otra vez!!!
  #5 (permalink)  
Antiguo 30/05/2005, 11:41
Avatar de Developer9
(Desactivado)
 
Fecha de Ingreso: abril-2005
Ubicación: Mi Ecuador del alma
Mensajes: 4.196
Antigüedad: 19 años
Puntos: 47
Eje!!!! que tal compañeros... Yo tambien hace algun tiempo tuve ese problema, mi aplicacion funcionaba bien en mi casa, la instale en otro lado (access ya estaba instalado) y la base me arrojó el mismo error. Volví a casa, le cambie el punto por la coma... pero ya no funcionaba en mi casa, pero en el otro sitio ahora si funcionó. Que tragedia no :(

Siempre va a depender de que motor de access se encuentre instalado.
  #6 (permalink)  
Antiguo 30/05/2005, 12:17
 
Fecha de Ingreso: mayo-2005
Mensajes: 93
Antigüedad: 19 años
Puntos: 1
Cita:
Iniciado por marcos1979
Gracias Zabait, leyendo y releyendo en la ayuda de Access dice que debe usarse el punto como separador, y deduzco que antes de formatear la pc tenia istalado el motor en ingles... es lo unico que se me ocurre, sino por que andaba bien con la coma????
Entonces decis que si formateo el Nº con el punto como separador decimal SIEMPRE andará bien sin importar que motor esté instalado (idioma)??? Eso fue lo que hice pero me gustaria estar seguro que va a andar sin importar el idioma.
Gracias otra vez!!!
Funcionará bien!!!! Te lo aseguro, por eso te digo que diseñes una función que cambie directamente todo ello.

La que yo tengo cambia el número a string y trata todo el número hasta dejarlo limpio de puntos y comas, y finalmente poniendo el separador decimal correspondiente (".").

La hice así, ya que no me funcionaba el replace ni el formatnumber ni el format correctamente por el problema de versiones en algunos PCs, y no sé muy bien el porqué.

Este es el típico error que nadie sabe realmente porqué es pero que se soluciona (muchas veces solo) y lo peor de todo es que tampoco sabes porqué (maldito Guillermo Puertas... siempre hace lo mismo, y nosotros preocupados por controlar y localizar todos los errores).

¿Porqué no afecta la configuracion regional y no es la solución adecuada????Creo que esta configuración no afecta a la configuración del motor de la base de datos, ya que los motores no realizan formateo alguno, sino que esperan unos tipos de datos según unas directivas y manejan dichos datos, pero no los formatean, que es para lo que sirven estos parámetros.

De todas formas, esto es un conocimiento del todo empírico,es decir, de mi experiencia trabajando en vb con bbdd en diferentes idiomas. Si estoy equivocado, que me lo expliquen porque realmente no he encontrado caso alguno en el que no funcione el punto como separador decimal.

Espero haberte sido de ayuda, aunque no tengo muy claro que lo haya sido. Igual simplemente nos hemos reducido a "mal de muchos... consuelo de tontos", no???
  #7 (permalink)  
Antiguo 30/05/2005, 14:35
Avatar de marcos1979  
Fecha de Ingreso: abril-2004
Ubicación: 62º 06' 18" O / 33º 07' 47" S
Mensajes: 331
Antigüedad: 20 años
Puntos: 1
jaja, la funcion que hice es como la que describis y anda bien, solo queria estar seguro que funcionaria sin importar la version del motor... pero por lo que veo "seguro" no existe
Será cuestion de suerte... no se
Gracias!!!
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 00:25.