Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 17-08-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.141
Poder: 36
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Abrá tantas maneras como la imaginación de cada quién, ahí va una que creo puede servir:

Código Delphi [-]
  ADOQ.SQL.Text := 'select * from SANCIONES where NOMBRE like %'+ edit1.Text +'%';
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #2  
Antiguo 18-08-2006
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.740
Poder: 26
ContraVeneno Va por buen camino
Cita:
Empezado por dec
Hola,

Abrá tantas maneras como la imaginación de cada quién, ahí va una que creo puede servir:

Código Delphi [-] ADOQ.SQL.Text := 'select * from SANCIONES where NOMBRE like %'+ edit1.Text +'%';
Mmmm, creo que eso te marcaría un error... debería ser:
Código Delphi [-]
  ADOQ.SQL.Text := 'select * from SANCIONES where NOMBRE like ''%'+ edit1.Text +'%''';
__________________

Responder Con Cita
  #3  
Antiguo 18-08-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.141
Poder: 36
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

No sé yo... en las pruebas que hize (visualizar la cadena de la consulta para ver si todo estaba en su sitio) funcionó, pero, oyes, ¡nadie es perfecto!
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #4  
Antiguo 18-08-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 31
Lepe Va por buen camino
y yo... por incordiar un poco más... pregunto: ¿no es engorroso usar ese método de tantas comillas? ¿no os produce errores "tontos" en ejecución?

Yo prefiero:
Código Delphi [-]
ADOQ.SQL.Text := 'select * from SANCIONES where NOMBRE like ' +QuotedStr('%'+ edit1.Text +'%');

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #5  
Antiguo 18-08-2006
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.740
Poder: 26
ContraVeneno Va por buen camino
una vez que te acostumbras, no tiene porque pasarte ese tipo de errores. Para mi es mucho más facill poner ' '' '' ' que poner quotedstr. 6 caracteres son más rápidos de escribir que 8

__________________

Responder Con Cita
  #6  
Antiguo 19-08-2006
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.964
Poder: 29
delphi.com.ar Va camino a la fama
Solo un detalle:

Si haces una búsqueda sobre un campo de texto (varchar, text...) utilizando el comodín al final del texto, el motor podrá responder la consulta utilizando el índice. Pero si pones dos comodines al estilo: %texto%, el motor no podrá utilizar el índice, por lo tanto, si la tabla es muy extensa puede ser un proceso algo pesado y largo.

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #7  
Antiguo 19-08-2006
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.964
Poder: 29
delphi.com.ar Va camino a la fama
Cita:
Empezado por ContraVeneno
una vez que te acostumbras, no tiene porque pasarte ese tipo de errores. Para mi es mucho más facill poner ' '' '' ' que poner quotedstr. 6 caracteres son más rápidos de escribir que 8
Funciones como QuotedStr no solo evitan errores de programación, sino que también evita errores en tiempo de ejecución si el usuario utiliza una comilla en el texto ingresado. Además deja nuestro código inseguro a malintencionados que utilicen métodos de inyección de SQL.

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #8  
Antiguo 19-08-2006
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.740
Poder: 26
ContraVeneno Va por buen camino
Muy cierto, es por eso que siempre utilizo la regla #34672 del decálogo de programación:

Controla todo lo que puedas controlar con los controles

Esto es, evitando que se escriba el apóstrofe, o más sencillo aún, solo permitir al control adminitir el número de caracteres definidos por el campo de búqueda.

Pero si comprendo perfectamente como la función qutoedstr te puede evitar problemas de inyección, cosa que no había reflexionado hasta este momento.
__________________

Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Problema con consulta not in (select ....) VRO Firebird e Interbase 12 03-10-2005 18:54:05
Problema conuna consulta select...not in (select ...) VRO Firebird e Interbase 2 11-08-2005 08:56:35
5 select de 5 tablas diferentes en un select solo sakuragi SQL 6 15-06-2005 18:57:06
Consulta con Sub-select !!! isc_hilda SQL 2 21-05-2004 05:22:05
Select (Consulta) WaRRanT MySQL 3 19-02-2004 15:13:58


La franja horaria es GMT +2. Ahora son las 04:43:16.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi