Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 22-03-2004
dmasson dmasson is offline
Miembro
 
Registrado: ene 2004
Posts: 13
Poder: 0
dmasson Va por buen camino
Thumbs down like no funciona !

Hola gente del foro, estoy desarrollando una aplicación en delphi6 con una DB access '97, en un query pongo una consulta de estre tipo:

SELECT RAZ_CLI,CUI_CLI FROM "D:\DATABASE\CLIENTES.DBF"
WHERE RAZ_CLI like :Razon

y solo devuelve resultado si Razon es exactamente igual a RAZ_CLI, funciona como si el operador fuera =, aclaro que el parámetro se lo paso con un * al final de la cadena

desde ya gracias
Responder Con Cita
  #2  
Antiguo 22-03-2004
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Prueba con % (es el signo de porcentaje).

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #3  
Antiguo 22-03-2004
Jvilomar Jvilomar is offline
Miembro
 
Registrado: mar 2004
Ubicación: Republica Dominicana
Posts: 97
Poder: 21
Jvilomar Va por buen camino
HOLA..

como pasas el parametro? desde un Edit? si es asi prueba esto

with miQuery do
Begin
Close; // cierras el query
with sql do //Propiedad SQL del Query
begin
Clear; //Limpias El Query y añades la Sentencia SQL
add('SELECT RAZ_CLI,CUI_CLI');
add('FROM "D:\DATABASE\CLIENTES.DBF"');
add('WHERE RAZ_CLI like' +#39+'%'+edit1.text+#39+'%');
End;
Open; //Abres El query
End;

espero y te sirva.....
__________________
El conocimiento es un Patrimonio Universal....
Responder Con Cita
  #4  
Antiguo 22-03-2004
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.932
Poder: 27
delphi.com.ar Va por buen camino
Cita:
Empezado por Jvilomar
add('WHERE RAZ_CLI like' +#39+'%'+edit1.text+#39+'%');
Me parece que queda un % fuera de las comillas

Algo similar a eso:
Código:
add('WHERE RAZ_CLI LIKE' + QuotedStr(Edit1.text + '%'));
Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.

Última edición por delphi.com.ar fecha: 22-03-2004 a las 17:20:10.
Responder Con Cita
  #5  
Antiguo 22-03-2004
Jvilomar Jvilomar is offline
Miembro
 
Registrado: mar 2004
Ubicación: Republica Dominicana
Posts: 97
Poder: 21
Jvilomar Va por buen camino
cierto delphi.ar la ultima linea del add esta al reves

esta es la linea correcta....

add('WHERE RAZ_CLI like' +#39+'%'+edit1.text+'%'+#39);

aunque no habia visto esa variable QuotedStr....

Voy a investigar a ver que hace.....
__________________
El conocimiento es un Patrimonio Universal....
Responder Con Cita
  #6  
Antiguo 22-03-2004
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.932
Poder: 27
delphi.com.ar Va por buen camino
Cita:
Empezado por Jvilomar
aunque no habia visto esa variable QuotedStr....
QuotedStr es una función que prepara un string con comillas en los bordes, y si encuentra una comilla dentro de la cadena, la duplica como para que no nos produzca un error del tipo "Unterminated String" o similar.

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 22-03-2004
Jvilomar Jvilomar is offline
Miembro
 
Registrado: mar 2004
Ubicación: Republica Dominicana
Posts: 97
Poder: 21
Jvilomar Va por buen camino
gracias Delphi....

De todos modos ya he visto la ayuda de delphi....

Voy a tener que darle mas a F1
__________________
El conocimiento es un Patrimonio Universal....
Responder Con Cita
  #8  
Antiguo 22-03-2004
Avatar de marto
marto marto is offline
Miembro
 
Registrado: may 2003
Ubicación: Barcelona, Catalunya
Posts: 882
Poder: 21
marto Va por buen camino
Solo aportar un pequeño detalle. Es aconsejable evitar en la medida de lo posible montar el SQL al vuelo. En vez de ello es mejor declarar parametros (tal y como se apuntaba en el primer mensaje) y después asignarles el valor deseado. Creo que es mejor esta técnica por cuatro razones:

1.- Evita agujeros de seguridad mediante ataques de SQL Injection
2.- Si trabajamos con un SGBD decente, la query quedará preparada en el servidor, con lo que si se tiene que ejecutar más de una vez, aunque cambien los parametros, su velocidad será mucho mayor.
3.- A mi juicio el código queda mucho más legible.
4.- La VCL se encarga de escapar aquellos caracteres "extraños" (', ", \, ;, ...) que pueda introducir el usuario.

En el caso que se expone, yo dejaria el código SQL tal y como ha indicado dmasson al principio. En el evento que tiene que abrir la consulta, pondría el siguiente código:
Código:
Query1.Close;
Query1.ParamByName('RAZON').AsString := Edit1.Text + '%';
Query1.Open;
__________________
E pur si muove
Responder Con Cita
  #9  
Antiguo 23-03-2004
dmasson dmasson is offline
Miembro
 
Registrado: ene 2004
Posts: 13
Poder: 0
dmasson Va por buen camino
Smile Funcionó !

Gracias a todos !, funcionaron todas las opciones

saludos
Responder Con Cita
  #10  
Antiguo 23-03-2004
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.932
Poder: 27
delphi.com.ar Va por buen camino
Cita:
Empezado por marto
4.- La VCL se encarga de escapar aquellos caracteres "extraños" (', ", \, ;, ...) que pueda introducir el usuario.
A mi entender, esta parte tambien la maneja el motor. La VCL solo le pasa los valores de los parámetros en forma estandard.

PD: Yo también soy partidario de usar parámetros.
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
Respuesta



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


La franja horaria es GMT +2. Ahora son las 10:47:31.


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