|
54 / 6 / 5
Регистрация: 24.01.2019
Сообщений: 171
|
|
MS SQL ID связанных таблиц 217.05.2020, 11:06. Показов 8529. Ответов 88
Метки нет (Все метки)
Доброго времени суток, нужен совет(подсказка, пример) по следующей задаче:
Имеются в БД(MSSQL) две таблицы, головная "Покупки" и дополнительная "ПокупкаИнфо". У первой есть первичный уникальный ключ, по полю ID(со свойством IDENTITY). У второй таблицы есть составной "PRIMARY KEY(ПокупкаID,LineItem)". Получается связка такая, на каждый уникальный "Покупки.ID" приходится по нескольку "ПокупкаИнфо.ПокупкаID". С "Покупки.ID" автоматически(в SQL) создаётся новый номер. А вот с "ПокупкаИнфо.ПокупкаID" возникает вопрос: Как в С# сделать так , что бы для "ПокупкаИнфо.ПокупкаID" присваивался тот же номер что и у "Покупки.ID" ? Эта же тема была тут: ID связанных таблиц Но там сказали пойти сюда)
0
|
|
| 17.05.2020, 11:06 | |
|
Ответы с готовыми решениями:
88
Отображение связанных таблиц Работа с Id из связанных таблиц |
|
800 / 583 / 207
Регистрация: 21.02.2019
Сообщений: 2,095
|
|
| 18.05.2020, 10:58 | |
|
7-2-3,
.. привязываться к автоинкрементному полю не очень правильно для связанных таблиц, ибо вы не знаете его значения в момент создания записи ... лучше создать свое поле с GUID, который будет генерироваться в коде C# перед INSERT-ом, или создавать номер типа INTEGER путем предварительного запроса SELECT MAX - но при многопользовательской работе может где-то что-то пойти не так ... кстати, начиная с ms sql 2016 можно хранить вложенные данные в поле типа JSON_VALUE, если что ...
0
|
|
|
785 / 616 / 273
Регистрация: 04.08.2015
Сообщений: 1,713
|
|
| 18.05.2020, 14:25 | |
|
7-2-3, вы создаете новую запись в таблице Покупки, получаете ее ID, подставляете его в ПокупкаИнфо.ПокупкаID. В чем сложность?
1
|
|
|
800 / 583 / 207
Регистрация: 21.02.2019
Сообщений: 2,095
|
||
| 18.05.2020, 15:36 | ||
|
0
|
||
|
785 / 616 / 273
Регистрация: 04.08.2015
Сообщений: 1,713
|
||
| 18.05.2020, 16:11 | ||
|
0
|
||
|
54 / 6 / 5
Регистрация: 24.01.2019
Сообщений: 171
|
|
| 18.05.2020, 19:46 [ТС] | |
|
Igr_ok, а можно примерчик ? Если Вас не затруднит конечно.
0
|
|
|
785 / 616 / 273
Регистрация: 04.08.2015
Сообщений: 1,713
|
|||||||
| 18.05.2020, 22:28 | |||||||
1
|
|||||||
|
54 / 6 / 5
Регистрация: 24.01.2019
Сообщений: 171
|
||||||
| 29.09.2020, 16:03 [ТС] | ||||||
|
Я создал подобную строку, но у меня почему то ругается на скобочки возле "conn" (sqlConnection):
0
|
||||||
|
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
|
|||||||||||||
| 29.09.2020, 16:37 | |||||||||||||
|
Во-первых, в 3N базах привязка дочерних таблиц к главным делается именно по UID. Во-вторых, получить ID только что вставленной записи не сложно (@@IDENTITY, SCOPE_IDENTITY). Т.е. так:
А вот SELECT MAX(ID) действительно неправильно ибо высокая гарантия получения ошибок. Вообще, использование простого INT (BIGINT) в качестве UID (уникального идентификатора) весьма сомнительно, т.к. его уникальность никак не обеспечена SQL-сервером. Использование GUI вместо UI, конечно, возможно. Но при отладке делает визуальный контроль связок весьма затруднительным. Добавлено через 4 минуты И, наконец, что за привычка обзывать таблицы и поля кириллицей. А если уж чешется, то берите их в кв.скобки. Добавлено через 7 минут Кстати, объявление int-переменной и присвоение ей нового значения ID необязательны. Вполне достаточно такого:
1
|
|||||||||||||
|
|
||
| 29.09.2020, 16:41 | ||
1
|
||
|
54 / 6 / 5
Регистрация: 24.01.2019
Сообщений: 171
|
||||||
| 29.09.2020, 17:07 [ТС] | ||||||
|
Вот так выглядит код моей красивой кнопочки:
0
|
||||||
|
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
|
|
| 29.09.2020, 17:24 | |
|
0
|
|
|
|
||||||
| 29.09.2020, 17:24 | ||||||
|
7-2-3, ну вы не правильно записали код и сообщения №7
Там объявление команды другое. Удалите вот это у себя в строке 24
1
|
||||||
|
785 / 616 / 273
Регистрация: 04.08.2015
Сообщений: 1,713
|
|||
| 29.09.2020, 17:25 | |||
|
Найдите отличие
Кликните здесь для просмотра всего текста
Вы текстовой переменной присваиваете значения строка, connection
1
|
|||
|
|
|
| 29.09.2020, 17:27 | |
|
MsGuns, у ТС в главной таблице ID как раз IDENTITY
0
|
|
|
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
|
||||
| 29.09.2020, 17:32 | ||||
![]() Вы не полностью прочитали и осознали [9] У Вас используется не запрос, а скрипт, т.е. блок, объединяющий несколько разных команд серверу. Конструкция SET присваивает переменной какое-то значение. Но в Вашем скрипте она не объявлена. Далее Вы с этой переменной ничего не делаете. Сервер присвоит переменной ID значение нового айдишника и.. завершит транзакцию. Куда денется этот самый ID ? Правильно - канет в Лету. Добавлено через 2 минуты
1
|
||||
|
54 / 6 / 5
Регистрация: 24.01.2019
Сообщений: 171
|
|||||||||||
| 29.09.2020, 17:36 [ТС] | |||||||||||
|
Ага, спасибо. Поправил вот на это:
0
|
|||||||||||
|
|
||||||
| 29.09.2020, 17:46 | ||||||
|
7-2-3, да
1
|
||||||
|
54 / 6 / 5
Регистрация: 24.01.2019
Сообщений: 171
|
|||||||||||
| 29.09.2020, 18:38 [ТС] | |||||||||||
|
Думал выведу его в textBox , состряпал вот такое вот:
System.FormatException: Входная строка имела неверный формат. в System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal) в System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info) в System.Int32.Parse(String s) в WindowsFormsApplication1.Form7.button3_C lick(Object sender, EventArgs e) в C:\Users\RR\Documents\Visual Studio 2015\Projects\2017\WindowsFormsApplicati on1\WindowsFormsApplication1\Form7.cs:ст рока 240 --------------------------- ОК Добавлено через 1 минуту Поменял на
0
|
|||||||||||
|
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
|
|||
| 30.09.2020, 00:50 | |||
|
В коде берется как раз из него. При этом "пустышка" радостно всовывается в int.Parse Тогда бы уж юзали TryParse, там по крайней мере не "вылетит", если в боксе не цифры.Ну и это "загадочное" object. Это чтоб никто не догадался ? А по сути.. Сиквель из [9] так и не удосужились разобрать ? Добавлено через 4 минуты И еще. Обратите внимание на эту фразу:
1
|
|||
| 30.09.2020, 00:50 | |
|
Помогаю со студенческими работами здесь
20
Выборка данных из связанных таблиц Вывод связанных таблиц в DataGridView Обновление связанных таблиц в DataGridView Обновление связанных таблиц в datagridview Отображение полей связанных таблиц Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
|
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2.
Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
|
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
|
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
|
|
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2.
Данный документ берёт данные из другого нетипового документа. . .
|
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
|
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: реализовать программный контроль на предмет проведения документа. . .
|
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача:
1. Реализовать контроль заполнения реквизита. . .
|