|
0 / 0 / 0
Регистрация: 25.09.2012
Сообщений: 42
|
|
Редактирование таблиц в БД MS SQL Server из Visual Studio01.04.2015, 12:18. Показов 7893. Ответов 18
Метки нет (Все метки)
Уважаемые форумчане.
Прошу помощи в решении следующей проблемы: в MS SQL Server есть БД, где имеются связанные в цепочку таблицы адрес(id_адрес, дом, корп, кв, id_улица) - улица(id_улица, наименование, id_пункт) - пункт(id_пункт, наименование) Делаю через myCommand.CommandText запрос UPDATE на редактирование данных во всех перечисленных таблицах. Измененные данные считываются из textbox и combobox формы. Само изменение данных не вызывает особых проблем, но ведь при введении новых данных, они (новые данные) могут совпасть с уже имеющимися в базе, потому первичный ключ, по которому связаны таблицы, должен быть изменен, а строка, которая редактировалась, должна быть удалена, чтобы не было совпадений по остальным колонкам и, соответственно, двойников, которые различаются только id-полями. Вот как-то так. Сам уже запутался... Подскажите, пожалуйста, алгоритм действий, который нужно применять в этом случае.
0
|
|
| 01.04.2015, 12:18 | |
|
Ответы с готовыми решениями:
18
Среда SQL Server Management Studio [17:42:06] masha Kurilenko: visual studio Visual Studio и Server Management Studio не видит SQL сервер SQL Server 12 и Visual Studio 12 |
|
1655 / 1154 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
|
|
| 01.04.2015, 12:25 | |
|
сделать суррогатный ключ автоинкрементным (identity) и забыть
0
|
|
|
0 / 0 / 0
Регистрация: 25.09.2012
Сообщений: 42
|
|
| 01.04.2015, 12:42 [ТС] | |
|
Все первичные ключи автоинкрементные [1,1]. Или я чего-то не понял в Вашем совете?
Если у меня в какой-то из таблиц редактируемая строка совпадет с уже имеющейся, то ее (редактируемую строку) нужно удалить, переписав при этом внешний ключ в другой связанной таблице, чтобы не получилось ссылки на удаленный первичный ключ...
0
|
|
|
1655 / 1154 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
|
|
| 01.04.2015, 12:54 | |
|
ничего не понял. Кто на ком стоял? (с)
0
|
|
|
0 / 0 / 0
Регистрация: 25.09.2012
Сообщений: 42
|
|
| 01.04.2015, 13:15 [ТС] | |
|
извините, за путанное изложение темы.
У меня есть таблицы, которые связаны между собой в "цепочку" адрес(ПК - id_адрес, дом, корп, кв, ВК - id_улица) - улица( ПК - id_улица, наименование, ВК - id_пункт) - пункт( ПК - id_пункт, наименование). Допустим при редактировании поля [наименование] из таблицы [улица] я ввожу наименование, которое уже присутствует в данной таблице: например: была "ленина", ввожу "советская". Но, улица "советская" уже есть в поле [наименование] таблицы [улица]. Значит, нужно удалить ту строку, которую я редактирую в данный момент и в таблице [адрес] исправить ВК [id-улица], присвоив ему значение ПК [id_улица] из таблицы [улица], значение поля [наименование] которой "советская".
0
|
|
|
1655 / 1154 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
|
|
| 01.04.2015, 13:26 | |
|
зарадидля?
если редактируешь адрес и хочешь сменить улицу - поменяй просто FK на наименование должно быть наложено ограничение уникальности
0
|
|
|
0 / 0 / 0
Регистрация: 25.09.2012
Сообщений: 42
|
|
| 01.04.2015, 13:39 [ТС] | |
|
спасибо, нашел информацию по UNIQUE.
т.е. если я изменю значение улицы на то, что уже имеется в таблице [улица], то ВК в таблице [адрес] также изменит свое значение? нужно ли для этого ставить каскадное изменение? и куда денется строка с наименованием "ленина" ?
0
|
|
|
1655 / 1154 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
|
|
| 01.04.2015, 13:42 | |
|
думаю, стоит прочитать внимательно про целостность данных
1
|
|
|
0 / 0 / 0
Регистрация: 25.09.2012
Сообщений: 42
|
||
| 01.04.2015, 14:33 [ТС] | ||
|
Пошел читать.
Добавлено через 46 минут если они относятся к разным населенным пунктам.
0
|
||
|
1655 / 1154 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
|
|
| 01.04.2015, 14:50 | |
|
а, ну да, просмотрел. Значит, не нужно. Все равно, мне проблемы неясны - все до безобразия просто. Внес новую улицу - пользуйся, вноси данные в адрес
0
|
|
|
0 / 0 / 0
Регистрация: 25.09.2012
Сообщений: 42
|
|
| 01.04.2015, 14:56 [ТС] | |
|
Ну, извини, если раздражаю тебя своими мелкими проблемами, которые гроша ломанного не стоят.
Буду надеяться, что кто-нибудь из гуру, удостоит мой вопрос своим вниманием.
0
|
|
|
1655 / 1154 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
|
||
| 01.04.2015, 15:03 | ||
|
По факту у тебя 3 справочника Нас. пункт Улицы Адрес Тебе нужно добавить новый адрес - добавляешь запись со ссылкой на улицу (нужную) Нет улицы - добавляешь запись в справочник Улиц со ссылкой на НП (нужный) Нет НП - создаешь. В где печаль?
0
|
||
|
0 / 0 / 0
Регистрация: 25.09.2012
Сообщений: 42
|
||
| 01.04.2015, 15:15 [ТС] | ||
|
Вот была у меня строка в таблице [улица]: 1122 | ленина | 1022 где 1-ый столбец - ID_улицы, 2-ой - наименование, 3-ий - ID_населенного пункта. Я вношу исправление из формы - изменяю наименование "ленина" на "советская" и получаю две повторяющихся строки в таблице [улица]: 1122 | советская | 1022 (эту строку я редактировал) 911 | советская | 1022 (эта строка уже была занесена ранее). Насколько я понимаю, так быть не должно, потому что это дублирование данных. После редакции должна остаться одна строка - 911 | советская | 1022 и первое поле ID_улицы (911) должно быть внесено в редактируемую строку таблицы [адрес]
0
|
||
|
1655 / 1154 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
|
|
| 01.04.2015, 15:19 | |
|
стесняюсь спросить - а зачем это делать?
0
|
|
|
0 / 0 / 0
Регистрация: 25.09.2012
Сообщений: 42
|
|
| 01.04.2015, 15:24 [ТС] | |
|
зачем редактировать данные?
потому что они идентифицируют клиента.
0
|
|
|
1655 / 1154 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
|
|
| 01.04.2015, 15:28 | |
|
0
|
|
|
0 / 0 / 0
Регистрация: 25.09.2012
Сообщений: 42
|
|
| 01.04.2015, 19:03 [ТС] | |
|
Ну, вики так вики: https://ru.wiktionary.org/wiki... 0%E1%EE%EB
Я почитал, чего ты говорил, задал тебе вопрос, ты начал лепить чего-то непонятное. Если умный такой, подскажи, как сделать правильно.
0
|
|
|
1655 / 1154 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
|
||
| 01.04.2015, 19:42 | ||
|
0
|
||
|
0 / 0 / 0
Регистрация: 25.09.2012
Сообщений: 42
|
||
| 02.04.2015, 13:59 [ТС] | ||
|
Тему можно удалять, проблему решил. Всем спасибо за участие.
Добавлено через 18 часов 14 минут
0
|
||
| 02.04.2015, 13:59 | |
|
Помогаю со студенческими работами здесь
19
Visual studio и SQL server В Visual Studio с SQL создать связь таблиц
Visual Studio & SQL Server Подключение Visual Studio к SQL Server Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
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. Реализовать контроль заполнения реквизита. . .
|
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение:
DISM / Online / Add-Capability / CapabilityName:WMIC~~~~
Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
|
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: при создании документов установить период списания автоматически. . .
|
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2.
Задача: вывести данные из ТЧ нетипового документа. . .
|