![]() |
Модераторы: gambit |
![]() ![]() ![]() |
|
RUMBok |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 13.10.2007 Репутация: нет Всего: нет |
Следующий вопрос:
Есть две таблицы - "Клиенты" (перв. ключ - "Код") и "Договора" (перв. ключ - "Код", род. ключ "Код клиента"). Связь - Клиенты.Код = Договора.Код клиента Приложение MDI, таблицы отображаются каждая в своем дочернем окне в DataGridView'ах, через свои BindingSource и TableAdapter. Информация берется из MainDataSet со всей БД внутри. Вопросы: Как реализовать, чтобы при выборе клиента в окне договоров отображались только связанные с ним? Как при этом надо настроить связи в DataSet'е? Если так неправильно организовывать показ данных - как это сделать верно? В принципе буду рад любому работающему примеру. Заранее спасибо |
|||
|
||||
thomas |
|
|||
![]() Доцент... почти ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1385 Регистрация: 3.10.2006 Где: " Сказочное королевство" Репутация: 35 Всего: 65 |
RUMBok,
приветствую на форуме. велком. ![]() Раз работаешь в дизайнере, то вот эти видео уроки помогут решить твои проблемы. Даже если пишешь на C# не беда, дизайнер в студии один. А конкретно по сабжу мне думается вот этот урок будет в самый раз. Удачи. -------------------- Крепко жму горло, искренне ваш Thomas. (С)vingrad Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну! Проблемы негров шерифа не волнуют. |
|||
|
||||
RUMBok |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 13.10.2007 Репутация: нет Всего: нет |
Спасибо за ссылку.
Но все же, как реализовать связь данных именно в двух разных окнах? Или только вручную? |
|||
|
||||
tol05 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1632 Регистрация: 21.12.2006 Где: Харьков Репутация: 11 Всего: 170 |
RUMBok, используй класс DataRelation и свойство DataSet.Relations.
Если я правильно понял, то
Думаю, в msdn ты найдешь примеры. -------------------- На хорошей работе и сны хорошие снятся. |
|||
|
||||
RUMBok |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 13.10.2007 Репутация: нет Всего: нет |
Спасибо за ответы. В принципе немного разобрался что и как.
Но теперь трансформировался вопрос. Есть главная форма с объектом MainDataSet класса MainDataSet. Есть дочерние (в дизайнере сделанные) Clients и Dogovors. Когда в дизайнере делаешь DataGridView в дочерних формулах, для них создаются свои объекты класса MainDataSet, но надо чтобы использовался объект родительской формы. Если в коде прописывать, что их MainDataSet'ы - это родительский объект - работает как надо, НО не работает дизайнер для этих форм Вопрос: можно ли как-нибудь научить дизайнер использовать объект класса MainDataSet родительской формы, а не создавать свой? |
|||
|
||||
thomas |
|
|||
![]() Доцент... почти ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1385 Регистрация: 3.10.2006 Где: " Сказочное королевство" Репутация: 35 Всего: 65 |
RUMBok,
Здается мне, что вот это
в дизайнере не проканает. ![]() В дизайнере ты создаешь для каждой формы свои обекты дата сет, таблеадаптер, датабиндинг, а студия генерит код для этих обьектов. И у меня вопрос, а что это за изврат такой, зачем отображать клиентов в одном окне, а их договора в другом. Когда при использовании дизайнера "мелкомягкие" учат создвать дата сет с двумя таблицами, а потом данные из одной таблицы выводит на форму в "детальном" виде(типа в текст боксах) а данные из другой(связанной) таблицы(их договора) в датагридвью. И все это на одной форме. Плюс студия сама тебе забацает "балочку" с кнопочками для навигации и сохранения. (типа биндингнавигатор) Ну а если уж тебе приспичило при выборе клиента в гриде на одной форме(двойной щелчек мышей на строке) открывать другую форму со списком договоров, то делаем все "ручками" и через классы. Вся логика в классах, а на форме минимум кода. Только создание обьектов нужных классов и вызовы их методов. Ну и отображение результатов естественно. Иначе ни как, я так думаю. ![]() Это сообщение отредактировал(а) thomas - 15.10.2007, 20:59 -------------------- Крепко жму горло, искренне ваш Thomas. (С)vingrad Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну! Проблемы негров шерифа не волнуют. |
|||
|
||||
FreakK |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 1.7.2005 Где: Lviv (Ukraine) Репутация: нет Всего: нет |
Приветствую
1. На основе собственного опита НЕРЕКОМЕНДУЮ испольсозовать фильтр через BindingSource так как он очень медленно работает. намного ефективнее виполнять FillWhereId(код_клиента) Примерний текст запроса FillWhereId: SELECT * FROM Orders WHERE Orders.Id = @id ето позволит тебе открить договора для кждого клиетна в отдельних окнах. если все же нужен ActiveBinding то просто нужно передать Биндинг сур в конструктор дочерней форми. и использовать его как дата сурс. |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Базы данных под .NET | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |