|
54 / 6 / 5
Регистрация: 24.01.2019
Сообщений: 171
|
|
MS SQL ID связанных таблиц 217.05.2020, 11:06. Показов 8890. Ответов 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
|
|||||||||||
|
14790 / 9564 / 1367
Регистрация: 21.01.2016
Сообщений: 36,060
|
||||||
| 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
|
|
|
14790 / 9564 / 1367
Регистрация: 21.01.2016
Сообщений: 36,060
|
|
| 07.10.2020, 18:31 | |
|
7-2-3, текст ошибки вполне себе говорящий. Вы руками в "ПокупкаИнфо" ID вставляете? Зачем? Думаете база хуже это сделает?
0
|
|
|
54 / 6 / 5
Регистрация: 24.01.2019
Сообщений: 171
|
|
| 07.10.2020, 18:39 [ТС] | |
|
Нет, он автоматически вставляется если строка одна.
А вторую почему то не хочет брать.
0
|
|
|
14790 / 9564 / 1367
Регистрация: 21.01.2016
Сообщений: 36,060
|
||
| 07.10.2020, 18:44 | ||
|
0
|
||
|
54 / 6 / 5
Регистрация: 24.01.2019
Сообщений: 171
|
|||||||||||
| 07.10.2020, 18:49 [ТС] | |||||||||||
|
Ну она же вот отсюда берётся:
Я бы сюда весь код прилепил, но подумал что лучше не надо)
0
|
|||||||||||
|
14790 / 9564 / 1367
Регистрация: 21.01.2016
Сообщений: 36,060
|
|||
| 07.10.2020, 18:52 | |||
|
1
|
|||
|
54 / 6 / 5
Регистрация: 24.01.2019
Сообщений: 171
|
||||||
| 07.10.2020, 19:34 [ТС] | ||||||
|
Первичный ключ убрал.
И конечно из-за вот этого безобразия: Кликните здесь для просмотра всего текста
Получаю вот такие строки:
0
|
||||||
|
14790 / 9564 / 1367
Регистрация: 21.01.2016
Сообщений: 36,060
|
|
| 07.10.2020, 19:55 | |
|
0
|
|
|
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
|
|
| 07.10.2020, 22:08 | |
|
Usaga, вот зря Вы учите человека плохому
![]() Мало того, что Ваш способ "копить" данные, чтобы затем "заскопить" их кучей в базу, никак не влазит в веб, так он еще и ущербен на WF - представьте себе, вот вводит какая-нибудь Маруся накладную в 20 строк, ввела уже 19 и долбит последнюю,- и тут - БАЦ и вырубается лепездричесвто ! Ну и все пропало
0
|
|
|
14790 / 9564 / 1367
Регистрация: 21.01.2016
Сообщений: 36,060
|
|
| 08.10.2020, 03:19 | |
|
MsGuns, что, простите?
0
|
|
|
54 / 6 / 5
Регистрация: 24.01.2019
Сообщений: 171
|
|
| 08.10.2020, 08:59 [ТС] | |
|
Имеется введу, что её 19 набитых строк пропадут даром.
Но мне пока не до проблем Маруси, мне бы главное чтоб моя программуличка хоть как-нибудь заработала)
0
|
|
|
14790 / 9564 / 1367
Регистрация: 21.01.2016
Сообщений: 36,060
|
|
| 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
|
|
|
14790 / 9564 / 1367
Регистрация: 21.01.2016
Сообщений: 36,060
|
|||
| 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 Отображение полей связанных таблиц Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor.
Это. . .
|
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки
Правым кликом по серверу -> отладочная информация -> edit
Заменить "net": "raw", на "net": "tcp",
Нажать кнопку reload.
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|