Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   busqueda sql like (https://www.clubdelphi.com/foros/showthread.php?t=49900)

douglas 02-11-2007 20:13:43

busqueda sql like
 
buenas chicos, perdon por seguir molestando aqui, mi duda es ahora, bueno se usar like, y me estrucutre el siguiente codigo
Código Delphi [-]
procedure TForm7.Button1Click(Sender: TObject);

begin
     adoquery1.Close;
     adoquery1.SQL.Add('select * from merca ');
     adoquery1.Open;
     adoquery1.SQL.Add(' where descripcion like %cosa%');
     adoquery1.Parameters.ParamByName('cosa').Value:=edit1.Text;
end;

supuestamente para que me busque lo que diga en el edit1, pero no me funciona, me tira un error, de ea acess violation. perdon de antemano les agradezco todo tipo de ayudita

Caral 02-11-2007 20:17:16

Hola
Y asi?
Código Delphi [-]
procedure TForm7.Button1Click(Sender: TObject);

begin
     adoquery1.Close;
     adoquery1.SQL.Add('select * from merca ');
     adoquery1.Open;
     adoquery1.SQL.Add(' where descripcion like :cosa');
     adoquery1.Parameters.ParamByName('cosa').Value:=edit1.Text;
end;
Saludos

Caral 02-11-2007 20:22:01

Hola
Perdon, esta rapidez cuesta.
hay otro error.
Código Delphi [-]
procedure TForm7.Button1Click(Sender: TObject);

begin
     adoquery1.Close;
     adoquery1.SQL.Add('select * from merca ');
     adoquery1.SQL.Add(' where descripcion like :cosa');
     adoquery1.Open;
     adoquery1.Parameters.ParamByName('cosa').Value:=edit1.Text;
end;
Saludos

enecumene 02-11-2007 20:25:12

Hola Caral, no crees que el parambyname debe ir antes del open? digo eso creo yo.:)

Saludos

douglas 02-11-2007 20:32:50

perdon pero me da un error de expresion de la consulta like
y me dice select * from merca

Caral 02-11-2007 20:33:54

Hola
Hoy estas quisquilloso.:D:D y ademas me pisas los talones:D;)
Amigo, da igual, Delphi lo entiende antes o despues, Pruebalo y veras, es curioso, pero asi es.:)
Saludos

enecumene 02-11-2007 20:35:03

Cita:

Empezado por Caral (Mensaje 243095)
Hola
Hoy estas quisquilloso.:D:D y ademas me pisas los talones:D;)
Amigo, da igual, Delphi lo entiende antes o despues, Pruebalo y veras, es curioso, pero asi es.:)
Saludos

Mis Disculpas:D:D

Caral 02-11-2007 20:37:12

Hola
Perdona pero hoy estoy muy lento.
Por supuesto que te va a dar error.
Como pretendes que todo el contenido sea igual al edit.
Código Delphi [-]
Select * from
Lo logico es que sea igual a un campo:
Código Delphi [-]
Select TuCampo From TuTabla
No se, me imagino, verdad?
Saludos

enecumene 02-11-2007 20:37:12

Cita:

Empezado por douglas (Mensaje 243094)
perdon pero me da un error de expresion de la consulta like
y me dice select * from merca

podrias especificar un poco mas cual es el error, o sea, copia y pega aqui el error que te da.

SAludos.

enecumene 02-11-2007 20:38:54

Cita:

Empezado por Caral (Mensaje 243097)
Hola
Perdona pero hoy estoy muy lento.

Diantres lento donde? estas como flash!!!:D:D:D

Caral 02-11-2007 20:40:04

Hola
Para nada amigo, es una broma lo de quisquilloso:), lo que analizaste es totalmente logico, en algun momento se debatió ese mismo punto en un hilo.
Saludos

douglas 02-11-2007 20:45:27

este es el codigo que tengo, ahora no me da el error pero no me funciona no me muiestra nada, ademas tomando en cuenta lo que comento caral, que el select * from merca no esta mal, si se lo quitamos solamente mostrar en el grid el campo descripcion, lo acabo de comprobar, el codigo es este, pero igual y el grid solamente carga el nombre de los campos, pero no lo almacenado.
Código Delphi [-]
procedure TForm6.Button2Click(Sender: TObject);
begin

     adoquery1.Close;
     adoquery1.SQL.Clear;
     adoquery1.SQL.Add('select descripcion from merca ');
     adoquery1.SQL.Add(' where descripcion like :cosa');
     adoquery1.Open;
     adoquery1.Parameters.ParamByName('cosa').Value:=edit1.Text;
end;

ahora si le dejamos el select * from merca me muestra todos los campos de la tabla que es lo que necesito, pero igual sin los valores almacenados, el codigo esta asi

Código Delphi [-]
procedure TForm6.Button2Click(Sender: TObject);
begin

     adoquery1.Close;
     adoquery1.SQL.Clear;
     adoquery1.SQL.Add('select * from merca ');
     adoquery1.SQL.Add(' where descripcion like :cosa');
     adoquery1.Open;
     adoquery1.Parameters.ParamByName('cosa').Value:=edit1.Text;
end;

perdon que los ponga en molestias chicos, pero basicamente lo que necesito es buscar un producto, que que sea locaseinsensitive o algo asi o lopartialkey, como puedo utilizar esto para buscar en mi base de datos.

perdon y gracias de ante mano chicos

Caral 02-11-2007 20:49:40

