Форум программистов, компьютерный форум, киберфорум
C#: Базы данных, ADO.NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.80/25: Рейтинг темы: голосов - 25, средняя оценка - 4.80
1 / 1 / 3
Регистрация: 04.08.2015
Сообщений: 184
1

Как создать связь между двумя таблицами?

23.05.2017, 20:31. Показов 4868. Ответов 44

Author24 — интернет-сервис помощи студентам
Ребят кто может подкинуть код который работает с двумя базами Access для проекта WindowsForm. Например есть 2 таблицы (1 и 2) пунктами они одинаковые имя и количество и во 2ой таблице имя и количество. Надо что бы при вводе данных во 2ую таблицу, данные "количество" вычитались из данных первой. Например в 1ой таблице имя: арбуз количество: 10, в 2ую вводим имя: арубз , количество: 3 ..... после чего в 1ой таблице количество становиться: 7.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.05.2017, 20:31
Ответы с готовыми решениями:

Можно ли установить связь между двумя таблицами двух БД на одном сервере?
Есть два БД, можно ли установить связь между двумя таблицами этих бд?

Как разорвать связь между двумя ComboBox?
Здравствуйте. Начинаю разбираться с программированием. Возникла проблема. Есть база данных в C#....

Отобразить связь между таблицами
Такой вопрос. Есть две таблицы БД созданные в mssql и связанные между собой. На форме...

Вывести связь между таблицами
Всем доброго времени суток. Создал локальную бд (в файле рядом с программой), в ней создал 2...

44
1 / 1 / 3
Регистрация: 04.08.2015
Сообщений: 184
24.05.2017, 21:31  [ТС] 2
Не уж то я опять что то не вероятное написал ? ))
0
Эксперт .NET
12083 / 8391 / 1283
Регистрация: 21.01.2016
Сообщений: 31,638
25.05.2017, 08:36 3
Итропинкаилесок, нормально сформулируй вопрос и на него ответят.
1
360 / 287 / 76
Регистрация: 21.06.2016
Сообщений: 1,115
25.05.2017, 13:57 4
подсказка.
шарп : "арбуз" != "Арбуз"
Access : "арбуз" == "Арбуз" или "арбуз" != "Арбуз" ?
Что значит "написал" - программа сама определит, что пользователь закончил писать? И где должно произойти вычитание? в клиенте (шарпе) или БД (Access)?
В общем - научитесь правильно задавать вопросы, в хорошем вопросе уже 80 % ответа содержится в большинстве случаев.
0
1 / 1 / 3
Регистрация: 04.08.2015
Сообщений: 184
30.05.2017, 10:25  [ТС] 5
Цитата Сообщение от hoolygan Посмотреть сообщение
подсказка.
шарп : "арбуз" != "Арбуз"
Access : "арбуз" == "Арбуз" или "арбуз" != "Арбуз" ?
Что значит "написал" - программа сама определит, что пользователь закончил писать? И где должно произойти вычитание? в клиенте (шарпе) или БД (Access)?
В общем - научитесь правильно задавать вопросы, в хорошем вопросе уже 80 % ответа содержится в большинстве случаев.
В БД (Access) должно происходить вычитание. Есть 2 базы (Access) они одинаковые имеют 2 колонки: Название и Количество. Возможно ли сделать так что бы при вводе данных (цифр) во 2ой таблице в колонку "количество" вычиталось значение из 1ой таблицы колонки "количество" ? Само приложение имеет вид Windows Form в которой есть выбор зайти либо в первую базу или во вторую. Все больше ничего нет. Я хочу что бы 1ая база менялась автоматом после введении данных во 2ой таблице.
0
360 / 287 / 76
Регистрация: 21.06.2016
Сообщений: 1,115
30.05.2017, 13:02 6
Да, это абсолютно реально. Но я бы посоветовал расширить табличци для защиты "от дураков", так как арбуз <> aрбуз (написал абсолютно верно я, потому что в другом слове первая буква латинская - но выглядят одинаково). т.е. добавьте какое-то уникальное поле, например автоинкремент, но чтобы они были заполнены в том же порядке обе.
Тогда при передачи параметра уникального в БД делайте простой запрос
SQL
1
2
UPDATE table1 SET quantity = quantity - [параметр, что введен в поле в конкретной строке] WHERE Id = [уникальное поле, которое тоже возвращается с шарпа];
UPDATE table2 SET quantity = quantity + [параметр, что введен в поле в конкретной строке] WHERE Id = [уникальное поле, которое тоже возвращается с шарпа]
Как бы задача по БД довольно тривиальна. Осталось понять, где вызывается затык, на каком этапе разработки?
0
1 / 1 / 3
Регистрация: 04.08.2015
Сообщений: 184
31.05.2017, 19:19  [ТС] 7
Цитата Сообщение от hoolygan Посмотреть сообщение
SQL
1
2
UPDATE table1 SET quantity = quantity - [параметр, что введен в поле в конкретной строке] WHERE Id = [уникальное поле, которое тоже возвращается с шарпа];
UPDATE table2 SET quantity = quantity + [параметр, что введен в поле в конкретной строке] WHERE Id = [уникальное поле, которое тоже возвращается с шарпа]
Куда это втиснуть только не ясно. У меня не должно быть никакой кнопки. Это должно происходить например после закрытия 2ой таблицы. Это реально осуществить в "FormClosing" ?

