Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Busqueda en un Query (https://www.clubdelphi.com/foros/showthread.php?t=44837)

carlosegs11 15-06-2007 19:00:53

Busqueda en un Query
 
Hola,

Incialmente hago la siguiente consulta:

Código Delphi [-]
  QUERY.SQL.Close;
  QUERY.SQL.Clear;
  QUERY.SQL.Add ('SELECT Cedula, Apellidos, Nombres FROM Terceros');
  QUERY.Open;

Si yo deseo ubicar una cédula en esta consulta existe algún comando como QUERY.Find o algo así que me ayude a ubicar ese registro?

Muchas gracias.

Carlos E. :confused:

gluglu 15-06-2007 19:25:26

Locate sobre el DataSet asociado a la consulta.

Caral 15-06-2007 19:44:17

Hola
Código Delphi [-]
begin
  QUERY.Close;
  QUERY.SQL.Text:= 'SELECT Cedula, Apellidos, Nombres FROM Terceros';
  QUERY.Open;
end;
begin
  QUERY.Filter := 'Cedula = '+QuotedStr(Edit1.Text);
  QUERY.Filtered := True;
end;
Saludos

chileno 15-06-2007 20:45:59

tambien puedes hacer esto.......

Código Delphi [-]
begin
  QUERY.Close;
  QUERY.SQL.ADD('SELECT Cedula, Apellidos, Nombres FROM Terceros WHERE Cedula =: pCedula');
  QUERY.PARAMBYNAME('pCedula') := EDIT1.TEXT;
  QUERY.Open;
end;

sinaloenc 15-06-2007 21:05:39

conocer lo que filtro el adoquery
 
como puedo conocer lo que filtre con un adoquery en una busqueda ejemplo:


adoquery1.sql.add('selec clave from datos where usuario='+edit1.text+' ');
adoquery1.active:=true;

como puedo conocer cual fue la clave que filtro?:confused:

carlosegs11 15-06-2007 21:14:39

Gracias.
 
Ok... muchas gracias. Era lo que necesitaba.

Carlos E.

kalabero 19-06-2007 14:03:56

al ejecutar filtro no me aparecen datos
 
Cuando intento realizar el filtro:

clientes.filter:= 'clinom =' +Quotedstr(edit1.text+'*')
clientes.filtered:=true;

por que no aparece nada en el dbgrid??

jhonny 19-06-2007 14:53:23

Cita:

Empezado por kalabero
Cuando intento realizar el filtro:

clientes.filter:= 'clinom =' +Quotedstr(edit1.text+'*')
clientes.filtered:=true;

por que no aparece nada en el dbgrid??

Quitale el *; La verdad es que nunca he intentado lo que me imagino que intentas hacer en un filter, pero pruebalo con % en lugar del * a ver si te funciona.

Alejandrina 29-06-2007 21:33:19

HOLA A TODOS...
ESTOY INTENTANDO HACER LO MISMO PERO ME MUESTRA UN ERRO DE 'FILTER EXPRESSION INCORRETLY TERMINATED'...
TENGO EL TDBGRID CON UN DATASOURCE APUNTADO A UN QUERY Y PRETENDO QUE CUANDO EL USUARIO DIGITE EL UN EDIT MUESTRE SOLO EL REGISTRO QUE ESTE DESEA...LO INTENTE DE LAS FORMAS ANTERIORES PERO NO ME DA...
QUE PUEDO ESTAR HACIENDO MAL?

Código:

procedure TFrmProgTallerEntrega.EdBusquedaEspecificaKeyPress(
  Sender: TObject; var Key: Char);
begin
 if key = #13 then
    begin
      key := #0;
      DMinformes.QInfHistoricos.Filter:='CODMOLDE'+QuotedStr(EdBusquedaEspecifica.Text+'%');
      DMinformes.QInfHistoricos.Filtered:=TRUE;
    end;
end;

DE ANTE MANO GRACIAS POR LA AYUDA;)

fjcg02 29-06-2007 21:38:07

En un filtro no puedes meter un metacaracter ( % o * ) ya que no funciona como el like.

Saludos

jhonny 29-06-2007 21:38:35

Primero que todo, te pido el favor de que no escribas en mayúsculas, pues la verdad es que no esta bien visto que lo hagas ya que representa un grito y además las mayúsculas a mi modo de ver y al de algunos cuantos son engorrosas de leer, asi que te agradecería si editaras tu mensaje...
En cuanto a tu duda, pues... seguramente es porque te falta un signo igual ( = ), trata con el siguiente codigo y nos cuentas:
Código Delphi [-]
 
procedure TFrmProgTallerEntrega.EdBusquedaEspecificaKeyPress(
  Sender: TObject; var Key: Char);
begin
 if key = #13 then
    begin
      key := #0;
      DMinformes.QInfHistoricos.Filtered:=False;
      DMinformes.QInfHistoricos.Filter:='CODMOLDE='+QuotedStr(EdBusquedaEspecifica.Text+'%');
      DMinformes.QInfHistoricos.Filtered:=True;
    end;
end;

eduarcol 29-06-2007 21:39:04

No se si la sugerencia de jhonny funciono, pero yo acostumbraba hacerla de esta manera

Código Delphi [-]
clientes.filter:= 'clinom >=' +Quotedstr(edit1.text+'aaa') and clinom <=' +Quotedstr(edit1.text+'zzz')
clientes.filtered:=true;

jhonny 29-06-2007 21:45:25

Bueno, eduarcol, esa forma de hacerlo si que debe funcionar, pero solo con tres pequeños carácteres de mas :)... asi:
Código Delphi [-]
 
clientes.filter:= 'clinom >=' +Quotedstr(edit1.text+'aaa') + 'and clinom <=' + Quotedstr(edit1.text+'zzz');
clientes.filtered:=true;

//Edito: Descubri que ademas de la comilla simple, falta un + y un punto y coma...

Alejandrina 29-06-2007 22:21:55

Hola pido disculpas por lo de las mayúsculas nunca lo vi así pero lo tendre en cuenta gracias...
Bueno lo hice de ambas formas y ahora me saca un erro de 'Operation not aplicable'...????

Código:

      DMinformes.QInfHistoricos.filter:= 'CODMOLDE >=' +Quotedstr(EdBusquedaEspecifica.text+'aaa') + 'and CODMOLDE <=' + Quotedstr(EdBusquedaEspecifica.text+'zzz');
      DMinformes.QInfHistoricos.filtered:=true;


jhonny 29-06-2007 22:29:14

Si le colocas otros dos paréntesis?:
Código Delphi [-]
 
DMinformes.QInfHistoricos.filter:= '(CODMOLDE >=' +Quotedstr(EdBusquedaEspecifica.text+'aaa') + 'and CODMOLDE <=' + Quotedstr(EdBusquedaEspecifica.text+'zzz)');
DMinformes.QInfHistoricos.filtered:=true;

jhonny 29-06-2007 22:31:02

Y si no, otros 4 mas?
Código Delphi [-]
 
DMinformes.QInfHistoricos.filter:= '((CODMOLDE >=' +Quotedstr(EdBusquedaEspecifica.text+'aaa)') + 'and (CODMOLDE <=' + Quotedstr(EdBusquedaEspecifica.text+'zzz))');
DMinformes.QInfHistoricos.filtered:=true;

Alejandrina 29-06-2007 23:05:23

Gracias...pero ni con dos ni con cuatro me saca error ' ')' expected but nothing found'...lo cual no tiene sentido o si?

Código:

      DMinformes.QInfHistoricos.filter:='(CODMOLDE >='+Quotedstr(EdBusquedaEspecifica.text+'aaa')+'and CODMOLDE<='+Quotedstr(EdBusquedaEspecifica.text+'zzz)');
      DMinformes.QInfHistoricos.filtered:=true;

Gracias...

jhonny 29-06-2007 23:16:33

Ya entiendo, lo que sucedía es que las comillas estaban quedando por fuera de los paréntesis, la cosa debe ser asi:

Código Delphi [-]
 
DMinformes.QInfHistoricos.filter:= '((CODMOLDE >=' + Quotedstr(EdBusquedaEspecifica.text+'aaa') + ')' + 'and (CODMOLDE <=' + Quotedstr(EdBusquedaEspecifica.text+'zzz')+'))';
DMinformes.QInfHistoricos.filtered:=true;

//Edito: Al final estaba mal ubicado un paréntesis.

Caral 30-06-2007 00:53:42

Hola
Perdon que me meta.
Para empezar la sentencia de un filtro es:
Código Delphi [-]
procedure TFrmProgTallerEntrega.EdBusquedaEspecificaKeyPress(
  Sender: TObject; var Key: Char);
begin
 if key = #13 then
    begin
      key := #0;
      DMinformes.QInfHistoricos.Filter:='CODMOLDE = '+QuotedStr(EdBusquedaEspecifica.Text);
      DMinformes.QInfHistoricos.Filtered:=TRUE;
    end;
end;
Hay que tener en cuenta que se pide un string, si es numerico el dato la sentencia varia, esto en ciertas bases de datos, suele pasar.
Saludos


La franja horaria es GMT +2. Ahora son las 22:42:28.

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