Здравствуйте, Павел А.Ануфриков, Вы писали:
ПАА>Коллеги, подскажите, пожалуйста.
ПАА>Вопрос по работе с БД. Использую DataSet. Есть три таблицы: "люди", "группы", и связующая таблица "многие ко многим", обозначающая принадлежность людей группе. На форме находятся три DataGridView для каждой таблицы соответственно.
ПАА>Нужно отобразить таблицу связи не по ID, а сделать подстановку имен, кроме этого взять из основных таблиц дополнительные поля, телефон, например. Сейчас заполняю DataTable связующей таблицы своим SELECT, который получает как столбцы имён, так и телефонов.
Кратко: добавляем в DataSet связи, делаем вычисляемые поля.
Шаг первый. В DataSet делаете связи между таблицами. Например:
DataTable persons = ...; // Таблица людей
DataTable rel = ...; // Связующая таблица
dataSet.Relations.Add(
"RelToPerson", // Название связи
persons.Columns["Id"], // Поле - первичный ключ
rel.Columns["PersonId"]) // Поле - внешний ключ
Шаг второй. В связующую таблицу добавляете вычисляемые поля. Например:
rel.Columns.Add(
"PersonFIO", // Название вычисляемого поля
typeof(String), // Тип
"Parent(RelToPerson).FIO"); // Берём значение поля FIO у родительской записи по связи RelToPerson
Теперь в гриде помимо (или вместо) PersonId можно показывать PersonFIO.