Форум: "Базы";
Текущий архив: 2003.08.04;
Скачать: [xml.tar.bz2];
ВнизФильтр и индекс по Lookup полю Найти похожие ветки
← →
OlkaGTS (2003-07-11 14:07) [0]Уважаемые мастера!
Есть ли какой-нибудь способ фильтровать и индексировать Lookup поля?
Пробовала сделать поле типа InternalCalc и вычислять его по другой таблицы, но в этом случае получается примерно следующее:
если я исправляю значения в таблице из которой я беру значения для вычисляемого поля, то само вычисляемое поле содержит правильные данные, но фильтр и индекс строится по старым значениям.
← →
DenK_vrtz (2003-07-11 14:20) [1]Может быть фильтр наложить на НД, на который идет ссылка Lookup поля?
Или ты не про то?
← →
Zacho (2003-07-11 14:21) [2]Какой еще индекс ? Нет в клиентском приложении никаких индексов. А на сервере нет lookup полей.
Напиши более конкретно, что именно тебе надо.
← →
OlkaGTS (2003-07-11 14:33) [3]Конкретно:
Есть клиентский набор 1:
Запчасти
IDЗП ЗП IDПроизводителя
Клиентский набор 2
IDПроизводителя Производитель
В гриде надо видеть, редактировать, фильтровать, упорядочивать:
ЗП Производитель
← →
Pat (2003-07-11 15:09) [4]>Есть ли какой-нибудь способ фильтровать...
OnFilterRecord либо см. далее..
>...и индексировать...(насколько я понял, нужно упорядочение записей)
Запрос с Join"ом
← →
Жук (2003-07-11 15:33) [5]
> OlkaGTS © (11.07.03 14:33)
Не надо перегружать работой клиента, а организация Lookup-полей в гриде приводит к большей ресурсоёмкости. Нужно, по возможности, делать все вычисления на сервере, раз вы ИБ пользуютесь. Просто правильно составьте запрос для DataSet. У вас здесь стандартное отношение "мастер-детал".
← →
OlkaGTS (2003-07-11 15:51) [6]Запрос не подходит. Все надо делать на клиенте из-за того что надо использовать модель "портфеля"
← →
Жук (2003-07-11 15:55) [7]
> OlkaGTS © (11.07.03 15:51)
> надо использовать модель "портфеля"
Это что за зверь ? :-)
← →
Соловьев (2003-07-11 16:08) [8]
> Запрос не подходит. Все надо делать на клиенте из-за того
> что надо использовать модель "портфеля"
MIDAS?
procedure TForm.DBGrid.TitleClick(Column: TColumn)
begin
ClientDataSet.IndexFieldNames := Column.Name;
end;
← →
OlkaGTS (2003-07-11 16:13) [9]Это когда все, что есть в клиентских наборах сохраняется в файлы на локальном диске и все время можно работать без коннекта к базе. А потом когда заведется коннект, можно все сохранить.
← →
OlkaGTS (2003-07-11 16:23) [10]Lookup поле в IndexFieldNames подставить невозможно. Если же сделать поле InternalCalc, то и индекс и фильтр ведет себя неадекватно. Все, что добавлено в текущем сеансе программы на фильтр никак не действует, т.е. в гриде отображается нормальное значение вычисляемого поля, а в OnFilterRecord значение вычисляемого поля такое, как было, когда программу запускали
← →
VAleksey (2003-07-11 17:52) [11]Хоть это и неправильно, НО в таком случае тебе надо в таблице завести еще одно поле - дубль значений из LookUp поля. Обновлять его будешь при каждом изменении таблицы значением из лукап поля. Соответственно и индекс и фильтры по нему можешь делать.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.08.04;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.009 c