Добавлено через 1 час 1 минуту
Это был код SQL у вас ? Чет не понял его че в базу как то надо приделать ? )
0
360 / 287 / 76
Регистрация: 21.06.2016
Сообщений: 1,115
31.05.2017, 19:19 8
Да вообще пофиг где, конечно реально, только нужно обработать таблицу на изменение строк, и вытащить все измененные, а потом одним махом обновить.
0
1 / 1 / 3
Регистрация: 04.08.2015
Сообщений: 184
31.05.2017, 19:24  [ТС] 9
Тучи сгущаются.... мне хана похоже.

Добавлено через 4 минуты
Цитата Сообщение от hoolygan Посмотреть сообщение
Да вообще пофиг где, конечно реально, только нужно обработать таблицу на изменение строк, и вытащить все измененные, а потом одним махом обновить.
А вы случаем нигде не видели примеров ? ) Я бы посмотрел да понял в чем оно дело то ... А сам я врядли смогу осилить информацию программера....
Сам искал ничего не нашел подобного. Везде лишь инфа о том как создать БД и вытащить в форму )
0
360 / 287 / 76
Регистрация: 21.06.2016
Сообщений: 1,115
31.05.2017, 19:30 10
Ну правильно. Вы же получаете данные из таблиц запросами в БД, правильно же? Поэтому предположу, что коннектится и выполнять запросы уже программа умеет. Делайте такое же подключение, и выполняйте эти команды, но только подставляя конкретные значения. Это если упрощать задачу для лабы и делать ее в лоб. Я же не знаю назначения программы.

Добавлено через 4 минуты
Я не очень силен в синтаксисе Access, работаю с ms sql и в 99 % с xml форматами, но такой путь тоже реален.
Изменения строк можно посмотреть в свойстве RowState, там где оно не unchanged - значит менялась - тогда доставайте 2 параметра - уникальный идентификатор, и значение в цикле (linq) каждой строки. С телефона пример тяжело искать, а писать еще тяжелее.
0
644 / 528 / 324
Регистрация: 20.05.2015
Сообщений: 1,469
01.06.2017, 08:33 11
Обычно хватает и такого ответа)
Как при вводе в одну таблицу данных изменить значение в другой таблице в строке с тем же номером?

Добавлено через 16 секунд
Обычно хватает и такого ответа)
Как при вводе в одну таблицу данных изменить значение в другой таблице в строке с тем же номером?
0
1 / 1 / 3
Регистрация: 04.08.2015
Сообщений: 184
01.06.2017, 22:06  [ТС] 12
Добавлено через 15 секунд
Цитата Сообщение от Aferuga Посмотреть сообщение
Обычно хватает и такого ответа)
Как при вводе в одну таблицу данных изменить значение в другой таблице в строке с тем же номером?
Добавлено через 16 секунд
Обычно хватает и такого ответа)
Как при вводе в одну таблицу данных изменить значение в другой таблице в строке с тем же номером?
Расшифруйте ваш код, а то не ясно куда что писать...
SQL
1
2
3
4
5
1
SELECT freepos FROM rooms WHERE id_room=@par_room
 
1
UPDATE rooms SET freepos=freepos-1 WHERE id_room=@par_room
И куда его писать ??? У меня базы в DataGridView... в двух формах...
0
360 / 287 / 76
Регистрация: 21.06.2016
Сообщений: 1,115
02.06.2017, 09:35 13
Цитата Сообщение от Итропинкаилесок Посмотреть сообщение
И куда его писать ??? У меня базы в DataGridView
Вы издеваетесь над нами? У Вас базы в
Цитата Сообщение от Итропинкаилесок Посмотреть сообщение
код который работает с двумя базами Access для проекта WindowsForm
И эти запросы нужно отправлять в Access, при чем тут DataGridView? - это вообще разное, с форм берете только номера строк (названия, да любое уникально поле) - и отправляете их как параметры в БД.
0
1 / 1 / 3
Регистрация: 04.08.2015
Сообщений: 184
02.06.2017, 17:40  [ТС] 14
Цитата Сообщение от hoolygan Посмотреть сообщение
с форм берете только номера строк (названия, да любое уникально поле) - и отправляете их как параметры в БД
Я вообще не понимаю какие строки, названия, уникальное поле ??? У меня в формах нету уникальных полей... не серчайте
0
360 / 287 / 76
Регистрация: 21.06.2016
Сообщений: 1,115
03.06.2017, 08:51 15
А почему об этом узнаем через 3 дня общения? Вы бы хоть рассказали-показали, что есть, как заполняются гриды, что есть в таблицах, может и подсказали бы тогда Вам что-то по делу. А так больше похоже на то, что есть пустота, и нужно сделать все с нуля за Вас. Но тогда это не тот раздел форума.
0
1 / 1 / 3
Регистрация: 04.08.2015
Сообщений: 184
04.06.2017, 22:27  [ТС] 16
Цитата Сообщение от hoolygan Посмотреть сообщение
А почему об этом узнаем через 3 дня общения? Вы бы хоть рассказали-показали, что есть, как заполняются гриды, что есть в таблицах, может и подсказали бы тогда Вам что-то по делу. А так больше похоже на то, что есть пустота, и нужно сделать все с нуля за Вас. Но тогда это не тот раздел форума.
Хорошо скидываю, извините что сразу не скинул.
Вложения
Тип файла: zip TEST.zip (392.6 Кб, 2 просмотров)
0
644 / 528 / 324
Регистрация: 20.05.2015
Сообщений: 1,469
05.06.2017, 07:59 17
Сразу вопрос на кой черт две базы? Если таблицы взаимосвязаны лучше использовать их в одной базе, если соотношение между таблицами один-к-одному то проще просто к таблице прикрутить ещё одно поле.
Уникальное поле в вашем случае с названием "код".
Запрос можно прописать в дизайнере 1DataSet правой на tablica1TableAdapter-> добавить запрос-> выбираем Update-> и в конце кнопка построитель запросов
SQL
1
2
3
UPDATE       tablica1
SET            Количество = Количество + ?
WHERE        (Код = ?)
появится новый запрос (по умолчанию UpdateQuery) заходим в его параметры(Parametrs) и меням DBType на INT32
Далее вызываем уже на самой форме в каком-нибудь методе:
C#
1
2
3
            
int val = int.Parse(dataGridView1.Rows[dataGridView1.CurrentCellAddress.Y].Cells[0].Value.ToString());
            this.tablica1TableAdapter.UpdateQuery(-1,val);
З. Ы. не говорю что это лучший вариант, но как пример сойдет.
0
1 / 1 / 3
Регистрация: 04.08.2015
Сообщений: 184
05.06.2017, 12:26  [ТС] 18
Цитата Сообщение от Aferuga Посмотреть сообщение
добавить запрос-> выбираем Update-> и в конце кнопка построитель запросов
Добавить запрос - ясно, но вот нет там выбора Update - вставляю ваш код выбивает ошибку
Миниатюры
Как создать связь между двумя таблицами?   Как создать связь между двумя таблицами?  
0
1 / 1 / 3
Регистрация: 04.08.2015
Сообщений: 184
05.06.2017, 12:26  [ТС] 19
Что я не так делаю ?
0
1 / 1 / 3
Регистрация: 04.08.2015
Сообщений: 184
05.06.2017, 16:05  [ТС] 20
Цитата Сообщение от Aferuga Посмотреть сообщение
Запрос можно прописать в дизайнере 1DataSet правой на tablica1TableAdapter-> добавить запрос-> выбираем Update-> и в конце кнопка построитель запросов
Не получается....
Миниатюры
Как создать связь между двумя таблицами?   Как создать связь между двумя таблицами?  
0
05.06.2017, 16:05
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.06.2017, 16:05
Помогаю со студенческими работами здесь

Связь между таблицами на разных формах
Подскажите пожалуйста, как связать таблицы на разных формах. Делал на делфи &quot;костыли&quot;, все отлично...

Отношение между двумя таблицами
Привет всем. Есть две таблицы - Card и Pooshren. У Card есть первичный ключ(столбец itemperson). У...

Как создать сваязи между таблицами?
У меня 6 таблиц как можно создать между ними связ?

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


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

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