Hola.
No soy experto, pero algo de idea te servirá. Yo lo hice de la siguiente manera con tablas de Absolute Database:
Código:
var b:integer; s,m:string;
begin
if SMDBGrid.SelectedRows.Count<>0 then //Si se han seleccionado registros
begin
for b :=0 to SMDBGrid.SelectedRows.Count-1 do // Para hacer un barrido de los registros seleccionados
begin
TuTabla.GotoBookmark(Pointer(SMDBGrid.SelectedRows.Items[b]));//se va posicionando en cada registro seleccionado
s:='Tucampo='+quotedstr(Tutabla.fieldByName('Tucampo').AsString); //aquí obtenemos el valor del campo a filtrar
if b<>SMDBGrid.SelectedRows.Count-1 then //si no es el último/único registro
m:=m+s+' or ' //con "m" se van guardando los datos a filtrar
else
m:=m+s;
end;
TuTabla.Filter:=m;
TuTabla.Filtered:=True;
end else
Showmessage('No se seleccionaron registros');
end;
Tal vez alguien más experimentado te pueda dar otra idea y con otro tipo de bases de datos.
Suerte.