| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
Invitado
|
Publicado: Vie 09 May, 2003 8:23 pm Asunto: comilla simple en SQL |
|
|
Hola.
Me encuentro con que en una tabla Paradox han metido un monton de articulos con comilla simple. Me he dado cuenta tarde, ahora me toca hacer que no puedan teclear este caracter, pero de momento en las sentencias SQL que hago con like me da un error cuando intento:
Select * from Articulos where nombre like 'Jack Daniel'%'.
¿Como puedo meter este caracter (comilla simple) en la sentencia.
Muchas gracias. |
|
| Volver arriba |
|
 |
Alfredo Invitado
|
Publicado: Sab 10 May, 2003 8:16 pm Asunto: Corregir Bd y evitar ocurra de nuevo |
|
|
Haz un pequeño programa para limpiar de comillas la BD y modifica el exe
para que en los eventos OnKeyDown descarte los caracteres que no desees. He intentado realizar la consulya de varias maneras y no he podido. |
|
| Volver arriba |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Lun 12 May, 2003 7:48 am Asunto: |
|
|
Prueba con dos funciones, al menos en BCB 5, que ponen y quitan las comillas; se trata de AnsiQuotedStr y AnsiExtractQuotedStr respectivamente. Si quieres montar una consulta SQL para que te busque un literal con comillas prueba con esto:
| Código: | AnsiString cBuscar = AnsiQuotedStr(Edit1->Tex, CHAR(39)) + "%'";
"SELECT * FROM Articulos WHERE Nombre LIKE '" + cBuscar |
CHAR(39) devuelve la comilla simple (') ya que este es su valor decimal en la tabla de códigos ASCII. En teoría esto montaría una instrucción de este tipo, con el ejemplo de tu consulta:
| Código: | SELECT * FROM Articulos WHERE Nombre LIKE ''Jack Daniel'%'
^^
Esto son dos comillas simples y no una doble |
Si hay que quitar las comillas, la instrucción es similar:
| Código: | cBuscar = AnsiExtractQuotedStr(Edit1->Text, CHAR(39)); |
No lo he probado (el código SQL) porque no s eme ha presentado todavía este caso, pero en prinicpio debería funcionar bien. _________________ Un saludo
Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Ultima edición por Angel el Lun 12 May, 2003 1:09 pm, editado 2 veces |
|
| Volver arriba |
|
 |
Invitado
|
Publicado: Lun 12 May, 2003 12:53 pm Asunto: |
|
|
Pues muchas gracias a los dos, pero me surgen un par de dudas.
En la respuesta de Angel no entiendo las dos comillas simples en la instrucion SQL ya que lo que yo busco es Jack Daniel´s (de hecho aqui se escribe como yo quisiera). Ademas al intentar usar cualquier otro caracter que no es la comilla simple me da error en Paradox.
En fin, seguiremos en ello.
Muchisimas Gracias de todas formas |
|
| Volver arriba |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Lun 12 May, 2003 1:11 pm Asunto: |
|
|
| Cita: | | SELECT * FROM Articulos WHERE Nombre LIKE ''Jack Daniel'%' |
Lo que he puesto con esto es como se vería el código si lo paras con el depurador. Como tienes que "montar" la cedena, al crear dinámicamente una instrucción SQL si hay que meter el contenido de una variable se pone la comilla simple. Por ejemplo, supongamos que tienes puesto Jack Daniel en un elemento Edit:
| Código: | Query1->Close();
Query1->SQL->Clear();
Query1->SQL->Add("SELECT * FROM Articulos WHERE Nombre LIKE '" + Edit1->Text + "%'");
Query1->Open(); |
Esto ejecutaría una sentencia SQL que buscaria todos los nombres que empezaran por Jack Daniel.
Quise decir, con lo de las dos comillas simples, que eso es lo que habría que escribir en la propiedad SQL de un elemento TQuery. _________________ Un saludo
Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA) |
|
| Volver arriba |
|
 |
Marky Master

Registrado: 28 Dic 2002Mensajes: 251Ubicación: Las Rozas - Madrid (España)
|
Publicado: Lun 12 May, 2003 2:53 pm Asunto: |
|
|
Retocando un poco el código de Angel yo haría lo siguiente:
| Código: |
Query1->Close();
Query1->SQL->Clear();
Query1->SQL->Add("SELECT * FROM Articulos WHERE Nombre LIKE \' %" +AnsiExtractQuotedStr(Edit1->Text, CHAR(39))+ "% \' ");
Query1->Open();
|
A ver si así tira mejor la SQL. Suerte! |
|
| Volver arriba |
|
 |
Invitado
|
Publicado: Lun 12 May, 2003 6:40 pm Asunto: |
|
|
Gracias Angel Y Marky.
No entendia lo que deciais y ahora ya lo veo mas claro, bueno, claro del todo.
Gracias!. |
|
| Volver arriba |
|
 |
|