![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Один ListSource на два DBLookupComboBox [D7]
Сергей Непочатов © (2004-06-18 17:31:00)На форме есть два компонента DBLookupComboBoxEh, в которых отображаются два поля из одной таблицы.
ListSource, ListField, KeyField у них один.
Надо, чтобы в выпадающем списке были разные наборы данных.
По событию OnDropDown я устанавливаю фильтр в датасете, который ListSource, а по событию OnCloseUp его отменяю. Все хорошо, только после выбора в одном комбобоксе другой пуст. Как это обойти?
Johnmen (2004-06-21 17:52:00) [1]Всё должно работать...
if <это не так> then <ошибка в другом месте>;
Сергей Непочатов (2004-06-21 17:33:00) [2]Да пробовал уже и по OnEnter - OnExit, и по OnEnter - OnChange
Johnmen (2004-06-21 16:50:00) [3]Ставь и убирай фильтр по другим событиям...
...
Сергей Непочатов (2004-06-21 16:33:00) [4]Все так, но не работает. :-(
Получается, что фильтр установлен, данные в комбобоксе обновлены (пусто, нет в таблице), фильтр отменен, а данные в комбобоксе не обновляются.
Johnmen (2004-06-21 14:58:00) [5]Надо LookupCache=True для лукапных полей Nakl, которые ссылаются на sdsTara.
В DBLookupComboBoxEh прописываются DataFiled, DataSource, ListField, ListSource, KeyField.
Всё должно работать...
Сергей Непочатов (2004-06-21 14:21:00) [6]Refresh - просто для уверенности, без него работает также.
А кеширование чего надо? Я включал кэширование всех участвующих полей во всех таблицах.
Новая запись в накладных Nakl.
Johnmen (2004-06-21 14:14:00) [7]>sdsTara.Refresh;
Это зачем ?
Кеширование включено ?
>Если запись новая...
Где новая ?
Сергей Непочатов (2004-06-21 14:08:00) [8]procedure TFormParty.DBLookupComboBox1DropDown(Sender: TObject);
begin
sdsTara.Filter := 'PARENT_IDP = 8000000';
sdsTara.Filtered := True;
end;
procedure TFormParty.DBLookupComboBox1CloseUp(Sender: TObject;
Accept: Boolean);
begin
sdsTara.Filtered := False;
sdsTara.Refresh;
end;
А список звкрывается автоматически после того как юзер выбрал значение из выпадающего списка.
Johnmen (2004-06-21 12:00:00) [9]>Но после закрытия списка в одном к-боксе
Что означает "закрытие списка" ?
Сергей Непочатов (2004-06-21 11:50:00) [10]Тара и товары лежат в таблице Tara. В форме для формирования накладной есть два DBLookupComboBoxEh, в которых отображаются два поля из накладной, таблица Nakl. А ListSource у них - Tara. По событию OnDropDown я устанавливаю фильтр в Tara, чтобы в выпадающем списке была только тара, а по зарытию списка фильтр отменяю. В другом комбобоксе я делаю то же самое, но фильтр на Tara устанавливаю такой, чтобы в списке были видны только товары.
Но после закрытия списка в одном к-боксе в другом - пусто!
Johnmen (2004-06-21 10:20:00) [11]>Если запись новая...
Где новая ?
>А у меня поля типа fkData
Я уже перестаю понимать, в чем проблема...:)
Сергей Непочатов (2004-06-21 10:01:00) [12]В хелпе написано, что свойство LookupCache - только для Lookup-полей. А у меня поля типа fkData.
Johnmen (2004-06-21 09:48:00) [13]Причем тут идеи ?
Надо использовать вещь по назначению, в соответствии с прилагаемой инструкцией. И не ожидать, что пылесос может постирать носки...:)
Короче. У меня проблем нет. У тебя - есть. Значит у тебя ошибки...
Сергей Непочатов (2004-06-21 09:35:00) [14]А вот и не совсем! :-)
Если запись новая, то при выборе во втором боксе информация в первом не пропадает, а если редактирую существующую - трабл остается. :-(
Может у кого еще идеи есть?
Сергей Непочатов (2004-06-18 17:43:00) [15]Спасибо, заработало. :-)
Сергей Непочатов (2004-06-18 17:41:00) [16]Это как?
Johnmen (2004-06-18 17:33:00) [17]Вкл. кеширование лукапного поля.