Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Problemas con Filter en una Tabla (https://www.clubdelphi.com/foros/showthread.php?t=76099)

Parsec 08-10-2011 14:33:56

Problemas con Filter en una Tabla
 
Hola a tod@s,

quiero que a medida que voy escribiendo en un edit vaya realizando una búsqueda utilizando 'LIKE' , este es el código que utilizo:
Cita:

Table1.Filtered:= False;
Table1.Filter:= '(Paciente) LIKE ' + QuotedStr('%' + Edit1.Text + '%');
Table1.Filtered:= True;
Me da un error: 'Operation not applicable'.

He estado leyendo por los foros y deberían de funcionar perfectamente, utlizo Delphi 7 y Paradox).

Saludos

Caral 08-10-2011 17:26:32

Hola
No se de paradox pero prueba asi:
Alguna servirá.

Código Delphi [-]
Table1.Filtered:= False;
Table1.Filter:= 'Paciente LIKE ' +QuotedStr(Edit1.Text);
Table1.Filtered:= True;

Código Delphi [-]
Table1.Filtered:= False;
Table1.Filter:= 'Paciente LIKE  %'+QuotedStr(Edit1.Text)+'%';
Table1.Filtered:= True;

Código Delphi [-]
Table1.Filtered:= False;
Table1.Filter:= 'Paciente LIKE  '+Edit1.Text+'%''';
Table1.Filtered:= True;

Código Delphi [-]
Table1.Filtered:= False;
Table1.Filter:= 'Paciente LIKE  '+Edit1.Text+'*''';
Table1.Filtered:= True;

Código Delphi [-]
Table1.Filtered:= False;
Table1.Filter:= 'Paciente LIKE  %'+Edit1.Text+'%';
Table1.Filtered:= True;

Saludos

Parsec 08-10-2011 17:59:16

Hola Caral,
no han funcionado, el error hay veces que cambia y dice que el valor que escribo en el edit no es un campo de la tabla.
La cuestión es que quiero filtrar una tabla y poder modificar sus datos, Lo he intentado con un Query pero los datos que muestra en el dbgrid no me deja modificarlos.

saludos

Caral 08-10-2011 18:20:27

Hola
El campo es integer, float, string , que tipo es ?.
Saludos

Parsec 08-10-2011 18:22:25

El campo es string

Caral 08-10-2011 18:24:58

Hola
Pues no se.
La verdad es que he puesto prácticamente todas las formas de hacerlo, me extraña que no funcione alguna de ellas.
Me parece que el error debe estar por otro lado.
Saludos

Parsec 08-10-2011 18:28:06

Gracias, le dedicaré algo más de tiempo a ver si puedo resolver algo.

Saludos

Caral 08-10-2011 19:21:18

Hola
Pon el programa y la bd en un zip y lo subes (quitale el exe).
A ver si puedo hacer algo.
Saludos

ecfisa 08-10-2011 19:27:37

Hola.

Otra alternativa es usar un TQuery:
Código Delphi [-]
procedure TForm1.Edit1Change(Sender: TObject);
begin
  with Query1 do
  begin
    Close;
    SQL.Text:= 'SELECT * FROM TU_TABLA WHERE TU_CAMPO LIKE :DATO';
    ParamByName('DATO').AsString:= '%' + Edit1.Text + '%';
    Open;
  end;
end;

Saludos.

Parsec 08-10-2011 20:04:28

Solucionado!!!!

Me he tenido que pegar un MOVIDON!!!!, os explico.....
El problema radica en que filtro datos de una tabla a través de un Query y los datos que presento en un Dbgrid no me los deja modificar, intenté utilizar los 'Filter' sobre la propia tabla pero la instrucción 'LIKE' no se por que motivo no la reconoce y me da un error de 'Operation not applicable', pues bien he hecho los siguiente:

He utilizado un Tquery, UpdateSql y un DataSource.

Propiedades a cambiar en el Tquery:

RequestLive = False;
UpdateObject= UpdateSQL;
CachedUpdates= True;

Y he introducido la sentencia SQL en UpdateSQl que me permita modificar los campos que yo quiera, en este ejemplo solo voy a permitir modificar el campo Importe Factura:
Cita:

update VISITAS
set
Importefactura = :Importefactura
where
Importefactura = :OLD_Importefactura
Con esta configuración puedo modificar el campo 'Importe Factura' en el Dbgrid, pero ojo!!!!.....no actualiza la BBDD, es una modificación temporal.
Para que actualice la BBDD he insertado un botón y le he agregado el siguiente código:
Cita:

procedure TForm1.Button1Click(Sender: TObject);
begin
try
Query1.ApplyUpdates; // aplico los cambios
Query1.Refresh;
except
Showmessage('No es posible actualizar');
end;
Query1.CommitUpdates; // Limpio los cambios locales
end;
Y solucionado.

Señores me voy a correr un rato....en el buen sentido de la palabra claro!, correr a pie!!!

Saludos y espero que esto sirva a alguien.


La franja horaria es GMT +2. Ahora son las 16:41:11.

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