|
0 / 0 / 0
Регистрация: 04.09.2014
Сообщений: 28
|
|
Как связать столбец: Статус из трех таблиц к четвертой?24.04.2016, 03:42. Показов 1194. Ответов 8
Метки нет (Все метки)
У меня есть база данных, в ней три таблицы.
А на четвертой должно быть, что-то вроде: Первый столбец: ID естественно, он уже в базе вбит как AI Второй столбец: Тут значение с первой таблицы Третий столбец: Тут значение с второй таблицы Четвертый столбец: Тут значение с третьей таблицы Вот в каждой из тех трех таблиц есть ID с AI. Вот надо сделать взаимосвязь между ними, что бы в четвертой показывалось. Пример: В магазине работает охранник, продавец и менеджер. В трех таблицах есть база сотрудников, но лишь некоторые сейчас на дежурстве. Вот в каждой из тех трех есть ячейка: "На дежурстве/Выходной/Больничный". И вот как бы, если на дежурстве, что бы имя человека (Fullname столбец) автоматически добавлялось в четвертую базу к его столбцу(будь то охранник, продавец или вовсе менеджер). Но была возможность замены как ComboBox в самой базе, для возможности замены того или иного сотрудника. Типо сегодня в ID - 1 магазине, Вася-охранник работает с Асей-продавщицей и Дмитрием-менеджером. Только у меня конечно идея не магазина, но суть та же. Уже неделю маюсь, не могу понять как их связать. И вот раз не получается сделать самому, решил спросить у опытных. По сути главное есть, только связать их как-то надо. Если на dataGridView выбрать правка столбцов: И в ColumnType можно сделать ComboBox. Но связать всё равно их не смог. Вот мини-примерная база: Table1 ID || Fullname Table2 ID || Fullname Table3 ID || Fullname Table4 ID || Table1 || Table2 || Table3 TestEntities test; По сути я предполагаю, что там строк на 5-10 будет. Потому, что главная база создана. Так, что я думаю хоть кто нибудь да помочь сможет. Мне примерный код нужен, а там уже я подстрою под свои переменные. Я уже без понятия как их связать.. кучу способов перепробовал. P.S. Я создал базу через SQL Server Management Studio 2014 и потом добавил её как модель ADO.NET. Код писал только на Добавить/Удалить/Изменить/Сохранить всё это дело.
0
|
|
| 24.04.2016, 03:42 | |
|
Ответы с готовыми решениями:
8
Как связать через Binding контрол и статус DATAROW Как составить массив m x 2, где 1-й столбец составлен из сумм трёх наименьших, 2-й из суммы трёх наибольших элементов массива m x n |
|
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
|
||
| 24.04.2016, 18:25 | ||
|
Полезное правило при планировании базы: при нормальной работе меняться должно только количество строк в таблицах, но не количество таблиц и колонок в них. Сделайте нормальную организацию: таблица, в которой хранятся возможные должности; таблица, в которой хранятся сотрудники. Если сотрудник может иметь только одну должность, то к ним в таблицу ключ должности из первой таблицы. Если может иметь несколько должностей, то делайте таблицу-связку, в которой будет ИД сотрудника и должности. Потом сделайте таблицу для расписания, где каждый сотрудник или связка сотрудник/должность привязаны к дням недели и часам работы. И, наконец, таблицу посещаемости, где будет отмечаться дата и время выхода на работу каждого сотрудника и причина ухода (конец смены, туалет, обед и т.д.). Последнюю можно разбить на две таблицы (пришел/ушел), если нужны определенные типы запросов. Но я бы оставил одну таблицу с двумя колонками: мне неизвестны случаи, когда сотрудник пришел бы на работу, но не ушел (или его не вынесли оттуда). Сделайте что-то вроде этого и жить станет намного проще.
1
|
||
|
0 / 0 / 0
Регистрация: 04.09.2014
Сообщений: 28
|
|||||||
| 25.04.2016, 11:18 [ТС] | |||||||
на работе/выходной/больничный) и Нарушения: 0-3. И как я знаю, если человек на выходном, то его могут запросто вызвать и он обязан прийти. Просто по звонку. Для замены другого. И расписание у них каждый день выставляется на только три дня, а может даже два дня вперед. Постоянно варьируется. Поэтому, мне надо, что бы на четвертой таблице человек мог видеть: ID || Table1 || Table2 || Table3 Тут AI || ComboBox || ComboBox || ComboBox Если в Править столбцы я смог сделать их ComboBox, и там же DataSource подключаю к Table1BindingSource, DisplayMember - Fullname, ValueMember - Fullname. И также с другими Table2, Table3. И получается у меня есть доступ к Fullname с других таблиц. Но, в чём суть, мне надо, что бы в списке убирались строки Fullname которые: 1. Уже добавлены. 2. В Status - у них значение не "На линии". А то список весь кидает. Как бы человек пришёл, открыл таблицу Table1. Выбрал несколько людей, поставил на Линию. Потом с Table2, Table3. Затем переходит к 4, и там просто сопоставляет людей между собой. Что бы Вася был сегодня с Асей и Димой. А Ваня и Даша помогали Лере. Да, насчёт расписания вы правильно сказали, но если бы они хотя бы на неделю писали это расписание и можно было бы создать новую форму и в ней составляли бы расписание. Но, у них это не реально. Постоянные замены идут. Поэтому в онлайн режиме получается смена будет, как я уже описал выше. Добавлено через 2 часа 12 минут К примеру, я бы мог использовать SqlCommand добавив: using System.Data.SqlClient; Что-то вроде: Если, при проверке, стоит На линии, то не показывать. SqlConnection con = new SqlConnection("Подключение к базе"); SqlCommand cmd = new SqlCommand("select * from table1 where Status = '"На линии"", con); И опять же толком не знаю как обращаться потом к тем ComboBox в dataGridView. Я ведь использую Entity Framework. У меня в app.config уже есть подключение. Поэтому, он еще и начинает ссылаться на то, что моё SqlConnection требует открытого подключения. Как правильно написать код, что бы если стоит в Status = "На линии", и если он есть уже в Table4. То убрать из ComboBox в DataGridView. Добавлено через 1 час 6 минут Сделал проще, чем мудрить с базой: ID || Table1 || Table2 || Table3 Кнопка добавить, выбирает в ComboBox из Table1 значение Fullname. И также с другими. Но как убирать строки Fullname которые: 1. Уже добавлены в таблицу №4. 2. В Status - у них значение не "На работе". Я до сих пор не знаю. Вот как я добавлял значения в таблицы: после первого паблика TestEntities test; В кнопке Добавить.
0
|
|||||||
|
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
|
||
| 25.04.2016, 11:47 | ||
|
Если учебная, то по какому предмету?
0
|
||
|
0 / 0 / 0
Регистрация: 04.09.2014
Сообщений: 28
|
|||
| 26.04.2016, 00:27 [ТС] | |||
|
Но всё равно трабл с 4 таблицей есть. Вот думаю как сделать.. Нас в колледже учили Delphi, а когда начали сишку, то поувольнялись все преподы. Разрешили делать дипломную на Делфи, но хочется новое, да и он старый как бы. С# щас более востребован. Вот и не всё понимаю как сделать. Запуск программы на другом компе - в этой теме прочел: Попробую добавить в настройках добавление установщика .Net FrameWork. Но если у них интернета не будет, то я хз Добавлено через 6 минут Пробовал на другом ноуте, там нет .net, и ни один из Release, Debug и даже собирал сборку, что бы вышел setup.exe , ни что не открывает программу, ругается на Entity Framework. Добавлено через 35 минут Как оказалось: <add name="TestEntities" connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SqlClien t;provider connection string="data source=WIN-OAL0QTQQV05;initial catalog=BusApp;persist security info=True;user id=sa;password=123456;MultipleActiveResu ltSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" /> Он же идёт от SQL Server Manager Studio. И как бы на другом компе, он не знает где база данных. Ща думаю как решить это Добавлено через 37 минут я взял базу BusApp.mdf , как теперь заменить ту строку, что бы она не разрушила всё, но и была получается локальной, прямо в папке, сойдет
0
|
|||
|
Warrior
500 / 427 / 177
Регистрация: 23.11.2014
Сообщений: 932
|
|
| 26.04.2016, 00:32 | |
|
Очевидно нужен корректный "data source" сейчас он у вас ведет на имя компьютера WIN-OAL0QTQQV05. Можно предположить что у вас дефолтный инстанс у службы ms sql.
0
|
|
|
0 / 0 / 0
Регистрация: 04.09.2014
Сообщений: 28
|
||
| 26.04.2016, 00:48 [ТС] | ||
|
0
|
||
|
0 / 0 / 0
Регистрация: 04.09.2014
Сообщений: 28
|
||||||
| 11.05.2016, 19:16 [ТС] | ||||||
|
Разобрался с подключением.
Создал отдельные ComboBox 1,2,3. Подключил их к столбцу из других баз. Подключил их к моей 4 таблице. И всё хорошо и сохраняется. Но, до сих пор не знаю как убирать те, которые уже есть в базе. И те строки, которые имеют статус: Выходной.
P.S. На SqlConnection больше не ругается. И насчёт транспортировки не страшно. Оказалось, там есть SQL Server. И я просто перенесу свою базу туда и в app.config изменю Имя Компьютера и пароль от сервера. Так, что осталось только вот с ComboBox траблы..((((
0
|
||||||
|
0 / 0 / 0
Регистрация: 04.09.2014
Сообщений: 28
|
|||||||||||
| 14.05.2016, 19:44 [ТС] | |||||||||||
|
Вот что получилось. Кто может помочь, доработать...
0
|
|||||||||||
| 14.05.2016, 19:44 | |
|
Помогаю со студенческими работами здесь
9
сколько таблиц и как их связать? Как связать несколько таблиц? Как связать несколько таблиц Несколько таблиц на форме - как связать? Как в Экселе связать порядка 40 таблиц Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. .
Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
|
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла:
Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
|
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-text-sdl3-c. zip
finish-text-sdl3-cpp. zip
|
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
|
|
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo
Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло.
Но на выплатах по больничным это. . .
|
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
|
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y
Z4Tv2zpXVVo
https:/ / github. com/ shumilovas/ med2. git
|
Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа.
В качестве фильтра для отбора справочника служит группа номенклатуры.
Отбор по наименованию группы. . .
|