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

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

23.05.2017, 20:31. Просмотров 1071. Ответов 44

Ребят кто может подкинуть код который работает с двумя базами Access для проекта WindowsForm. Например есть 2 таблицы (1 и 2) пунктами они одинаковые имя и количество и во 2ой таблице имя и количество. Надо что бы при вводе данных во 2ую таблицу, данные "количество" вычитались из данных первой. Например в 1ой таблице имя: арбуз количество: 10, в 2ую вводим имя: арубз , количество: 3 ..... после чего в 1ой таблице количество становиться: 7.
http://www.cyberforum.ru/ado-net/thread1479189.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.05.2017, 20:31
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Как создать связь между двумя таблицами? (C#):

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

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

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

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

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

44
Итропинкаилесок
0 / 0 / 1
Регистрация: 04.08.2015
Сообщений: 155
24.05.2017, 21:31  [ТС] #2
Не уж то я опять что то не вероятное написал ? ))
0
Usaga
Эксперт .NET
3688 / 2988 / 543
Регистрация: 21.01.2016
Сообщений: 11,814
Завершенные тесты: 2
25.05.2017, 08:36 #3
Итропинкаилесок, нормально сформулируй вопрос и на него ответят.
1
hoolygan
263 / 270 / 74
Регистрация: 21.06.2016
Сообщений: 1,057
25.05.2017, 13:57 #4
подсказка.
шарп : "арбуз" != "Арбуз"
Access : "арбуз" == "Арбуз" или "арбуз" != "Арбуз" ?
Что значит "написал" - программа сама определит, что пользователь закончил писать? И где должно произойти вычитание? в клиенте (шарпе) или БД (Access)?
В общем - научитесь правильно задавать вопросы, в хорошем вопросе уже 80 % ответа содержится в большинстве случаев.
0
Итропинкаилесок
0 / 0 / 1
Регистрация: 04.08.2015
Сообщений: 155
30.05.2017, 10:25  [ТС] #5
Цитата Сообщение от hoolygan Посмотреть сообщение
подсказка.
шарп : "арбуз" != "Арбуз"
Access : "арбуз" == "Арбуз" или "арбуз" != "Арбуз" ?
Что значит "написал" - программа сама определит, что пользователь закончил писать? И где должно произойти вычитание? в клиенте (шарпе) или БД (Access)?
В общем - научитесь правильно задавать вопросы, в хорошем вопросе уже 80 % ответа содержится в большинстве случаев.
В БД (Access) должно происходить вычитание. Есть 2 базы (Access) они одинаковые имеют 2 колонки: Название и Количество. Возможно ли сделать так что бы при вводе данных (цифр) во 2ой таблице в колонку "количество" вычиталось значение из 1ой таблицы колонки "количество" ? Само приложение имеет вид Windows Form в которой есть выбор зайти либо в первую базу или во вторую. Все больше ничего нет. Я хочу что бы 1ая база менялась автоматом после введении данных во 2ой таблице.
0
hoolygan
263 / 270 / 74
Регистрация: 21.06.2016
Сообщений: 1,057
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
Итропинкаилесок
0 / 0 / 1
Регистрация: 04.08.2015
Сообщений: 155
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
hoolygan
263 / 270 / 74
Регистрация: 21.06.2016
Сообщений: 1,057
31.05.2017, 19:19 #8
Да вообще пофиг где, конечно реально, только нужно обработать таблицу на изменение строк, и вытащить все измененные, а потом одним махом обновить.
0
Итропинкаилесок
0 / 0 / 1
Регистрация: 04.08.2015
Сообщений: 155
31.05.2017, 19:24  [ТС] #9
Тучи сгущаются.... мне хана похоже.

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

Добавлено через 4 минуты
Я не очень силен в синтаксисе Access, работаю с ms sql и в 99 % с xml форматами, но такой путь тоже реален.
Изменения строк можно посмотреть в свойстве RowState, там где оно не unchanged - значит менялась - тогда доставайте 2 параметра - уникальный идентификатор, и значение в цикле (linq) каждой строки. С телефона пример тяжело искать, а писать еще тяжелее.
0
Aferuga
315 / 318 / 219
Регистрация: 20.05.2015
Сообщений: 947
Завершенные тесты: 1
01.06.2017, 08:33 #11
Обычно хватает и такого ответа)
http://www.cyberforum.ru/ado-net/thread1985384.html

Добавлено через 16 секунд
Обычно хватает и такого ответа)
http://www.cyberforum.ru/ado-net/thread1985384.html
0
Итропинкаилесок
0 / 0 / 1
Регистрация: 04.08.2015
Сообщений: 155
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
hoolygan
263 / 270 / 74
Регистрация: 21.06.2016
Сообщений: 1,057
02.06.2017, 09:35 #13
Цитата Сообщение от Итропинкаилесок Посмотреть сообщение
И куда его писать ??? У меня базы в DataGridView
Вы издеваетесь над нами? У Вас базы в
Цитата Сообщение от Итропинкаилесок Посмотреть сообщение
код который работает с двумя базами Access для проекта WindowsForm
И эти запросы нужно отправлять в Access, при чем тут DataGridView? - это вообще разное, с форм берете только номера строк (названия, да любое уникально поле) - и отправляете их как параметры в БД.
0
Итропинкаилесок
0 / 0 / 1
Регистрация: 04.08.2015
Сообщений: 155
02.06.2017, 17:40  [ТС] #14
Цитата Сообщение от hoolygan Посмотреть сообщение
с форм берете только номера строк (названия, да любое уникально поле) - и отправляете их как параметры в БД
Я вообще не понимаю какие строки, названия, уникальное поле ??? У меня в формах нету уникальных полей... не серчайте
0
hoolygan
263 / 270 / 74
Регистрация: 21.06.2016
Сообщений: 1,057
03.06.2017, 08:51 #15
А почему об этом узнаем через 3 дня общения? Вы бы хоть рассказали-показали, что есть, как заполняются гриды, что есть в таблицах, может и подсказали бы тогда Вам что-то по делу. А так больше похоже на то, что есть пустота, и нужно сделать все с нуля за Вас. Но тогда это не тот раздел форума.
0
Итропинкаилесок
0 / 0 / 1
Регистрация: 04.08.2015
Сообщений: 155
04.06.2017, 22:27  [ТС] #16
Цитата Сообщение от hoolygan Посмотреть сообщение
А почему об этом узнаем через 3 дня общения? Вы бы хоть рассказали-показали, что есть, как заполняются гриды, что есть в таблицах, может и подсказали бы тогда Вам что-то по делу. А так больше похоже на то, что есть пустота, и нужно сделать все с нуля за Вас. Но тогда это не тот раздел форума.
Хорошо скидываю, извините что сразу не скинул.
0
Вложения
Тип файла: zip TEST.zip (392.6 Кб, 1 просмотров)
Aferuga
315 / 318 / 219
Регистрация: 20.05.2015
Сообщений: 947
Завершенные тесты: 1
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
Итропинкаилесок
0 / 0 / 1
Регистрация: 04.08.2015
Сообщений: 155
05.06.2017, 12:26  [ТС] #18
Цитата Сообщение от Aferuga Посмотреть сообщение
добавить запрос-> выбираем Update-> и в конце кнопка построитель запросов
Добавить запрос - ясно, но вот нет там выбора Update - вставляю ваш код выбивает ошибку
0
Миниатюры
Как создать связь между двумя таблицами?   Как создать связь между двумя таблицами?  
Итропинкаилесок
0 / 0 / 1
Регистрация: 04.08.2015
Сообщений: 155
05.06.2017, 12:26  [ТС] #19
Что я не так делаю ?
0
Итропинкаилесок
0 / 0 / 1
Регистрация: 04.08.2015
Сообщений: 155
05.06.2017, 16:05  [ТС] #20
Цитата Сообщение от Aferuga Посмотреть сообщение
Запрос можно прописать в дизайнере 1DataSet правой на tablica1TableAdapter-> добавить запрос-> выбираем Update-> и в конце кнопка построитель запросов
Не получается....
0
Миниатюры
Как создать связь между двумя таблицами?   Как создать связь между двумя таблицами?  
05.06.2017, 16:05
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.06.2017, 16:05
Привет! Вот еще темы с решениями:

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

Програмно установить связь между таблицами SQLite
Первая таблица: using (SQLiteCommand command = new SQLiteCommand(connection))...

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

DataGridView и Access 2013 сложная связь между таблицами
Добрый день подскажите пожалуйста. Как сделать в DataGridView в строке ComboBox...


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

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

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