Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
0 / 0 / 1
Регистрация: 03.05.2013
Сообщений: 2

Запрос на отображение связанных таблиц

03.05.2013, 07:27. Показов 1741. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день. Проблема с отображением связанных таблиц. Имеется БД access с 5 таблицами.

Схема данных


В один dataGridView надо вывести информацию из главной таблицы Film + ФИО режиссера, связанного с фильмом и ФИО актера.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
binding = new BindingSource();
string qs = "SELECT Film.id, Nazv,Date_out,Dlit,Mark,Country, Reg.RegName FROM (Film INNER JOIN RegFilm ON Film.id = RegFilm.id_film) INNER JOIN Reg ON RegFilm.id_reg=Reg.id"; 
 
            adapter = new OleDbDataAdapter(qs, oleDbConnection1);
            ds = new DataSet();
            adapter.Fill(ds, "Film");
            dataGridView1.DataSource = ds.Tables["Film"];
            binding.DataSource = ds.Tables["Film"];
            cmbFilmReg.DataSource = ds.Tables["Film"];
            cmbFilmReg.DisplayMember = "Nazv";
            cmbFilmReg.ValueMember = "id";
            cmbFilmActor.DataSource = ds.Tables["Film"];
            cmbFilmActor.DisplayMember = "Nazv";
            cmbFilmActor.ValueMember = "id";
В результате выполнения этого кода отображается верное сочетание режиссер-фильм, но если для фильма есть 2 режиссера и более, то копируется строка этого фильма в гриде. Также, если для фильма не определена связь режиссер-фильм, то фильм вообще не отображается в гриде.

А надо чтобы для фильма все возможные режиссеры писались через запятую и пока не связанные фильмы тоже выводились в таблице.

Подскажите, как это можно реализовать.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.05.2013, 07:27
Ответы с готовыми решениями:

Отображение связанных таблиц
Здравствуйте Не подскажите как такое можно реализовать? Есть 2 таблицы на форме. Они связаны 2 ключом. Получается, выделяешь строку в...

Отображение связанных таблиц БД в View
Извините за примитивный вопрос, я только начал изучать ASP.NET MVC. В Visual Studio создал БД, в которой 2 таблицы: Tasks(TaskId, Title,...

Отображение связанных таблиц в View
Всем привет! В MVC новичок, строго не судите! Помогите с вопросом. Имеется главная таблица "Torgs" ID, RUNAME, RUADRES где...

1
0 / 0 / 1
Регистрация: 03.05.2013
Сообщений: 2
05.05.2013, 14:48  [ТС]
Неужели никто не знает?
Еще один способ, но он тоже работает не совсем так, как нужно.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
            binding = new BindingSource();
            string qs = "SELECT * FROM Film ";
            adapter = new OleDbDataAdapter(qs, oleDbConnection1);
            ds = new DataSet();
            adapter.Fill(ds, "Film");
            dataGridView1.DataSource = ds.Tables["Film"];
            binding.DataSource = ds.Tables["Film"];
 
            oleDbConnection1.Open();
            OleDbCommand thisComand = oleDbConnection1.CreateCommand();
            //получаю все имена режиссеров, для которых определена связь (список получаю верный)
            thisComand.CommandText = @"SELECT Reg.RegName FROM Reg, RegFilm WHERE RegFilm.id_reg=Reg.id";
            OleDbDataReader thisReader = thisComand.ExecuteReader();
            string res = "";
 
            while (thisReader.Read())
            {
                res += thisReader["RegName"].ToString();
                for (int i = 0; i < dataGridView1.RowCount; i++)
                {
                    OleDbCommand thisComand2 = oleDbConnection1.CreateCommand();
                    //получаю все фильмы, для которых определена связь (список получаю верный)
                    thisComand2.CommandText = @"SELECT Film.id FROM Film, RegFilm WHERE RegFilm.id_film=Film.id";
 
                    OleDbDataReader thisReader2 = thisComand2.ExecuteReader();
                    while (thisReader2.Read())
                    {
                        if (Int32.Parse(dataGridView1.Rows[i].Cells[0].Value.ToString()) == Int32.Parse(thisReader2["id"].ToString()))
                            dataGridView1.Rows[i].Cells[6].Value = res + " "; 
                    }
                    thisReader2.Close();
                } 
            }
            thisReader.Close();
            oleDbConnection1.Close();
            textBox3.Text = res;
Режиссеры для фильма записываются в одну строку, слитно, не могу вставить между ними запятую. Как это можно исправить?

Добавлено через 4 часа 18 минут
Проблема решена, можно закрывать тему. Связь трех таблиц через промежуточную (многие-ко-многим).
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
oleDbConnection1.Open();
            OleDbCommand thisComand = oleDbConnection1.CreateCommand();
            //получаю всех имена режиссеров, для которых определена связь (список получаю верный)
            thisComand.CommandText = @"SELECT Reg.RegName FROM Reg, RegFilm WHERE RegFilm.id_reg=Reg.id";
            OleDbDataReader thisReader = thisComand.ExecuteReader();
            string res = "";
            string id = "";
            OleDbCommand thisComand2 = oleDbConnection1.CreateCommand();
            //получаю все фильмы, для которых определена связь (список получаю верный)
            thisComand2.CommandText = @"SELECT Film.id FROM Film, RegFilm WHERE RegFilm.id_film=Film.id";
            OleDbDataReader thisReader2 = thisComand2.ExecuteReader();
            while (thisReader.Read())
            {
                res = thisReader["RegName"].ToString()+", ";
                while (thisReader2.Read())
                {
                    id = thisReader2["id"].ToString();
                    for (int i = 0; i < dataGridView1.RowCount; i++)
                    {
                        if (Int32.Parse(dataGridView1.Rows[i].Cells[0].Value.ToString()) == Convert.ToInt32(id))
                            dataGridView1.Rows[i].Cells[6].Value += res;
                    }
                    break;
                }
            }
            thisReader2.Close();
            thisReader.Close();
            oleDbConnection1.Close();
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.05.2013, 14:48
Помогаю со студенческими работами здесь

Отображение полей связанных таблиц
Здравствуйте. Существуют таблицы: Товары, тип товара, категория. &quot;Тип товара&quot; связанны с &quot;категорией&quot;, а &quot;товары&quot; с...

WPF, DataGrid, Entity Framework - отображение и редактирование связанных таблиц
Привет! Использую существующую БД MS SQL. На ее основе создаю модель EF. На форме MainWindow лежит DataGrid. Необходимо отобразить в нем...

SQL запрос для двух связанных таблиц access
Есть две таблицы &quot;агенты&quot; и &quot;договор&quot;, в таблице &quot;агенты&quot; только поле с перечислением агентов, в таблице &quot;договор&quot;, кроме всего...

Как составить запрос SELECT на выборку из связанных таблиц
Всем привет. Вопрос простой, но вот уже три дня сижу пробую ничего не получается. Есть две связанные таблички в базе на ms access, есть...

Отображение связанных таблиц
Доброго времени суток всем участникам форума! Позвольте поделиться своей проблемой. Пишу приложение с БД (среда для проведения...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru