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

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

23.05.2017, 20:31. Просмотров 1121. Ответов 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
Сообщений: 167
05.06.2017, 16:10  [ТС] #21
Вот так вот....
0
Миниатюры
Как создать связь между двумя таблицами?  
Итропинкаилесок
0 / 0 / 1
Регистрация: 04.08.2015
Сообщений: 167
05.06.2017, 16:46  [ТС] #22
Цитата Сообщение от Aferuga Посмотреть сообщение
Сразу вопрос на кой черт две базы? Если таблицы взаимосвязаны лучше использовать их в одной базе, если соотношение между таблицами один-к-одному то проще просто к таблице прикрутить ещё одно поле.
Уникальное поле в вашем случае с названием "код".
Запрос можно прописать в дизайнере 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);
З. Ы. не говорю что это лучший вариант, но как пример сойдет.
Все сделал как написано... В итоге что бы я не писал в "количество" во второй таблице в первой таблице уменьшается на 1 ))) Криво работает...
0
Итропинкаилесок
0 / 0 / 1
Регистрация: 04.08.2015
Сообщений: 167
05.06.2017, 17:01  [ТС] #23
Цитата Сообщение от Итропинкаилесок Посмотреть сообщение
Сообщение от Aferuga
Сразу вопрос на кой черт две базы? Если таблицы взаимосвязаны лучше использовать их в одной базе, если соотношение между таблицами один-к-одному то проще просто к таблице прикрутить ещё одно поле.
Уникальное поле в вашем случае с названием "код".
Запрос можно прописать в дизайнере 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);
З. Ы. не говорю что это лучший вариант, но как пример сойдет.
Все сделал как написано... В итоге что бы я не писал в "количество" во второй таблице в первой таблице уменьшается на 1 ))) Криво работает...
Еще раз все сделал по инструкции.... В итоге не работает.... Если во tablica2 менять значение то в tablica1 черти что твориться.... Вот посмотрите пжлста
0
Вложения
Тип файла: zip TEST.zip (404.7 Кб, 1 просмотров)
Итропинкаилесок
0 / 0 / 1
Регистрация: 04.08.2015
Сообщений: 167
05.06.2017, 18:12  [ТС] #24
Цитата Сообщение от Usaga Посмотреть сообщение
Итропинкаилесок, нормально сформулируй вопрос и на него ответят.
Вы можете посмотреть приложение и указать где ошибка ?
0
Usaga
Эксперт .NET
4884 / 3278 / 585
Регистрация: 21.01.2016
Сообщений: 12,920
Завершенные тесты: 2
05.06.2017, 18:15 #25
Итропинкаилесок, что именно там неправильно работает?
0
Итропинкаилесок
0 / 0 / 1
Регистрация: 04.08.2015
Сообщений: 167
05.06.2017, 18:29  [ТС] #26
Цитата Сообщение от Usaga Посмотреть сообщение
Итропинкаилесок, что именно там неправильно работает?
Мне написали инструкцию... я все сделал.... но в итоге вместо того что бы при изменении tablca2 менялась tablica1 ничего не происходит... если менять "количество" в tablica2 то в tablica1 значение меняется но не правильно! А когда я просто пытаюсь изменить значение в tablica1 то при закрытии выбивает ошибку. Посмотрите пжлста у себя на компьютере так будет гораздо быстрее... это не займет много времени.. приложении простейшее думаю для вас умелых.
0
Usaga
Эксперт .NET
4884 / 3278 / 585
Регистрация: 21.01.2016
Сообщений: 12,920
Завершенные тесты: 2
05.06.2017, 18:47 #27
Итропинкаилесок, я не знаю, что вы пытались делать и в каком были состоянии, когда это делали, но у вас adapter1 пытается сохранить данные в таблицу2, которая физически находится в другой базе данных.
0
Итропинкаилесок
0 / 0 / 1
Регистрация: 04.08.2015
Сообщений: 167
05.06.2017, 19:22  [ТС] #28
Цитата Сообщение от Usaga Посмотреть сообщение
Итропинкаилесок, я не знаю, что вы пытались делать и в каком были состоянии, когда это делали, но у вас adapter1 пытается сохранить данные в таблицу2, которая физически находится в другой базе данных.
А это не возможно ? Мне это решение скинули ранее...
0
Usaga
Эксперт .NET
4884 / 3278 / 585
Регистрация: 21.01.2016
Сообщений: 12,920
Завершенные тесты: 2
05.06.2017, 19:30 #29
Итропинкаилесок, таким образом это не сделать. Нужно данные вытащить в память и уже другим запросом передать в нужную таблицу в нужной БД.

Вы лучше словами объясните что и зачем хотите сделать. Представленный вами проект выглядит как полный бред: две идентичные таблицы в разных базах...
0
Итропинкаилесок
0 / 0 / 1
Регистрация: 04.08.2015
Сообщений: 167
05.06.2017, 19:53  [ТС] #30
Цитата Сообщение от Usaga Посмотреть сообщение
Итропинкаилесок, таким образом это не сделать. Нужно данные вытащить в память и уже другим запросом передать в нужную таблицу в нужной БД.
Вы лучше словами объясните что и зачем хотите сделать. Представленный вами проект выглядит как полный бред: две идентичные таблицы в разных базах...
Все что я хочу это что бы при изменении значения "количество" во второй таблице менялось "количество" в первой таблице.... Можно и в одном БД сделать обе таблицы... я не против
0
Usaga
Эксперт .NET
4884 / 3278 / 585
Регистрация: 21.01.2016
Сообщений: 12,920
Завершенные тесты: 2
06.06.2017, 03:33 #31
Итропинкаилесок, хорошо. А это, в свою очередь, для чего понадобилось? Это ведь тоже не самое разумное требование. Какой в этом смысл?
0
Aferuga
324 / 326 / 220
Регистрация: 20.05.2015
Сообщений: 958
Завершенные тесты: 1
06.06.2017, 03:40 #32
в дизайнере откройте 1DataSet(в окне "Обзреватель решений" дважды нажмите на 1dataset) откроется дизайнер 1dataset там и меняйте.
0
Usaga
Эксперт .NET
4884 / 3278 / 585
Регистрация: 21.01.2016
Сообщений: 12,920
Завершенные тесты: 2
06.06.2017, 03:44 #33
Aferuga, вы о чём?
0
Aferuga
324 / 326 / 220
Регистрация: 20.05.2015
Сообщений: 958
Завершенные тесты: 1
06.06.2017, 03:48 #34
Usaga, он дизайнер датасета открыть не может)
0
Usaga
Эксперт .NET
4884 / 3278 / 585
Регистрация: 21.01.2016
Сообщений: 12,920
Завершенные тесты: 2
06.06.2017, 04:10 #35
Aferuga, мне кажется, что тут даже не в дизайнере дело. Из постановки задачи, условие которой ещё и плавает как калоша в луже, я могу предположить, что ТС-у нужно всего лишь связать данными две формы. А две таблицы в двух базах данных выплыли как следствие полного незнания языка.

Я, конечно, могу ошибать, но лично мне не приходит в голову хоть сколько-нибудь полезный кейс использования двух идентичных таблиц в одной или пофиг скольки БД, ещё и синхронизирующих свои данные.

Добавлено через 3 минуты
Максимум, что похожего можно придуть - заиметь вьюху (view) в БД, которая будет неким вариантом (представлением) другой таблицы. Но такое имеет смысл, когда нужно некоторое отличие. А тут польностью идентичные по структуре таблицы, да ещё, получается, с одним содержимым. Т.е. речь вообще об одной таблице. Наркомания какая-то, короче. Лучше подождать разъяснений ТС-а.
0
Итропинкаилесок
0 / 0 / 1
Регистрация: 04.08.2015
Сообщений: 167
06.06.2017, 06:49  [ТС] #36
Цитата Сообщение от Usaga Посмотреть сообщение
Максимум, что похожего можно придуть - заиметь вьюху (view) в БД, которая будет неким вариантом (представлением) другой таблицы. Но такое имеет смысл, когда нужно некоторое отличие. А тут польностью идентичные по структуре таблицы, да ещё, получается, с одним содержимым. Т.е. речь вообще об одной таблице. Наркомания какая-то, короче. Лучше подождать разъяснений ТС-а.
Видать не подъемная дело получается.... Вот вам смысл этой наркомании... Приложение будет для наркомана... Он ведет учет наркотиков (название и количество) Он сумасшедший и любит закупаться наркотой на месяцы в перед.. В первой таблице изначальное количество наркоты, во второй таблице уже употребленное количество наркоты. И наркоман не может сосчитать количество оставшейся ДОЗЫ... поэтому из первой таблицы должна вычитаться вторая автоматом.. (у нарика нету сил, нарик устал, но он хочет знать "Сколько еще у мну осталося")
0
Usaga
Эксперт .NET
4884 / 3278 / 585
Регистрация: 21.01.2016
Сообщений: 12,920
Завершенные тесты: 2
06.06.2017, 07:45 #37
Итропинкаилесок, Здоровое чувство юмора - хорош.

