![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
||||
|
||||
![]() Всем привет. У меня вопрос можно ли осуществить фильтрацию данный в таблице базы Access с помощью TreeView? Ели да то как?
Последний раз редактировалось Amilman, 13.10.2011 в 18:12. |
#2
|
||||
|
||||
![]() Если я правильно понял, вы хотите в TreeView вывести имена полей из таблицы и для любого из этих полей задать ограничение?
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#3
|
||||
|
||||
![]() Лучше через запрос все делать, при нажатии на колонку выполнить запрос с order by.
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#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 файла. |