La Web del Programador: Comunidad de Programadores
 
    Pregunta:  887 - PROBLEMAS EN LAS CONSULTAS SQL CON EL APOSTROFE
Autor:  Javier Salazar
Al ejecutar una consulta SQL de este tipo en Visual Basic 5
DatosCorr.Execute "insert into actas (legajo, nombre, apellido, mesa, turno) values (´" & RecordsetA("legajo") & "´, ´" & RecordsetB("nombres") & "´, ´" & RecordsetB("apellido") & "´, ´" & Aux_Mesa & "´, ´" & TurnoExamen & "´)"
(Los recordset son resultados de otra consultas SQL).

Me encontre con el problema de que en un caso en particular, cuando el RecordstB("Apellido") devuelve el valor "D´Archary" el sistema da un error de sintaxis en la consulta.

Supongo que este error surge de que en la sintaxis de la consulta INSERT INTO se especifica que las comillas simples (´) son delimitadores de strings. El debug muestra el dato como ´D´Archary´.

Si esto es así irremediablemente, me gustaría saber si hay otra sintaxis posible para este tipo de consultas, ya que en los libros que he consultado no está contemplada la posibilidad de un apostrofe dentro de los datos.


  Respuesta:  Richard Zegarra
Esto es para todo texto en la cual puedan ir comilas dobles ( " ) y/o comillas simples (') :

Sql = " ... Set Texto=" & Chr(34) & Replace(Trim(Variable), Chr(34), "'") & Chr(34) & " Where .... "

  Respuesta:  Daniel Pro
Una solución es sustituir la comilla simple por dos dobles comillas.

Ejm:

Ado.Execute "Insert into personas (apellidos) Values (""" & TxtApellidos & """)

Despues del parentesis usualmente se coloca comilla simples, en vez de usar comilla simple coloquen alli dos comillas dobles por cada simple que solian colocar como lo indica el ejemplo y dos comillas dobles al final para cerrar las dos dobles primeras.

  Respuesta:  Jorge Campos
debes remplazar el apostrofe por doble apostrofe, el SQL automaticamente convierte el doble apostrode en uno solo, asi no te da error de SQL

p.ej.

insert into tabla (nombre) values ('D''Archary')
y el sql insertara D'Archary.

Buscando en internet encontre esa respuesta y funciono, ojala y sirva

  Respuesta:  Alvaro
Hola amigo.

Respecto a tu pregunta, es la comilla simple la cual arroja ese error de sintaxis en SQL. No pusiste tu casilla electrónica, por lo que no puedo enviarte una función que tengo que resuelve fácilmente ese problemilla. Si la deseas, escríbeme con tu petición, con gusto te la enviaré.

A propósito, esta respuesta fue creada en la siguiente fecha: 17-04-2001

Saludos amigo

  Respuesta:  Benaset Nasroma Molin
Si quieres utilizar variables en consultas SQL que tienen un apóstrofe, al crear la sentencia utiliza comillas dobles dos veces, así traga.Ej

Variable = "A'lfas del Pi"
SQL = "SELECT campo FROM TABLA WHERE CAMPO = """ & Variable & """"

Verás como funciona sin necesidad de cambiar ingún caracter por otro

  Respuesta:  Francisco Hernandez
Una manera muy sencilla de hacerlo es hacer un Replace al simbolo y cambiarlo por otro que seguro que no se usa, luego al capturarlo haces la operación contraria.
la insercion seria la siguiente

DatosCorr.Execute "insert into actas (legajo, nombre, apellido, mesa, turno) values (´" & RecordsetA("legajo") & "´, ´" & RecordsetB("nombres") & "´, ´" & _
REPLACE(RecordsetB("apellido"),"´","#") & "´, ´" & Aux_Mesa & "´, ´" & TurnoExamen & "´)"
esto nos evitaria el problema de la comilla al grabar en SQL

  Respuesta:  Javier Salazar
El tema pasa que VB toma a la comilla simple (´) como Chr(39), por lo tanto se debe armar el string de la consulta con Chr(34)
ejemplo:

De lo que se tenía antes

Base.execute "insert into Tabla (campo1, campo2) values (´ " & variable1 & " ´, ´ " & variable2 & " ´)"
se debe armar
Base.execute "insert into Tabla (campo1, campo2) values (" & chr(34) & variable1 & chr(34) & ", " & chr(34) & variable2 & chr(34) & ")"
De esta manera se me ha solucionado el problema...