![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
||||
|
||||
|
Всем привет. У меня вопрос можно ли осуществить фильтрацию данный в таблице базы Access с помощью TreeView? Ели да то как?
Последний раз редактировалось Amilman, 13.10.2011 в 18:12. |
|
#2
|
||||
|
||||
|
Если я правильно понял, вы хотите в TreeView вывести имена полей из таблицы и для любого из этих полей задать ограничение?
|
|
#3
|
||||
|
||||
|
Лучше через запрос все делать, при нажатии на колонку выполнить запрос с order by.
|
|
#4
|
||||
|
||||
|
Ну вот в древе у меня есть к примеру записи Водитель,Продавец,Кассир при нажатии на Водителя мне надо чтобы в Grid остались записи только водителей.
|
|
#5
|
|||
|
|||
|
Тут надо знать как организована база.
Если в соответсвии с НФ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 компонента доступа к данным. Но данный фокус можно использовать только в случае, когда выборка из основной таблицы ГАРАНТИРОВАННО небольшая и редко меняющаяся (например, список сотрудников в отделе кадров, если это список свободных сотрудников, то уже есть ограничения). Последний раз редактировалось lmikle, 14.10.2011 в 09:10. |
|
#6
|
||||
|
||||
|
Фильтрация неполучается. Использую событие TreeView1Change :
Код:
DataModule1.ADOQuery1.Close;
DataModule1.ADOQuery1.SQL.Text :=
'SELECT * FROM Работники WHERE Подразделение' +
string(Integer(TreeView1.Selected.Data));Но при запуске программы и при выборе записи в TreeView ничего не происходит. P.S Дерево в TreeView заполняется из txt файла. |