Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

DBGridEh и lockup с MasterSource

578
06 марта 2011 года
o_serg
93 / / 08.09.2003
Добрый день, есть три TMyTable. Одна подключена к DBGridEh, две других связаны с ней lookup полями. Мне нужно сделать, чтобы список выбора одного lookup поля (адрес) зависел от выбранного значения второго lookup поля (Клиент). Другими словами, у каждого клиента есть несколько адресов, нужно, чтобы в выборе адреса вылезали только адреса выбранного клиента. Попробовал сделать через MasterSource, не получилось. Как это можно реализовать?
19K
06 марта 2011 года
Alegun
269 / / 10.09.2010
Не уверен полностью, но может этот примерчик БД поможет?
6
06 марта 2011 года
George
4.1K / / 05.01.2007
У датасурса есть событие OnDataChange, так вот нужно сделать обработчик этого события для первого лукап поля, в котором обращаться к датасету (отличаете датасет и датасурс?) для второго лукап поля, где или фильтровать или заного загружать нужные значения из БД.
578
06 марта 2011 года
o_serg
93 / / 08.09.2003
Цитата: George
(отличаете датасет и датасурс?)


да

 
Код:
procedure MyDataSource1DataChange(Sender: TObject; Field: TField);
begin
  MyTable2.Filtered := true;
  MyTable2.Filter := 'client_id=' + MyTable1.FieldByName('id_client').AsString;
end;

Как то так?
6
06 марта 2011 года
George
4.1K / / 05.01.2007
Почти. Еще надо сделать проверку поля, которое изменяется:
 
Код:
if Field.Name = 'MyLookupField' then
// И тут уже плясать
578
06 марта 2011 года
o_serg
93 / / 08.09.2003
Не работает, если без условия то тоже самое что и с MasterSource, а с условием вообще вылетает Access violation. Сделал проверку, параметр Field всегда равно nil почемуто
Вообще мне кажется что это проблема DBGridEh...
6
06 марта 2011 года
George
4.1K / / 05.01.2007
Больше похоже на кривой датасет.
Хотя вообще сложно сказать. Я мог бы посмотреть, если скинете исходники (если конечно там не сверхсекретная софтина), благо EhLib у меня есть, сам с ней щас работаю.
578
06 марта 2011 года
o_serg
93 / / 08.09.2003
я использую MyDAC компоненты для работы с Mysql базой. Сам проект достаточно большой, могу набросать тестовую программку, посмотрите?
6
06 марта 2011 года
George
4.1K / / 05.01.2007
Набросайте, только не с мускулом, а с акцессом. Мускула нету.
578
09 марта 2011 года
o_serg
93 / / 08.09.2003
Набросал прогу, с этими датасетами отображается правильно вроде, но при открытии списка в поле "адрес" не верно работает. Заранее спасибо за помощь.
19K
12 марта 2011 года
Alegun
269 / / 10.09.2010
Цитата: o_serg
Набросал прогу, с этими датасетами отображается правильно вроде, но при открытии списка в поле "адрес" не верно работает.


К сожалению, архивчик "db_test.zip" не рабочий, (даже 7-Zip его не берёт) требуется перезагрузка!

578
15 марта 2011 года
o_serg
93 / / 08.09.2003
Цитата:
К сожалению, архивчик "db_test.zip" не рабочий, (даже 7-Zip его не берёт) требуется перезагрузка!


Переименуйте в db_test.rar, хотя у меня winrar и так открывает :)

6
22 марта 2011 года
George
4.1K / / 05.01.2007
Лови. В общем, DbGridEh там не причем, у тебя че-то было запутанно с самими датасетами. У меня щас вроде работает.
578
22 марта 2011 года
o_serg
93 / / 08.09.2003
Не работает. Если просто запустить прогу, выдает весь список адресов. Если изменить Клиента, то для любой строки в списке будут выдаваться адреса для последнего выбранного клиента, независимо от того какой клиент в данной строке.

Проблему решил, в обработчике OnEditButonClick DbGridEh ставлю фильтр. Работает, но неужели нет нормального решения...
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог