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

Связь один ко многим

12.07.2016, 16:48. Показов 2919. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как сделать данную связь? Чтобы при выборе значения в комбобоксе, показывалось 3 значения.
А именно при выборе отдела, должно выводится в тестбоксы 3 принтера (таких 2 отдела). Остальные по одному
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.07.2016, 16:48
Ответы с готовыми решениями:

Entity Framework 6. Code First. Связь один-ко-многим и многие-ко-многим одновременно
Здрасти. Есть таблица юзеров и объявлений. У юзера может быть множество объявлений. Здесь действует связь один-ко-многим. Но юзер также...

Организовать связь один-ко-многим между таблицами
У меня есть три таблицы. Как правильно организовать связь один ко многим между ними? Правильно ли будет сделать это так как в вложении?

Entity Framework. Связь между таблицами один ко многим
Здравствуйте. Столкнулся с такой проблемой - у меня есть таблицы Тестов и Вопросов (к тестам), связь один ко многим. Реализация следующая...

8
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
12.07.2016, 21:14
Цитата Сообщение от Kaberungula Посмотреть сообщение
Как сделать данную связь?
Вы бы хоть таблицы привели, что-ли...
0
0 / 0 / 1
Регистрация: 24.05.2016
Сообщений: 48
13.07.2016, 10:30  [ТС]
Такой вид имеет
Миниатюры
Связь один ко многим  
0
0 / 0 / 1
Регистрация: 24.05.2016
Сообщений: 48
13.07.2016, 12:10  [ТС]
В combobox выведены значения из Dept_Name. Под комбо расположились 3 textbox. При выборе отдела, например Фин, в первом textbox появляется соответствующий принтер. А при выборе отдела Инт, должны заполнятся принтерами все 3 textbox. Такая вот заковыка..
0
785 / 616 / 273
Регистрация: 04.08.2015
Сообщений: 1,713
13.07.2016, 12:28
Цитата Сообщение от Kaberungula Посмотреть сообщение
А при выборе отдела Инт, должны заполнятся принтерами все 3 textbox.
А если добавится еще один принтер, вы будете переделывать дизайн, чтобы добавить еще один textbox? Так не делается.
Принтеры нужно показывать в combobox или listbox или checkedlistbox... в зависимости от вашей задачи.
Обрабатываете событие ComboBox.SelectedIndexChanged. Из выбранного значения комбобокса берете ID_Dept. По нему находите все принтеры с таким ID_Dept. Потом добавляете их в компонент, где они будут отображаться.
0
0 / 0 / 1
Регистрация: 24.05.2016
Сообщений: 48
13.07.2016, 17:47  [ТС]
Я вроде бы нашел, то что нужно, если делать зависимый комбобокс. Но не пойму, как DataGridView заменить на combobox, или это вообще не нужно?
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
        public Form1()
        {
            InitializeComponent();
            this.Size = new Size(500, 500);
            connection = new SqlConnection(@"Data Source=COMP\SQLEXPRESS;Initial Catalog=cyber;Integrated Security=True");
            adapterGroups = new SqlDataAdapter("SELECT id, name FROM groups;", connection);
            adapterStudents = new SqlDataAdapter("SELECT id, fio, idGroup FROM students", connection);
            dataSet = new DataSet();
            adapterGroups.Fill(dataSet, "groups");
            adapterStudents.Fill(dataSet, "students");
            dataSet.Relations.Add("groups-students", //название связи
                dataSet.Tables["groups"].Columns["id"],//первичный ключ главной таблицы
                dataSet.Tables["students"].Columns["idGroup"]);//внешний ключ подчиненной таблицы
            bindingSourceGroups = new BindingSource(dataSet, "groups");
            bindingSourceStudents = new BindingSource(bindingSourceGroups, "groups-students");
            gridGroups = new DataGridView();
            gridGroups.Size = new Size(this.ClientRectangle.Width - 20, (this.ClientRectangle.Height >> 1) - 15);
            gridGroups.Location = new Point(10, 10);
            gridGroups.DataSource = bindingSourceGroups;
            gridStudents = new DataGridView();
            gridStudents.Size = gridGroups.Size;
            gridStudents.Location = new Point(10, gridGroups.Bottom + 10);
            gridStudents.DataSource = bindingSourceStudents;
            this.Controls.AddRange(new Control[] { gridGroups, gridStudents });
        }
0
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
13.07.2016, 18:51
Kaberungula,
Зачем задавать вопросы, если ответы на них не нужны?
Вам в 3-х темах разные люди подсказали несколько вариантов, а вы что-то пытаетесь изобрести.
Вот пример для ваших 2-х таблиц. В комбобокс выводятся подразделения, в листбокс - принтеры из выбранного в комбобоксе подразделения.
Пример для Access. Для SQLite используйте соответствующие объекты:
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
private void Form1_Load(object sender, EventArgs e)
{
    using (OleDbConnection conn = new OleDbConnection(connString))
    {
        string commText = "SELECT * FROM Dept";
        OleDbCommand comm = new OleDbCommand(commText, conn);
        DataTable table = new DataTable();
        OleDbDataAdapter adapter = new OleDbDataAdapter(comm);
        adapter.Fill(table);
        comboBox1.DataSource = table;
        comboBox1.DisplayMember = "Dept_Name"; //отображаемое поле
        comboBox1.ValueMember = "ID_Dept"; //поле-значение
        comboBox1.SelectedIndex = -1; //снимаем выбор
    }
    comboBox1.SelectedIndexChanged += new EventHandler(comboBox1_SelectedIndexChanged);
}
 
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
    using (OleDbConnection conn = new OleDbConnection(connString))
    {
        string commText = "SELECT * FROM Printer where ID_Dept = @ID_dept";
        OleDbCommand comm = new OleDbCommand(commText, conn);
        comm.Parameters.AddWithValue("@ID_dept", (int)(sender as ComboBox).SelectedValue);
        DataTable table = new DataTable();
        OleDbDataAdapter adapter = new OleDbDataAdapter(comm);
        adapter.Fill(table);
        listBox1.DataSource = table;
        listBox1.DisplayMember = "Printer_Name"; //отображаемое поле
        listBox1.ValueMember = "ID_Print"; //поле-значение
        listBox1.SelectedIndex = -1; //снимаем выбор
    }
}
2
0 / 0 / 1
Регистрация: 24.05.2016
Сообщений: 48
14.07.2016, 11:59  [ТС]
Шикарно, спасибо. Просто мозги уже заплыли от этого). А что за " += ", почему не просто =? Не могу в инете найти инфы...
0
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
14.07.2016, 12:13
Kaberungula,
Это подписка на событие.
https://msdn.microsoft.com/ru-... 66768.aspx
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.07.2016, 12:13
Помогаю со студенческими работами здесь

Связь многие-ко-многим в Entity Framework
делаю задания с моделями сущностей entity framework. на примере студентов и курсов, у каждого студента может быть несколько курсов, как и у...

Связь многие ко многим (Entity Framework)
Мне нужна связь многие ко многим. Нашел вот тут хороший туториал который объясняет как ее сделать на Entity Framework. Но не понятно что...

Связь многие ко многим EntityFramework Code First
Всем привет! Столкнулся с проблемой при проектировании БД со связью многие-ко-многим. Ситуация следующая: есть врачи и есть мед....

БД (один ко многим)
Уважаемые разработчики если вас не затруднит помогите пожалуйста решить одну задачку которая у меня возникла Суть в следующим ...

Один ко многим
Добрый день. Есть 3 таблицы: главная и 2 подключенные к ней связью один ко многим. Хочу вывести из главной таблицы все данные в...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru