Foros del Web » Programando para Internet » ASP Clásico »

Los apostofres (')

Estas en el tema de Los apostofres (') en el foro de ASP Clásico en Foros del Web. Hola, diganme hay alguna forma de pasar las palabras donde haya apostofre (') en las sentencias sql. Sobre todo en INSERT ans UPDATE por ejemplo: ...
  #1 (permalink)  
Antiguo 25/03/2004, 09:15
Avatar de hipopo  
Fecha de Ingreso: marzo-2004
Ubicación: Lima
Mensajes: 163
Antigüedad: 21 años, 1 mes
Puntos: 0
Los apostofres (')

Hola, diganme hay alguna forma de pasar las palabras donde haya apostofre (') en las sentencias sql. Sobre todo en INSERT ans UPDATE

por ejemplo:

Código:
nota="I don't speak french"
INSERT INTO test(notas) values('" & nota & "')"
eso me arroja error por el apostofre

Alguien sabe como hacerlo en ASP, o es que debo usar otra alternativa. Como lo hacen en este foro por ejemplo.
Saludos
  #2 (permalink)  
Antiguo 25/03/2004, 09:26
Avatar de Saruman  
Fecha de Ingreso: mayo-2003
Ubicación: Panama city, Panama, Panama
Mensajes: 1.154
Antigüedad: 22 años
Puntos: 5
bueno, lo que yo hago es esto:

Function Apostrofe(Text,SW)
if Text <> "" or Text <> NULL then
if SW = 1 then
Apostrofe = replace(Text, "'", "apostrofe")
else
Apostrofe = replace(Text, "apostrofe", "'")
end if
else
Apostrofe = ""
end if
end function


nota = "hola's"
INSERT INTO test(notas) values('" & Apostrofe(nota,1) & "')"

esto es tanto para update como insert.

para seleccionar entonces

sql = "select * from test"

y cuando lo voy a imprimir o guardar en una variable lo formateo nuevamente, pero a la inversa

nota = Apostrofe(rs("notas"),0)
response.write(nota)

intentalo, te debe funcionar... es lo que yo uso.... hay otra cosa pero no la he probado.... te comento si me funciona lo que investiue

saludos
__________________
Saruman

One Ring to rule them all, One Ring to find them, One Ring to bring them all and in the darkness bind them.
  #3 (permalink)  
Antiguo 25/03/2004, 09:42
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 23 años, 2 meses
Puntos: 50
Solo un comentario..

No sería más fácil hacerlo directamente para ahorrarnos llamar la función..??

Ejemplo.

Cita:
nota=Replace("I don't speak french","'","apostrofe")
INSERT INTO test(notas) values('" & nota & "')"
y para imprimirlo..

Cita:
nota = Replace((rs("notas"),"apostrofe","'")
response.write(nota)
Pero bueno... ya depende de cada uno como lo desea hacer.

Saludos
__________________
Nadie roba nada ya que en la vida todo se paga . . .

Exentrit - Soluciones SharePoint & Net
  #4 (permalink)  
Antiguo 25/03/2004, 09:47
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 2 meses
Puntos: 535


Saruman, no te compliques la vida con tanto código!
Con un simple replace de un apóstrofe por dos de ellos seguidos es suficiente.


Código:
nota = "hola's"
nota = replace(nota, "'", "''")
INSERT INTO test(notas) values('" & nota & "')"

... y listo. El string hola's se guarda así en la BD (con el apóstrofe) y te evitás de hacer el replace al mostrar los contenidos (y además ahorrás espacio, porque no es lo mismo guardar 500 apóstrofes en un registro que 500 veces la palabra APOSTROFE )
  #5 (permalink)  
Antiguo 25/03/2004, 09:48
 
Fecha de Ingreso: enero-2004
Mensajes: 154
Antigüedad: 21 años, 3 meses
Puntos: 0
Para gestionar los datos que vas a introducir en B.D. debemos saber en que B.D. trabajamos.

Por ejemplo en SQL Server la solución es poner donde hay 1 apostrofe 2:
replace(cadena," ' "," '' ")
Porque SQL Server utiliza como comando de escape el ''(dos apostrofes, no comillas) para representar el apostrofe.
Si lo haces así en B.D. lo tendrás tal cual "I don't speak french"
con lo que al hacer consultas ya no tienes que hacer nada, obtienes la cadena que quieres.

Si es otro motor de B.D. ya depende de que caracter interprete la B.D.

Esto es equivalente a lo que te comentan, solo que el trabajo se lo pasas a la base de datos, asi tu con pasarle el texto con el debido formato ya no tienes que hacer nada al recogerlo.

Saludos!!!!
  #6 (permalink)  
Antiguo 25/03/2004, 09:49
Avatar de hipopo  
Fecha de Ingreso: marzo-2004
Ubicación: Lima
Mensajes: 163
Antigüedad: 21 años, 1 mes
Puntos: 0
Sonrisa yehh

OK GRACIAS.. simplemente reemplaze (') por (´)

saludos
  #7 (permalink)  
Antiguo 25/03/2004, 09:56
Avatar de Saruman  
Fecha de Ingreso: mayo-2003
Ubicación: Panama city, Panama, Panama
Mensajes: 1.154
Antigüedad: 22 años
Puntos: 5
ok... me piden ayudan y la rechazan.... ta bien pues... cool :-p
__________________
Saruman

One Ring to rule them all, One Ring to find them, One Ring to bring them all and in the darkness bind them.
  #8 (permalink)  
Antiguo 25/03/2004, 10:07
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 2 meses
Puntos: 535
Re: yehh

Cita:
ok... me piden ayudan y la rechazan.... ta bien pues... cool

Yo no veo en ningún lado que hipopo te esté pidiendo a vos la ayuda. Vos accediste a responderle porque quisiste hacerlo.

Además hipopo no rechazó la ayuda de nadie, sólo buscó una solución que a él le parece más cómoda (*)
La tuya es una de las varias alternativas posibles. Si te sentís cómodo haciéndolo así, seguí en ese camino. Pero.. por qué no mostrar otras maneras de hacer la misma cosa y dejar que el otro decida cuál escoger?



(*) Que no la comparto para nada porque para mi lo ideal es escapar el caracter como ivan_noe comenta. Además, luego le puede traer problemas al recuperar información. Porque si a mi me piden de buscar O'Connor lo voy a buscar así... no se me ocurriría de buscar O´Connor
  #9 (permalink)  
Antiguo 25/03/2004, 10:11
Avatar de Saruman  
Fecha de Ingreso: mayo-2003
Ubicación: Panama city, Panama, Panama
Mensajes: 1.154
Antigüedad: 22 años
Puntos: 5
__________________
Saruman

One Ring to rule them all, One Ring to find them, One Ring to bring them all and in the darkness bind them.
  #10 (permalink)  
Antiguo 25/03/2004, 11:57
Avatar de hipopo  
Fecha de Ingreso: marzo-2004
Ubicación: Lima
Mensajes: 163
Antigüedad: 21 años, 1 mes
Puntos: 0
Sonrisa de verdad .. gracias ya lo arregle

De verdad ya lo arregle.. solo que NO sabia de la existencia de la funcion REPLACE.

Con eso solo hise reemplaze ' por ´.
Que es parecido pero no molesta a nadie..

Gracias a todos ..
son lo maximo por ayudarnos o cool..
  #11 (permalink)  
Antiguo 25/03/2004, 12:01
Avatar de hipopo  
Fecha de Ingreso: marzo-2004
Ubicación: Lima
Mensajes: 163
Antigüedad: 21 años, 1 mes
Puntos: 0
oh oh

oh oh .. tienes razon dazuaga .. en los queries voy a tener problemas...



...voy a arreglarlo de inmediato

Por cierto, la BD es Access
Gracias
  #12 (permalink)  
Antiguo 25/03/2004, 12:17
 
Fecha de Ingreso: enero-2004
Mensajes: 154
Antigüedad: 21 años, 3 meses
Puntos: 0
dazuaga tiene razon, hay que exponer posibilidades para a partir de ellas decidirse por la mejor, que casi siempre es la más sencilla.

Saludos!!!!
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

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 12:44.