Тут надо знать как организована база.
Если в соответсвии с НФ3, то это будет выглядеть как-то так:
1. Таблица справочника должностей:
Код:
ID | Position
---|-------------
1 | Водитель
2 | Кассир
...
2. Основная таблица, например, список сотрудников:
Код:
ID | Position_ID | FIO
---+-------------+------------------
1 | 1 | Иванов Иван Иванович
2 | 1 | Пертов Петр Петрович
...
тогда нам надо:
1. Вывести в TreeView все записи из табл. Position. Значение поля ID можно "положить" в свойство Data узлов.
2. При выделении узла (OnChange, если не ошибаюсь) надо сформировать новый запрос к основной таблице с соотв. Код будет примерно такой:
Код:
ADOQuery1.Close;
ADOQuery.SQL.Text := 'SELECT * FROM Emloyee WHERE Position_ID =' +
IntToStr(Integer(TreeView1.Selected.Data));
ADOQuery1.Open;
Есть возможность сразу получить весь список и фильтровать его динамически на стороне клиента в событии OnFilter компонента доступа к данным. Но данный фокус можно использовать только в случае, когда выборка из основной таблицы ГАРАНТИРОВАННО небольшая и редко меняющаяся (например, список сотрудников в отделе кадров, если это список свободных сотрудников, то уже есть ограничения).