PDA

Ver la Versión Completa : DBGrid con restricciones


DOS
10-10-2011, 18:11:36
Hola a todos
Resulta que tengo dos tablas:
"mesas" nro-mesa ubicacion ocupado
............1..............20...........1
............2..............21...........0
.............3..............22...........1
Puden ser muchas mesas 1 o 0 para identificar si esta ocupado o libre
"ubicacion" nro-ubicacion ubicacion
......................20.............adentro
......................21.............barra
......................22.............afuera
con las distintas ubicaciones adentro, afuera, barra, etc. lo que se ve en la tabla es lo siguiente
nro-mesa ubicacion
.....1.........adentro
.....2.........adentro etc
Ahora se puede restringir para que me muestre las que ocupado estan igual a 1 sin hacer una consulta?
Desde ya muchas gracias.

MLROJO
10-10-2011, 19:22:22
Hola,

No nos comentas que componentes estas usando, no obstante suponiendo que usas un ADODataSet o similar.. (ADOQuery, ADOTable, etc..) existe la propiedad Filter que es lo mas parecido o lo que creo que mas se aproxima a lo que buscas, aunque bueno seguramente existan otras formas que desconozco.

Te pongo un ejemplo sacado de la ayuda de delphi:


with ADODataSet1 do begin

Filtered := False;
Filter := 'State = ' + QuotedStr('CA') + ' OR ' +
'State = ' + QuotedStr('CA');
Filtered := True;

end;



Espero que te sirva de ayuda, ya nos contarás.

Saludos.

DOS
10-10-2011, 19:30:12
mmm... son Ttable. y se muestran e un DBGrid.

MLROJO
10-10-2011, 20:05:47
Pues el ejemplo que te pongo te serviría para aplicarlo también al TTable.

Pruébalo, a ver si te sirve.

Saludos.

DOS
10-10-2011, 20:18:59
Para serte sincero ni siquiera se donde poner ese codigo.:(

MLROJO
10-10-2011, 20:34:15
Pones un botón.
Pulsas doble click sobre él (para acceder al evento OnClick)
Pones el código, quedando similar a esto:


procedure TForm1.Button1Click(Sender: TObject);
begin
with Table1 do begin

Filtered := False;
Filter := 'Campo = 1';
Filtered := True;

end;
end;


Sustituyendo lo que hay entre comas simples en "Campo = 1" por tu expresión.

Esto lo que hace es desactivar el filtro del TTable, indicarle una restricción y activar el filtro nuevamente.

Espero que te quede algo mas claro.

Saludos.

Chris
10-10-2011, 20:45:31
Puedes utilizar el evento OnFilter. Este evento te brinda la oportunidad de probar cada uno y todos los registros para determinar si se muestran o no. Lo que estás intentando hacer se le conoce como Client Filter, Filtros del lado Cliente.

Saludos,
Chris

DOS
11-10-2011, 01:43:36
Muchas gracias