Hola
Cortemos esto y probemos otra vez.
Código Delphi [-]
procedure TForm6.Button2Click(Sender: TObject);
begin

     adoquery1.Close;
     adoquery1.SQL.Clear;
     adoquery1.SQL.Add('select * from merca ');
     adoquery1.SQL.Add(' where descripcion like' + Edit1.text);
     adoquery1.Open;
end;
A ver que pasa.
Saludos

Caral 02-11-2007 20:51:53

Hola
Voy a comentar algo adicional, que me parece interesante.
Value= descripcion?
Normalmente la descripcion es String
Osea:
AsString en vez de value.
No se, digo yo.
Saludos

enecumene 02-11-2007 20:52:05

Muy buena opcion Caral.

douglas 02-11-2007 20:56:38

[IMG]file:///C:/DOCUME%7E1/douglas/CONFIG%7E1/Temp/moz-screenshot-1.jpg[/IMG][IMG]file:///C:/DOCUME%7E1/douglas/CONFIG%7E1/Temp/moz-screenshot-2.jpg[/IMG]me da el siguiente erro con ese codigo

error de sintaxis (falta operador) en la expresionta de consultas liketintas,
al menos la palabra tintas salio del edit1.text que fue la palabra que escribir en el edit

enecumene 02-11-2007 20:57:50

Código Delphi [-]
procedure TForm6.Button2Click(Sender: TObject);
begin

     adoquery1.Close;
     adoquery1.SQL.Clear;
     adoquery1.SQL.Add('select * from merca ');
     adoquery1.SQL.Add(' where descripcion like '+Quotedstr(Edit1.text)+';
     adoquery1.Open;
end;

douglas 02-11-2007 20:59:31

el valor tintas no tiene parametros predeterminados es otro error con el codigo asi

Código Delphi [-]
procedure TForm6.Button2Click(Sender: TObject);
begin

     adoquery1.Close;
     adoquery1.SQL.Clear;
     adoquery1.SQL.Add('select * from merca ');
     adoquery1.SQL.Add(' where descripcion like ' + Edit1.text);
     adoquery1.Open;
end;

Caral 02-11-2007 21:01:58

Hola
Access, como me gusta, te pone interesantes retos.
Cita:

error de sintaxis (falta operador)
Código Delphi [-]
procedure TForm6.Button2Click(Sender: TObject);
begin

     adoquery1.Close;
     adoquery1.SQL.Clear;
     adoquery1.SQL.Add('select * from merca ');
     adoquery1.SQL.Add(' where descripcion like '''+Edit1.Text+ '''');
     adoquery1.Open;
end;
Saludos

douglas 02-11-2007 21:03:19

perdon chicos, me muestra los campos, pero no me muestra lo valores que deberian estar en los campos, que puedo hacer chicos, perdon la insistencia

enecumene 02-11-2007 21:05:15

Hombre, por que no intentas con filtros?.

Saludos.

Caral 02-11-2007 21:17:12

Hola
Código Delphi [-]
procedure TForm6.Button2Click(Sender: TObject);
begin
     adoquery1.Close;
     adoquery1.SQL.Text:= 'select * from merca ';
     adoquery1.SQL.Add('WHERE (((merca.descripcion)="'+Edit1.Text+'"))');
     adoquery1.Open;
end;
Saludos

enecumene 02-11-2007 21:20:38

Excelente Caral ni lo hubiera pensado.;)

Saludos.

douglas 02-11-2007 21:25:26

perdon chicos, pero sigue sin mostrarme nada, perdon como es eso de los filtros, me podrias explciar gracias

Caral 02-11-2007 21:26:28

Hola
Gracias enecumene, viniendo de ti es un alago.
En el wiki del club he puesto varios ejemplos de codigo (sencillo), entre ellos siempre recomiendo: Uso de Combobox y Filtros, por que es la duda mas constante.
Como filtrar y como colocar la informacion en determinado componente, hay otros tambien interesantes.
Saludos

douglas 02-11-2007 21:30:41

gracias caral, examinare el wiki y te cuento como me va, enserio gracias a los dos por las grandes ayudas que me han brindado en todo momento, son super personas, gracias, siempre comento al final como lo logre hacer

enecumene 02-11-2007 21:34:17

filtros:

Código Delphi [-]
var
   Filtro : String;
begin
   If (Edit1.Text <> '') then
   begin
      Tabla1.Filtered := False;
       Filtro := 'campo Like ''*' +Edit1.Text+ '*''';
      Tabla1.Filter := Filtro;
      Tabla1.Filtered := True
   end
   else Tabla1.Filtered := False;

Douglas los ejemplos del wiki que te aconseja Caral son muy buenos revisalos.

jhlsys 18-11-2007 18:32:00

Consulta con Like
 
Para hacer consulta con Like y tienes que usar comodides "%", cualquier caracter, o "_" un caracter, ara que no te discrime las mayusculas de las minusculas puedes probar el siguiente codigo:

Cprocedure TForm7.Button1Click(Sender: TObject);

begin
adoquery1.Close;
Adoquery.sql.Clear;
adoquery1.SQL.Add('select * from merca ');
adoquery1.SQL.Add(' where upper(descripcion) like upper(:cosa)');
adoquery1.Parameters.ParamByName('cosa').Value:='%'+edit1.Text+'%';
adoquery1.Open;

end;

Lo que estamos haciendo aqui es buscar un productos no importando si los caracteres como criterio de busqueda esta al inicio, intermedio o final de la cadena escrita en la caja e texto.

Suerte


La franja horaria es GMT +2. Ahora son las 22:14:26.

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