Если дело обстоит именно так, то всё это можно сделать строго в одной таблице. Вам понадобится три поля: начальное количество, употреблённое и оставшееся количество. Последнее можно сделать вычисляемым (Computed), которое будет считаться самой СУБД в момент изменения любого из первых двух полей.

Подобная вещь реализуется и в рамках DataTable.
1
Итропинкаилесок
0 / 0 / 1
Регистрация: 04.08.2015
Сообщений: 167
12.06.2017, 17:14  [ТС] #38
Цитата Сообщение от Usaga Посмотреть сообщение
Итропинкаилесок, Здоровое чувство юмора - хорош.
Если дело обстоит именно так, то всё это можно сделать строго в одной таблице. Вам понадобится три поля: начальное количество, употреблённое и оставшееся количество. Последнее можно сделать вычисляемым (Computed), которое будет считаться самой СУБД в момент изменения любого из первых двух полей.
Подобная вещь реализуется и в рамках DataTable.
Снова побеспокою.. Я ранее уже скидывал чудо приложение. Сначала открывается начальная форма с которых можно запустить остальные две формы. Можно сделать так что бы не закрывая одну форму открывать следующую ?? А то так приходиться закрывать предыдущую для открытия следующей.
Заранее спасибо.

Добавлено через 15 секунд
Цитата Сообщение от Usaga Посмотреть сообщение
Итропинкаилесок, Здоровое чувство юмора - хорош.
Если дело обстоит именно так, то всё это можно сделать строго в одной таблице. Вам понадобится три поля: начальное количество, употреблённое и оставшееся количество. Последнее можно сделать вычисляемым (Computed), которое будет считаться самой СУБД в момент изменения любого из первых двух полей.
Подобная вещь реализуется и в рамках DataTable.
Снова побеспокою.. Я ранее уже скидывал чудо приложение. Сначала открывается начальная форма с которых можно запустить остальные две формы. Можно сделать так что бы не закрывая одну форму открывать следующую ?? А то так приходиться закрывать предыдущую для открытия следующей.
Заранее спасибо.

Добавлено через 54 минуты
Цитата Сообщение от Usaga Посмотреть сообщение
Подобная вещь реализуется и в рамках DataTable.
Вышло все не так... Сделал так: Теперь одна база в ней 2е таблицы! Одна в первой форме... другая во второй форме. Как реализовать следующее вычисление ? В первой таблице есть строка (код: 6)" в этой же строке указано "количество"... во второй таблице есть столбец с именем "Роба" .... Я хочу что бы из первой таблицы строки код:6, из "Количество" вычиталось сумма столбца "Роба" второй таблицы. (^_*)
0
Usaga
Эксперт .NET
4884 / 3278 / 585
Регистрация: 21.01.2016
Сообщений: 12,920
Завершенные тесты: 2
12.06.2017, 17:32 #39
Итропинкаилесок, ничё не понял. Что в этих таблицах? Зачем их две? Количество вычесть из "Роба"?
0
Итропинкаилесок
0 / 0 / 1
Регистрация: 04.08.2015
Сообщений: 167
12.06.2017, 17:39  [ТС] #40
Цитата Сообщение от Usaga Посмотреть сообщение
Итропинкаилесок, ничё не понял. Что в этих таблицах? Зачем их две? Количество вычесть из "Роба"?
Вот посмотри пжлста.
0
Вложения
Тип файла: zip тест.zip (7.88 Мб, 0 просмотров)
12.06.2017, 17:39
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.06.2017, 17:39

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

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

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


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

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

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