Pregunta: | 887 - PROBLEMAS EN LAS CONSULTAS SQL CON EL APOSTROFE |
Autor: | Javier Salazar |
Al ejecutar una consulta SQL de este tipo en Visual Basic 5DatosCorr.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 armarBase.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... |