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

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

Один 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]

Вкл. кеширование лукапного поля.


Наверх

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