La Web del Programador: Comunidad de Programadores
 
    Pregunta:  8907 - PROBLEMAS CON INSERT EN SQL CON LAS COMAS
Autor:  Juan Alberto Hernandez Aco
Hola Amigos.

Tengo un problema a la hora de emplear la intruccion INSERT de SQL, a la hora de que en un campo, deseo insertar un valor que tiene entre sus caracteres una coma por ejemplo:
'Asigno valores a mis variables

clave= "15"
nombre = "PATITO, S.A DE C.V"

'asigno a una variable string X mi cadena SQL

X="INSERT INTO EMPRESAS VALUES(" & clave & ",'" nombre & "';"

Y al ejecutar la insercion me envia el error ya que lo toma como si fueran tres campos, por la coma que hay en el nombre de la empresa.

Como podria hacer para agregar al campo este valor con todo y esa coma?

Agradezco de antemano su ayuda y muchas gracias.

  Respuesta:  Jhonny Fonseca
Tu sentncia esta mal, la sentencia es
"INSERT INTO EMPRESAS VALUES(" & clave & ",'" & nombre & "')"

el problema de la coma (,) ocurre cuando tratas de ingresar un valor numerico con decimales que contiene como separador de decimales una coma (configuracion del sistema), como el valor no lleva comillas que indique que es uno solo, lo toma como separador de campos, el problema que puede ocurrir (que es muy comun) es el de intentar ingresar texto que contiene una comilla ('), lo que pasa es qeu SQL toma la (') como delimitador de cadena, seria algo como esto:

clave= "15"
nombre = "PATITO'S, S.A DE C.V"

"INSERT INTO EMPRESAS VALUES(" & clave & ",'" & nombre & "')"

esto dara este valor:
INSERT INTO EMPRESAS VALUES(15,'PATITO'S, S.A DE C.V')

SQL tomara la palabra PATITO como un campo, luego buscar una coma, pero como lo que sigue es una letra, pensara que es un campo, y simplemente botara un error

para solucionar este problema tienes que remplazar en el texto una 1 por 2, para que no bote error

Espero que te sirva de ayuda

  Respuesta:  José Ariel Limandri
No deberias tener problemas al pasar el campo string entre comillas simples como lo muestra tu ejemplo (aunque le falta un parentesis).
Podes probar pasando este campo entre comillas dobles de la siguiente manera:

clave= "15"
nombre = """PATITO, S.A DE C.V"""

X="INSERT INTO EMPRESAS VALUES(" & clave & ",'" nombre & ")"

OJO: debes asegurarte que el orden de los campos sea Clave y luego nombre, de lo contrio error.Por lo cual siempre es recomendable parar el orden de los campos. EJ:

X="INSERT INTO EMPRESAS (Clave, Nombre) VALUES(" & clave & ",'" nombre & "')"

Y de paso te aseguras que funcione con cualquier DBMS ya que el primer ejemplo no es compatible para cualquier Motor.

Suerte. cualquier cosa maileame