PDA

Ver la Versión Completa : busqueda sql like


douglas
02-11-2007, 20:13:43
buenas chicos, perdon por seguir molestando aqui, mi duda es ahora, bueno se usar like, y me estrucutre el siguiente codigo

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?

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.

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
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.
Select * from
Lo logico es que sea igual a un campo:

Select TuCampo From TuTabla
No se, me imagino, verdad?
Saludos

enecumene
02-11-2007, 20:37:12
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
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.
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

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.

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
file:///C:/DOCUME%7E1/douglas/CONFIG%7E1/Temp/moz-screenshot-1.jpgfile:///C:/DOCUME%7E1/douglas/CONFIG%7E1/Temp/moz-screenshot-2.jpgme 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
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

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.
error de sintaxis (falta operador)

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

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 (http://wiki.clubdelphi.com/wiki/index.php/Codigo_en_Delphi_%28Peque%C3%B1os_Ejemplos%29_DESCARGAS#Uso_de_Combobox_y_Edit_en_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:

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
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