В таком виде вроде работает, но идет привязка к имени в столбце Выдал, что не есть хорошо, так как фамилии могут поменяться и придется снова переписывать код
procedure Form1_search_OnClick (Sender: string; var Cancel: boolean);
var
s, d: string;
begin
// Работники отдела
sUser := frmLogin.ComboBox1.Text; // remember username
s := VarToStr( SQLExecute('SELECT otdel FROM users WHERE (login = ''' + sUser + ''');') );
d := VarToStr( SQLExecute('SELECT rabotnik FROM users WHERE (login = ''' + sUser + ''');') );
if ((s='1') and (d='1')) then Form1.TableGrid1.dbFilter := '(vidal <> ("Иван Иванов")) and (vidal <> ("Петр Петров")) and (vidal <> ("Николай Сидоров"))';
end;
Хотелось бы, что бы была привязка не к именам а к Чекбоксам, которые определяют является ли юзер директором или нет.... например когда работники не видят то что пишут директора и их замы, но не знаю как оформить сам фильтр таблицы......
procedure Form1_search_OnClick (Sender: string; var Cancel: boolean);
var
s, d, a, b : string;
begin
// Работники отдела
sUser := frmLogin.ComboBox1.Text; // remember username
s := VarToStr( SQLExecute('SELECT otdel FROM users WHERE (login = ''' + sUser + ''');') );
d := VarToStr( SQLExecute('SELECT rabotnik FROM users WHERE (login = ''' + sUser + ''');') );
// Директор
a := VarToStr( SQLExecute('SELECT kioc FROM users WHERE (login = ''' + sUser + ''');') );
b := VarToStr( SQLExecute('SELECT director FROM users WHERE (login = ''' + sUser + ''');') );
if ((s='1') and (d='1')) then Form1.TableGrid1.dbFilter := 'ЧТО СЮДА ПИСАТЬ?';
end;