Ver Mensaje Individual
  #2 (permalink)  
Antiguo 15/03/2006, 04:46
Avatar de gorka_arai
gorka_arai
 
Fecha de Ingreso: octubre-2005
Mensajes: 281
Antigüedad: 19 años, 6 meses
Puntos: 1
El apóstrofe en SQL "rompe" la consulta. A menudo es usado por usuarios malintencionados que mediante inyección de SQL (SQL Injection, que dicen los más versados...) pretenden reventar bases de datos ajenas.
A menudo aparece en los grupos de noticias una pregunta sobre alguien que tiene problemas a la hora de construir los criterios de una sentencia SQL, ya sea porque en esos criterios se utilizan fechas, o bien porque a lo mejor hay algún campo de texto que contiene una comilla simple como te ocurre a ti (lo cual es interpretado erróneamente por el motor de base de datos como un separador de campos o argumentos).

Me explico. Esta sentencia producirá un error de "error de sintaxis, falta operador..." porque el motor de base de datos cogerá el apóstrofe como un separador de argumentos y la sentecia SQL petará. Observa:
Código:
sDestinatario = "B's Beverages"

SQL = "SELECT * FROM Pedidos " _
& "WHERE Destinatario = '" & sDestinatario & "'"
Para resolverlo debemos sustituir la comilla simple por un par de comillas, así:
Código:
sDestinatario = "B's Beverages"
' reemplazamos las comillas simples por un par 
' de comillas
sDestinatario = Replace(sDestinatario, "'", "''")

SQL = "SELECT * FROM Pedidos " _
& "WHERE Destinatario = '" & sDestinatario & "'"
Por ello te recomiendo que te acostumbres a usar el replace para añadir comillas dobles al apóstrofe (y ya de paso evitas algo de SQL injection!!!)
Aupa.

Última edición por gorka_arai; 15/03/2006 a las 05:49