|
54 / 6 / 5
Регистрация: 24.01.2019
Сообщений: 171
|
|
MS SQL ID связанных таблиц 217.05.2020, 11:06. Показов 8780. Ответов 88
Метки нет (Все метки)
Доброго времени суток, нужен совет(подсказка, пример) по следующей задаче:
Имеются в БД(MSSQL) две таблицы, головная "Покупки" и дополнительная "ПокупкаИнфо". У первой есть первичный уникальный ключ, по полю ID(со свойством IDENTITY). У второй таблицы есть составной "PRIMARY KEY(ПокупкаID,LineItem)". Получается связка такая, на каждый уникальный "Покупки.ID" приходится по нескольку "ПокупкаИнфо.ПокупкаID". С "Покупки.ID" автоматически(в SQL) создаётся новый номер. А вот с "ПокупкаИнфо.ПокупкаID" возникает вопрос: Как в С# сделать так , что бы для "ПокупкаИнфо.ПокупкаID" присваивался тот же номер что и у "Покупки.ID" ? Эта же тема была тут: ID связанных таблиц Но там сказали пойти сюда)
0
|
|
| 17.05.2020, 11:06 | |
|
Ответы с готовыми решениями:
88
Отображение связанных таблиц Работа с Id из связанных таблиц |
|
54 / 6 / 5
Регистрация: 24.01.2019
Сообщений: 171
|
|||||||||||
| 07.10.2020, 16:11 [ТС] | |||||||||||
|
У меня вот на этом месте:
Необработанное исключение типа "System.Data.SqlClient.SqlException" в System.Data.dll Дополнительные сведения: Конфликт инструкции INSERT с ограничением FOREIGN KEY "FK__Покупки__Поставщ__22AA2996". Конфликт произошел в базе данных "Base5", таблица "dbo.Поставщики", column 'ID'. Выполнение данной инструкции было прервано. А вот так , целиком выглядит моя чудо-кнопочка: Кликните здесь для просмотра всего текста
0
|
|||||||||||
|
14745 / 9519 / 1364
Регистрация: 21.01.2016
Сообщений: 35,914
|
||||||
| 07.10.2020, 16:18 | ||||||
|
7-2-3, мне показалось очевидным не заострять внимание на том факте, что я вставляю данные от балды и что вы свои РЕАЛЬНЫЕ данные подставить должны...
А ещё, чтобы не писать вот такую уродливую портянку: Кликните здесь для просмотра всего текста
Можно в свойство DataGridView.DataSource затолкать коллекцию любого класса, а потом получить ссылку на выбранный экземпляр и уже его передать в запрос. Это в 100500 раз удобнее, чем руками по яйчейкам бегать. Да у текстбокса есть средства байндинга данных. Но это я вам уже не буду показывать-рассказывать. Терпения мне не хватит. Сами почитайте. И не говорите мне, что сейчас на это времени нет. Руками по контролам бегать существенно дольше, чем один раз разобраться и уже КАЖДЫЙ РАЗ писать куда более компактный и качественный код. Это как с Dapper'ом.
0
|
||||||
|
54 / 6 / 5
Регистрация: 24.01.2019
Сообщений: 171
|
|
| 07.10.2020, 18:04 [ТС] | |
|
Я немного подправил, теперь получается одна строка проскакивает, а если вторую ставить застревает:
Необработанное исключение типа "System.Data.SqlClient.SqlException" в System.Data.dll Дополнительные сведения: Нарушено "PK__ПокупкаИ__EDF010DFC00E088D" ограничения PRIMARY KEY. Не удается вставить повторяющийся ключ в объект "dbo.ПокупкаИнфо". Повторяющееся значение ключа: (126, 2).
0
|
|
|
14745 / 9519 / 1364
Регистрация: 21.01.2016
Сообщений: 35,914
|
|
| 07.10.2020, 18:31 | |
|
7-2-3, текст ошибки вполне себе говорящий. Вы руками в "ПокупкаИнфо" ID вставляете? Зачем? Думаете база хуже это сделает?
0
|
|
|
54 / 6 / 5
Регистрация: 24.01.2019
Сообщений: 171
|
|
| 07.10.2020, 18:39 [ТС] | |
|
Нет, он автоматически вставляется если строка одна.
А вторую почему то не хочет брать.
0
|
|
|
14745 / 9519 / 1364
Регистрация: 21.01.2016
Сообщений: 35,914
|
||
| 07.10.2020, 18:44 | ||
|
0
|
||
|
54 / 6 / 5
Регистрация: 24.01.2019
Сообщений: 171
|
|||||||||||
| 07.10.2020, 18:49 [ТС] | |||||||||||
|
Ну она же вот отсюда берётся:
Я бы сюда весь код прилепил, но подумал что лучше не надо)
0
|
|||||||||||
|
14745 / 9519 / 1364
Регистрация: 21.01.2016
Сообщений: 35,914
|
|||
| 07.10.2020, 18:52 | |||
|
1
|
|||
|
54 / 6 / 5
Регистрация: 24.01.2019
Сообщений: 171
|
||||||
| 07.10.2020, 19:34 [ТС] | ||||||
|
Первичный ключ убрал.
И конечно из-за вот этого безобразия: Кликните здесь для просмотра всего текста
Получаю вот такие строки:
0
|
||||||
|
14745 / 9519 / 1364
Регистрация: 21.01.2016
Сообщений: 35,914
|
|
| 07.10.2020, 19:55 | |
|
0
|
|
|
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
|
|
| 07.10.2020, 22:08 | |
|
Usaga, вот зря Вы учите человека плохому
![]() Мало того, что Ваш способ "копить" данные, чтобы затем "заскопить" их кучей в базу, никак не влазит в веб, так он еще и ущербен на WF - представьте себе, вот вводит какая-нибудь Маруся накладную в 20 строк, ввела уже 19 и долбит последнюю,- и тут - БАЦ и вырубается лепездричесвто ! Ну и все пропало
0
|
|
|
14745 / 9519 / 1364
Регистрация: 21.01.2016
Сообщений: 35,914
|
|
| 08.10.2020, 03:19 | |
|
MsGuns, что, простите?
0
|
|
|
54 / 6 / 5
Регистрация: 24.01.2019
Сообщений: 171
|
|
| 08.10.2020, 08:59 [ТС] | |
|
Имеется введу, что её 19 набитых строк пропадут даром.
Но мне пока не до проблем Маруси, мне бы главное чтоб моя программуличка хоть как-нибудь заработала)
0
|
|
|
14745 / 9519 / 1364
Регистрация: 21.01.2016
Сообщений: 35,914
|
|
| 08.10.2020, 10:03 | |
|
7-2-3, вообще, то что он имел в виду к данному вопросу особо и не относится. Можно хоть всё скопом сохранять, хоть строки по очереди, по мере их ввода. Это уже другой вопрос, затрагивающий конкретные требования к целости и непротиворечивости данных.
Вы уже заставили своё приложение сохранять нормально?
0
|
|
|
54 / 6 / 5
Регистрация: 24.01.2019
Сообщений: 171
|
|
| 08.10.2020, 15:09 [ТС] | |
|
Хех, пока нет.
Пытаюсь найти информацию, как это правильно реализовать.
0
|
|
|
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
|
|
| 08.10.2020, 17:02 | |
|
0
|
|
|
54 / 6 / 5
Регистрация: 24.01.2019
Сообщений: 171
|
|
| 08.10.2020, 19:32 [ТС] | |
|
"В первом(запросе) вы вносите запись в "Покупки" и получаете ID. Второй собираете в цикле в один пакет (одна строка SQL-запроса) и отправляете в базу"
Получается мне ещё там цикл нужен ? Возможно foreach
0
|
|
|
14745 / 9519 / 1364
Регистрация: 21.01.2016
Сообщений: 35,914
|
|||
| 12.10.2020, 17:16 | |||
|
0
|
|||
|
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
|
|||
| 12.10.2020, 18:51 | |||
|
Не по теме:
Каждый остался при своем мнении - и это нормально :) Добавлено через 48 минут У вас WinForms, поэтому все проще ![]() Есть два варианта: 1. Без перебора строк. Добавление каждой строки (по кнопке или при потери фокуса текущей, уже заполненной строкой) приводит к добавлению в БД - для этого пишется код, в котором сначала проверяется есть ли новый документ в базе и, если нет, то добавляется новая строка в таблицу заголовков документов. При этом извлекается новый id документа и с ним делается вставка новой записи в таблицу состава. Если id уже сеть (т.е. поле не null в Модели документа), то добавляется только строка. Все - через ORM с последующим SaveChanges. При этом даже если комп "умрет", то в базе уже будут введенные строчки. 3. С перебором Сохранение выполняется в конце ввода всех строк специальной "кнопкой". При этом весь документ со всеми строками пишется "скопом" в базу. При этом, если ПК "умер" да нажатия кнопки, все придется повторить. Но сам механизм сохранения тот же, но SaveChanges выполняется в самом конце и лишь раз.
0
|
|||
|
54 / 6 / 5
Регистрация: 24.01.2019
Сообщений: 171
|
|
| 12.10.2020, 20:16 [ТС] | |
|
Я запутался(
А, тогда вот, Вы писали: "Можно в свойство DataGridView.DataSource затолкать коллекцию любого класса, а потом получить ссылку на выбранный экземпляр и уже его передать в запрос. Это в 100500 раз удобнее, чем руками по ячейкам бегать" Это же как раз о том что мне нужно ? На всякий случай framework поднял до версии 4.6.1 и версия языка 6.
0
|
|
| 12.10.2020, 20:16 | |
|
Выборка данных из связанных таблиц Вывод связанных таблиц в DataGridView Обновление связанных таблиц в DataGridView Обновление связанных таблиц в datagridview Отображение полей связанных таблиц Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|
|
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
|
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
|
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ
Основная суть и тезисы по измерениям:
0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема.
Объект не может перемещаться в 0D.
1D (Первое измерение):. . .
|
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek
ВВЕДЕНИЕ
Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
|