Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Фильтр и индекс по Lookup полю [D7, IB6.x]


OlkaGTS ©   (2003-07-11 14:07:00) 

Уважаемые мастера!
Есть ли какой-нибудь способ фильтровать и индексировать Lookup поля?
Пробовала сделать поле типа InternalCalc и вычислять его по другой таблицы, но в этом случае получается примерно следующее:
если я исправляю значения в таблице из которой я беру значения для вычисляемого поля, то само вычисляемое поле содержит правильные данные, но фильтр и индекс строится по старым значениям.


VAleksey   (2003-07-11 17:52:00) [1]

Хоть это и неправильно, НО в таком случае тебе надо в таблице завести еще одно поле - дубль значений из LookUp поля. Обновлять его будешь при каждом изменении таблицы значением из лукап поля. Соответственно и индекс и фильтры по нему можешь делать.


OlkaGTS   (2003-07-11 16:23:00) [2]

Lookup поле в IndexFieldNames подставить невозможно. Если же сделать поле InternalCalc, то и индекс и фильтр ведет себя неадекватно. Все, что добавлено в текущем сеансе программы на фильтр никак не действует, т.е. в гриде отображается нормальное значение вычисляемого поля, а в OnFilterRecord значение вычисляемого поля такое, как было, когда программу запускали


OlkaGTS   (2003-07-11 16:13:00) [3]

Это когда все, что есть в клиентских наборах сохраняется в файлы на локальном диске и все время можно работать без коннекта к базе. А потом когда заведется коннект, можно все сохранить.


Соловьев   (2003-07-11 16:08:00) [4]


> Запрос не подходит. Все надо делать на клиенте из-за того
> что надо использовать модель "портфеля"

MIDAS?
procedure TForm.DBGrid.TitleClick(Column: TColumn)
begin
ClientDataSet.IndexFieldNames := Column.Name;
end;


Жук   (2003-07-11 15:55:00) [5]


> OlkaGTS © (11.07.03 15:51)
> надо использовать модель "портфеля"

Это что за зверь ? :-)


OlkaGTS   (2003-07-11 15:51:00) [6]

Запрос не подходит. Все надо делать на клиенте из-за того что надо использовать модель "портфеля"


Жук   (2003-07-11 15:33:00) [7]


> OlkaGTS © (11.07.03 14:33)

Не надо перегружать работой клиента, а организация Lookup-полей в гриде приводит к большей ресурсоёмкости. Нужно, по возможности, делать все вычисления на сервере, раз вы ИБ пользуютесь. Просто правильно составьте запрос для DataSet. У вас здесь стандартное отношение "мастер-детал".


Pat   (2003-07-11 15:09:00) [8]

>Есть ли какой-нибудь способ фильтровать...
OnFilterRecord либо см. далее..

>...и индексировать...(насколько я понял, нужно упорядочение записей)
Запрос с Join"ом


OlkaGTS   (2003-07-11 14:33:00) [9]

Конкретно:
Есть клиентский набор 1:
Запчасти
IDЗП ЗП IDПроизводителя
Клиентский набор 2
IDПроизводителя Производитель
В гриде надо видеть, редактировать, фильтровать, упорядочивать:
ЗП Производитель


Zacho   (2003-07-11 14:21:00) [10]

Какой еще индекс ? Нет в клиентском приложении никаких индексов. А на сервере нет lookup полей.
Напиши более конкретно, что именно тебе надо.


DenK_vrtz   (2003-07-11 14:20:00) [11]

Может быть фильтр наложить на НД, на который идет ссылка Lookup поля?
Или ты не про то?


Наверх

Титульная страница Поиск, карта сайта Написать письмо