Sentencia SQL - Apóstrofe y Comillas dobles

15/07/2003 - 00:08 por Claudio | Informe spam
Hola a todos:

Quisiera ayuda para solucionar el problema del apóstrofe en sentencia SQL.
Como necesito que en el campo texto se almacene tanto las Comillas dobles(")
como la
comilla simple o apostrofe (') opté por el momento trabajar así:

Update TablaCalle set Descalle=""" & Text2.Text & """ where CodCalle=" &
Text1.Text
- donde Descalle es el campo de texto

Lo que hago en la sentencia es reemplazar la comilla simple por dos comillas
dobles
de esta manera soluciono el problema de la comilla simple, pero me aparece
el problema
de que me arroja error al querrer almacenar texto que incluyan comillas
dobles.

Pense en usar la funcion replace para reemplazar en la caja de texto las
comillas
dobles por dos simples de esta manera:
Text2.Text = Replace(Text2.Text, """, "''")
pero me arroja error

Quisiera saber como solucionan este probema o bien
como puedo hacer para que en un texto me reemplace las comillas dobles
por dos comillas simples

Cualquier Ayuda, será agradecida

Preguntas similare

Leer las respuestas

#1 Ivanhoe
15/07/2003 - 01:51 | Informe spam
Mostrar la cita
dobles(")
Mostrar la cita
"Update TablaCalle set Descalle=" & Chr$(34) & Text2.Text & Chr$(34) & "
where CodCalle=" & Text1.Text

reemplaza 34,...
#2 Leonardo Azpurua
15/07/2003 - 03:46 | Informe spam
"Claudio" escribió en el mensaje
news:
Mostrar la cita
dobles(")
Mostrar la cita
comillas
Mostrar la cita
Hola, Claudio:

Access acepta que utilizas comillas dobles o sencillas para delimitar los
valores de texto en una instrucción SQL. Pero SQL Server y la mayoría de los
otros SGBD que conozco, requieren que para delimitar los valores de texto se
utilice la comilla simple.

Tanto Access como SQL Server interpretan la secuencia de dos comillas
simples dentro de un valor de tipo texto como si se tratara de una sola
comilla (i.e. 'Mc''Donalds' producirá Mc'Donalds).

En algun momento reemplacé las comillas simples por "<&SQUOT&>". Y al
extraer el contenido del campo al momento de la lectura -siempre lo hago a
través de una función que filtra los valores NULL y estandariza los
contenidos antes de pasarlos al programa- reemplazaba <&SQUOT&> por comillas
simples nuevamente. Ese método tiene la ventaja de que es absolutamente
independiente de culquier SGBD que estés utilizando. El problema comenzó a p
resentarse cuando los usuarios empezaron a manipular directamente la BD y se
encontraron con aquel montón de secuencias especiales.

Puedes utilizar una función que convierta un string al formato requerido por
la BD, por ejemplo:

Public Function String2DB(sArg as String) as String
Dim sRetVal as String
sRetVal = "'" & Replace(sArg, "'", "''") & "'"
String2DB = sArg
End Function

Y escribir, por ejemplo:

"UPDATE itemsVenta SET Descripcion = " & String2DB(txDescripcion.Text) & "
WHERE Codigo = " & String2DB(txCodigo.Text)

La ventaja de este método -utilizar funciones para formatear los elementos
que utilizas en las instrucciones SQL- es que según vaya aumentando la
cantidad de proveedores, puedes discriminar, a partir de la propiedad
Provider de la conexión, y devolver un valor aceptable para cada uno de los
diferentes SGBD con los cuales te conectes.

Salud!

Leonardo
MS MVP
#3 Claudio
15/07/2003 - 15:36 | Informe spam
Hola Leonardo:

Gracias por contestar mi inquietud.
Te comento que en Access me arroja error la forma de trabajar
que me pasaste. Si bien me di cuenta que en la ultima línea de la
funcion que me pasaste quisiste poner String2DB = sRetVal

Public Function String2DB(sArg as String) as String
Dim sRetVal as String
sRetVal = "'" & Replace(sArg, "'", "''") & "'"
String2DB = sArg
End Function

Supongamos que Text2.Text = "Mc'Donnals"
en la sentencia SQL me quedaría:
Update TablaCalle set Descalle='Mc''Donnals' where CodCalle=1

y en Access esto arroja error, porque no acepta comillas simples dentro de
la cadena de texto
De todos modos lo que me pasaste me va a servir para SQL Server.

La forma que te pase de trabajar, me permite almacenar cuantas comillas
simples quiera,
pero no me deja que la cadena de texto tenga comillas.
Lo que tal vez necesite es reemplazar "comillas" por dos comillas simples

osea
Text2.Text = Biblioteca Popular "San Martin"
por
Text2.Text = Biblioteca Popular ''San Martin''


voy a ver como lo continuo
de todos modos muchas gracias

saludos
Claudio

"Leonardo Azpurua" <l a z p u r u a g (arroba) c a n t v (punto) n e t>
escribió en el mensaje news:
Mostrar la cita
SQL.
Mostrar la cita
aparece
Mostrar la cita
los
Mostrar la cita
se
Mostrar la cita
comillas
Mostrar la cita
p
Mostrar la cita
se
Mostrar la cita
por
Mostrar la cita
los
Mostrar la cita
#4 Claudio
15/07/2003 - 15:47 | Informe spam
Hola Ivanhoe:

Creo que me hice un merengue con tantas comillas.
La forma que me pasaste como también la que estoy utilizando, que
aparece en el primer mensaje permite almacenar comillas simples.

Lo que necesito ademas es que la cadena me pueda almacenar comillas("")
osea
Text2.Text = Biblioteca Popular "San Martin" (error - no acepta comillas)
por
Text2.Text = Biblioteca Popular ''San Martin'' (ok, pero debería reemplazar
comillas por dos comillas simples)

por lo que mi sentencia SQL necesitaria poder tolerar no solo las comillas
simples como vos bien me indicaste
sino tambien las comillas

Si tenes alguna nueva idea te lo agradecería

Muchas Gracias
saludos
claudio



"Ivanhoe" escribió en el mensaje
news:#
Mostrar la cita
SQL.
Mostrar la cita
#5 Leonardo Azpurua
15/07/2003 - 16:38 | Informe spam
Hola, Claudio:

Es extraño lo que me cuentas. Acabo de escribir en la ventana de ejecución
inmediata esto (usando DAO 3.6 contra Access 2K):

dbHandle.Execute "UPDATE itemsInventario SET Descripcion = 'Zapatos Modelo
Mc''Donalds talla 10' WHERE Codigo = '240124'"

Y no tuve ningún problema.

Escribiéndote, pensé que a lo mejor el problema tenía que ver con usar DAO
en vez de ADO, de manera que lo probé contra una conexión ADO 2.5 (siempre
contra Acc2K) y tambien funcionó.

Salud!

Leonardo
MS MVP


"Claudio" escribió en el mensaje
news:#
Mostrar la cita
&
Mostrar la cita
comillas
Mostrar la cita
las
Mostrar la cita
los
Mostrar la cita
texto
Mostrar la cita
a
Mostrar la cita
a
Mostrar la cita
y
Mostrar la cita
"
Mostrar la cita
elementos
Mostrar la cita
Ads by Google
Search Busqueda sugerida