Форум программистов, компьютерный форум, киберфорум
C#: Базы данных, ADO.NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 24.12.2015
Сообщений: 12
1
MS Access

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

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

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

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

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

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


НО!!!!!!

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

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

Может кто то подскажет, что нужно сделать по шагово (можно кратко)????
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.11.2016, 03:14
Ответы с готовыми решениями:

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

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

Google maps, при поиске по улице в Ставрополе, показывает на карте одноимённую улицу в Москве
Это фильтрация по адресу в уже найденном по городу. На карте до того как выполняется код ниже,...

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

9
Администратор
Эксперт .NET
17019 / 13372 / 5217
Регистрация: 17.03.2014
Сообщений: 27,342
Записей в блоге: 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
0 / 0 / 0
Регистрация: 24.12.2015
Сообщений: 12
07.11.2016, 04:04  [ТС] 3
так оно и есть по имени компании связь, попробую сделать по ID
0
0 / 0 / 0
Регистрация: 24.12.2015
Сообщений: 12
10.11.2016, 02:57  [ТС] 4
хм странно но если в базе есть одинаковые имена компаний то они не удаляются и не редактируются
а так же их сотрудники также не удалить не редактировать и не создать

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

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

2. Если я хочу сделать так , чтобы при удалении компании удалялись сразу и ее сотрудники, я так понимаю, тут нужно удаление проводить по ID или как?
0
Администратор
Эксперт .NET
17019 / 13372 / 5217
Регистрация: 17.03.2014
Сообщений: 27,342
Записей в блоге: 1
14.11.2016, 06:58 7
alc_alc, 1. Не знаю. Надо смотреть код

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

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

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

Насчет второго - сделай метод для обновления и вызывай его.
0
0 / 0 / 0
Регистрация: 24.12.2015
Сообщений: 12
21.11.2016, 01:13  [ТС] 10
Ух, все сделано.... оно как говарится вертится, работает
0
21.11.2016, 01:13
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.11.2016, 01:13
Помогаю со студенческими работами здесь

Извлечь из представления количество сотрудников по каждому отделу, где минимальный шифр сотрудников меньше среднего
Помогите пожалуйста :help: Мне нужно извлечь из представления (ViewZadanie9) количество...

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

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

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

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

Стоит ли включать комп?
Привет. Произошла неприятная ситуация. Я купил новую видюху: asus rx460 2gb dual, взамег старой:...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru