Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 18.10.2012, 20:08
temass temass вне форума
Прохожий
 
Регистрация: 18.10.2012
Сообщения: 3
Репутация: 10
Печаль Взаимодействие двух DBGrid

Доброго времени суток. В общем есть 1 дбгрид который рисует табличку по запросу и надо чтобы когда в нем выделяешь строку какую-нибудь во втором дбгриде отображалась информация из другой таблицы которая соответствует этой строке... в общем как отследить выделенную строку?.. помогите разобраться пожалуйста, направьте на путь истинный...
Ответить с цитированием
  #2  
Старый 19.10.2012, 07:45
Аватар для Lost_Fish
Lost_Fish Lost_Fish вне форума
Начинающий
 
Регистрация: 21.07.2011
Адрес: Новосибирск
Сообщения: 103
Версия Delphi: Delphi 7,XE2
Репутация: выкл
По умолчанию

свойство Filter из второго DataSet поставь так
DataSet.Filter:='поле из первой таблицы = соответствующее поле из второй';
DataSet.Filtered:=True;
DataSet это твой Query, Table, ClientDataSet или ещё что-то

и всё это вставь в OnAfterScroll первого DataSet'а

например если у есть поле Category в первой и во второй таблице по которому ты хочешь установить соответствие то

Код:
procedure TfmMain.DataSet1AfterScroll(DataSet: TDataSet);
begin
    DataSet2.Filter:='Category='+DataSet1['Category'];
    DataSet2.Filtered:=True;
end;

если у тебя поле по которому нужно отсеивать текстовое то в кавычки его
__________________
Код сырец

Последний раз редактировалось Lost_Fish, 19.10.2012 в 07:52.
Ответить с цитированием
  #3  
Старый 19.10.2012, 09:59
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от temass
Доброго времени суток. В общем есть 1 дбгрид который рисует табличку по запросу и надо чтобы когда в нем выделяешь строку какую-нибудь во втором дбгриде отображалась информация из другой таблицы которая соответствует этой строке... в общем как отследить выделенную строку?.. помогите разобраться пожалуйста, направьте на путь истинный...
Если во втором DBGrid'е отображается Table, ADOTable или ClientDataSet, то можно привязать её к первой с помощью свойств MasterSource и MasterFields. Иначе с помощью фильтров как выше написал Lost_Fish.
UPD
Если во втором DBGrid'е отображается Query (или ADOQuery), то можно также реализовать привязку через изменение запроса или параметра запроса.

Последний раз редактировалось poli-smen, 19.10.2012 в 10:03.
Ответить с цитированием
  #4  
Старый 19.10.2012, 12:56
Heneken Heneken вне форума
Новичок
 
Регистрация: 11.09.2011
Сообщения: 73
Версия Delphi: Delphi XE6
Репутация: 10
По умолчанию Если

Если все делается средством SQL то никаких проблем не вижу и смогу помочь, хоть иглу из стога вам показать в 1000 гирдах..И причем динамика полная, все кодом поргаммы.
Иначе вяжите как вам указано выше...
А вообще такие действия в гирде делать не рекомендую,лучше выводить инфу не в гирд.

Последний раз редактировалось Heneken, 19.10.2012 в 13:01.
Ответить с цитированием
  #5  
Старый 20.10.2012, 13:41
temass temass вне форума
Прохожий
 
Регистрация: 18.10.2012
Сообщения: 3
Репутация: 10
По умолчанию

Попробовал фильтр и че то ниче не получилось... 0 эмоций.. если че то неправильно то выдает ошибку при выделении если все правильно то просто никакой реакции... пробовал просто из одной таблицы выводить по 1 полю в каждый грид чтобы например выделяешь Артикл в первом гриде и во втором отображалось имя...

Я делаю все через IBQuery если че.

И кстати почему выводить не в грид ??? разве есть что то другое подобное ?
Ответить с цитированием
  #6  
Старый 20.10.2012, 15:31
Аватар для morebeauty
morebeauty morebeauty вне форума
Начинающий
 
Регистрация: 21.06.2012
Сообщения: 106
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Через locate.

adoquery.locate
(если конечно через адо цепляешься)
Ответить с цитированием
  #7  
Старый 20.10.2012, 22:19
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от temass
Попробовал фильтр и че то ниче не получилось... 0 эмоций.. если че то неправильно то выдает ошибку при выделении если все правильно то просто никакой реакции... пробовал просто из одной таблицы выводить по 1 полю в каждый грид чтобы например выделяешь Артикл в первом гриде и во втором отображалось имя...
Навскидку (без исходников) тяжело сказать почему у тебя не работает. Событие AfterScroll у первой таблицы срабатывает? (Поставь там точку останова, или звуковой сигнал "Beep")
Ответить с цитированием
  #8  
Старый 21.10.2012, 12:51
temass temass вне форума
Прохожий
 
Регистрация: 18.10.2012
Сообщения: 3
Репутация: 10
По умолчанию

покопался тут и по ходу с фильтром в IB не у одного меня проблемы были... говорят использовать OnFilterRecord... кто нибудь делал через него ???
Ответить с цитированием
  #9  
Старый 21.10.2012, 12:53
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от temass
покопался тут и по ходу с фильтром в IB не у одного меня проблемы были... говорят использовать OnFilterRecord... кто нибудь делал через него ???
Я делал
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 02:17.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter