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

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

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

Ребят кто может подкинуть код который работает с двумя базами Access для проекта WindowsForm. Например есть 2 таблицы (1 и 2) пунктами они одинаковые имя и количество и во 2ой таблице имя и количество. Надо что бы при вводе данных во 2ую таблицу, данные "количество" вычитались из данных первой. Например в 1ой таблице имя: арбуз количество: 10, в 2ую вводим имя: арубз , количество: 3 ..... после чего в 1ой таблице количество становиться: 7.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.05.2017, 20:31
Ответы с готовыми решениями:

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

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

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

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

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

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

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

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

Добавлено через 16 секунд
Обычно хватает и такого ответа)
Как при вводе в одну таблицу данных изменить значение в другой таблице в строке с тем же номером?
0
Итропинкаилесок
0 / 0 / 1
Регистрация: 04.08.2015
Сообщений: 166
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
352 / 279 / 76
Регистрация: 21.06.2016
Сообщений: 1,099
02.06.2017, 09:35 13
Цитата Сообщение от Итропинкаилесок Посмотреть сообщение
И куда его писать ??? У меня базы в DataGridView
Вы издеваетесь над нами? У Вас базы в
Цитата Сообщение от Итропинкаилесок Посмотреть сообщение
код который работает с двумя базами Access для проекта WindowsForm
И эти запросы нужно отправлять в Access, при чем тут DataGridView? - это вообще разное, с форм берете только номера строк (названия, да любое уникально поле) - и отправляете их как параметры в БД.
0
Итропинкаилесок
0 / 0 / 1
Регистрация: 04.08.2015
Сообщений: 166
02.06.2017, 17:40  [ТС] 14
Цитата Сообщение от hoolygan Посмотреть сообщение
с форм берете только номера строк (названия, да любое уникально поле) - и отправляете их как параметры в БД
Я вообще не понимаю какие строки, названия, уникальное поле ??? У меня в формах нету уникальных полей... не серчайте
0
hoolygan
352 / 279 / 76
Регистрация: 21.06.2016
Сообщений: 1,099
03.06.2017, 08:51 15
А почему об этом узнаем через 3 дня общения? Вы бы хоть рассказали-показали, что есть, как заполняются гриды, что есть в таблицах, может и подсказали бы тогда Вам что-то по делу. А так больше похоже на то, что есть пустота, и нужно сделать все с нуля за Вас. Но тогда это не тот раздел форума.
0
Итропинкаилесок
0 / 0 / 1
Регистрация: 04.08.2015
Сообщений: 166
04.06.2017, 22:27  [ТС] 16
Цитата Сообщение от hoolygan Посмотреть сообщение
А почему об этом узнаем через 3 дня общения? Вы бы хоть рассказали-показали, что есть, как заполняются гриды, что есть в таблицах, может и подсказали бы тогда Вам что-то по делу. А так больше похоже на то, что есть пустота, и нужно сделать все с нуля за Вас. Но тогда это не тот раздел форума.
Хорошо скидываю, извините что сразу не скинул.
0
Вложения
Тип файла: zip TEST.zip (392.6 Кб, 1 просмотров)
Aferuga
356 / 349 / 231
Регистрация: 20.05.2015
Сообщений: 1,018
Завершенные тесты: 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
Сообщений: 166
05.06.2017, 12:26  [ТС] 18
Цитата Сообщение от Aferuga Посмотреть сообщение
добавить запрос-> выбираем Update-> и в конце кнопка построитель запросов
Добавить запрос - ясно, но вот нет там выбора Update - вставляю ваш код выбивает ошибку
0
Миниатюры
Как создать связь между двумя таблицами?   Как создать связь между двумя таблицами?  
Итропинкаилесок
0 / 0 / 1
Регистрация: 04.08.2015
Сообщений: 166
05.06.2017, 12:26  [ТС] 19
Что я не так делаю ?
0
Итропинкаилесок
0 / 0 / 1
Регистрация: 04.08.2015
Сообщений: 166
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

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

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

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


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

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

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