Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: Базы данных, ADO.NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
alc_alc
0 / 0 / 0
Регистрация: 24.12.2015
Сообщений: 12
1

Не включать сотрудников в одноименную новую компанию

07.11.2016, 03:14. Просмотров 872. Ответов 9
Метки нет (Все метки)

Подскажите направление в решение задачи, вообщем есть бд access в ней есть 2 табл. (компания и сотрудник)
В приложение написанное на C# в Visual Studio 2013.

Структура:
На главной форме есть два лист бокса:
- 1 листбокс - список компаний,
- 2 листбокс - список сотрудников выбранной компании.
- А так же кнопки: создать, удалить, редактировать

Так же есть еще три формы:
- Редактирования\Создания компании
- Редактирования\Создания сотрудника
- Справка

На данном этапе все работает.


НО!!!!!!

Проблема в том, что нужно чтобы при создании компании с одинаковым именем (например интел) все сотрудники аналогичной компании автоматом НЕ входили в состав созданной компании.

В таблице "Компания" есть поле ID, но как связать ID с столбцом FIO (табл. сотрудник), ума не приложу!

Может кто то подскажет, что нужно сделать по шагово (можно кратко)????
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.11.2016, 03:14
Ответы с готовыми решениями:

Создайте новую програму, которая будет включать класс fraction
Создайте новую програму, которая будет включать класс fraction, созданные в Том упражнении....

Заменить большую букву на одноименную малую; удалить все не буквы и цифры
Вывести слова, в которых заменить каждую большую букву одно-именной малой; удалить все символы, не...

Вывести информацию о сотруднике, список сотрудников пенсионного возраста, средний оклад сотрудников отдела
Дан файл, содержащий информацию о сотрудниках отдела учреждения. Структура записи файла:...

Как создать новую базу в 1с бухгалтерия и перенести данные из старой базы в новую?
Доброго времени суток: подскажите пожалуйста начинающиму администратору: как создать новую ИБ в 1С...

Получить новую матрицу, вставив одномерный массив как новую строку, номер которой задается с клавиатуры
Дана матрица размером N x M и одномерный массив из M элементов. Получить новую матрицу, вставив...

9
OwenGlendower
Супер-модератор
Эксперт .NET
10424 / 8973 / 3838
Регистрация: 17.03.2014
Сообщений: 18,028
Записей в блоге: 1
07.11.2016, 03:28 2
Лучший ответ Сообщение было отмечено alc_alc как решение

Решение

alc_alc, есть подозрение что у тебя связь идет по имени компании, а нужно по ID. Добавь в таблицу "сотрудники" колонку CompanyID и сделай её внешним ключом связанным с колонкой ID из таблицы Компании. При выборке сотрудников компании делаем запрос вида
SQL
1
2
3
4
SELECT [FIO]
FROM Company
JOIN Employee ON Company.ID = Employee.CompanyID
WHERE Company.Name = 'интел'
Аналогичным образом нужно переделать остальной код.
1
alc_alc
0 / 0 / 0
Регистрация: 24.12.2015
Сообщений: 12
07.11.2016, 04:04  [ТС] 3
так оно и есть по имени компании связь, попробую сделать по ID
0
alc_alc
0 / 0 / 0
Регистрация: 24.12.2015
Сообщений: 12
10.11.2016, 02:57  [ТС] 4
хм странно но если в базе есть одинаковые имена компаний то они не удаляются и не редактируются
а так же их сотрудники также не удалить не редактировать и не создать

полюбак дело в связке ID компании в таблице компании и дубля ID компании в таблице сотрудник
0
Миниатюры
Не включать сотрудников в одноименную новую компанию  
OwenGlendower
Супер-модератор
Эксперт .NET
10424 / 8973 / 3838
Регистрация: 17.03.2014
Сообщений: 18,028
Записей в блоге: 1
10.11.2016, 05:38 5
Цитата Сообщение от alc_alc Посмотреть сообщение
полюбак дело в связке ID компании в таблице компании и дубля ID компании в таблице сотрудник
А мне кажется что дело в коде который нужно исправить на новый вариант связи таблиц.
0
alc_alc
0 / 0 / 0
Регистрация: 24.12.2015
Сообщений: 12
14.11.2016, 01:21  [ТС] 6
1. А по каким причинам происходит задержка обновления LISTBOX или считывания данных с БД Access?

т.е. я добавляю сотрудника в компанию в базу данных он попадает, но отображение в листбоксе проходит с задержкой (~ 3 сек)

2. Если я хочу сделать так , чтобы при удалении компании удалялись сразу и ее сотрудники, я так понимаю, тут нужно удаление проводить по ID или как?
0
OwenGlendower
Супер-модератор
Эксперт .NET
10424 / 8973 / 3838
Регистрация: 17.03.2014
Сообщений: 18,028
Записей в блоге: 1
14.11.2016, 06:58 7
alc_alc, 1. Не знаю. Надо смотреть код

2. Нужно включить каскадное удаление (cascade delete) для связи между таблицами "компания" и "сотрудники". Тогда при удалении строки из "компании" будет автоматически удалены строки из "сотрудники".

Или нужно делать два DELETE запроса - первый из "сотрудники" по ID компании. Второй из "компании".
0
alc_alc
0 / 0 / 0
Регистрация: 24.12.2015
Сообщений: 12
17.11.2016, 06:28  [ТС] 8
даже не с задержкой, а бывает что сразу после добавление первой записи в листбоксе отображается сразу, но потом нет, пока не нажмешь на названия компании в первом листбоксе, только после этого появляются все записи в листбоксе 2

Добавлено через 3 минуты
ок, что тогда нужно написать на события закрытия формы3 , чтобы обновился листбокс2 на форме 1?
0
OwenGlendower
Супер-модератор
Эксперт .NET
10424 / 8973 / 3838
Регистрация: 17.03.2014
Сообщений: 18,028
Записей в блоге: 1
17.11.2016, 12:29 9
alc_alc, насчет т.н. "задержки" - наверное обновление второго listbox идет по событию SelectionChanged первого. Чтобы обновление шло всегда попробуй явно обновлять выбранный элемент.

Насчет второго - сделай метод для обновления и вызывай его.
0
alc_alc
0 / 0 / 0
Регистрация: 24.12.2015
Сообщений: 12
21.11.2016, 01:13  [ТС] 10
Ух, все сделано.... оно как говарится вертится, работает
0
21.11.2016, 01:13
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.11.2016, 01:13

Не хочет включать Wi-Fi
Доброго времени суток!! Включаю ноутбук (на 7, dual core) а вместо обычно белого значка...

Нужно ли включать смарт?
Знатоки, подскажите такое. Есть в винчестерах такая вещь как смарт, которая позволяет предупредить...

Как программно включать/выключать Wi-Fi
Доброго дня суток! Написал программу, запрещающую пользоваться компьютером в определенные периоды...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru