Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

comilla simple en SQL

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: comilla simple en SQL Responder citando

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
Mensaje    Asunto: Corregir Bd y evitar ocurra de nuevo Responder citando

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
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

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
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Gracias Angel Y Marky.
No entendia lo que deciais y ahora ya lo veo mas claro, bueno, claro del todo.
Gracias!.
Volver arriba
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.