![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Фильтр и индекс по 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 поля?
Или ты не про то?