![]() |
|
Модераторы: gambit |
![]()
|
|
| maxnoskov |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 112 Регистрация: 21.6.2006 Где: Мурманск Репутация: нет Всего: нет |
Такая проблема
Есть dataset. В нем одна главная таблица и несколько подчиненных по ключевому полю. Т.е. есть объекты relations Заполняю каждую таблицу своим адаптером Пытаюсь вывести подчиненные записи а их нет, хотя ключевое поле совпадает Отчего такая ситуация |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 8 Всего: 232 |
Порядок заполнения таблиц имеет главную роль: сначала заполняются parent'ы, потом - child'ы. Хотя, может тут дело и не в том. Можно посмотреть на XSD-схему этого датасета ?
-------------------- ![]() |
|||
|
||||
| Хоббит |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1263 Регистрация: 6.11.2005 Репутация: нет Всего: 1 |
ты заполняешь таблицы в dataSet е ..
я просто раз так лоханулся . Создал Обьект дата сет , создал отделно таблицы заполнил их ... в таком случае связи между ними не будет и отношения будут давать Null |
|||
|
||||
| maxnoskov |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 112 Регистрация: 21.6.2006 Где: Мурманск Репутация: нет Всего: нет |
Все дело в том, что проблема даже не в этом. С relarions я разобрался: просто указал в дизайнере: "Foreign key constraint only" и создались только триггеры обновления, удаления и т.д., а сами relations не создались. Но все дело в том что мне тригеры и нужны, а не сами отношения. У себя в программе я удаляю строку из главной таблицы в DataSet. Смотрю, и во всех связанных таблицах связанные строки удалены. Т.е триггер на удаление работает. Но вот когда даю команду Update. НИЧЕГО. Т.е. в источнике в главной таблице строка удалена, а в подчиненных нет. Помогите разобраться
|
|||
|
||||
| arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 4 Всего: 61 |
maxnoskov, а ты в БД ссылочную целостность с каскадным удалением для таблиц настроил? Покажи схему БД.
Это сообщение отредактировал(а) arilou - 5.7.2006, 22:57 |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 8 Всего: 232 |
Тригеры - не совсем правильное слово для датасета В свойствах relation есть галка "Choose what to create" - ставим её в "Both relation and Foreign Key Constraint" - становятся доступными комбобоксы "Delete rule" и "Update rule" - ставим туда "Cascade" вместо "None". Всё. -------------------- ![]() |
|||
|
||||
| arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 4 Всего: 61 |
Это для датасета, а речь, насколько я понял, идет уже о БД: DataAdapter.Update ? |
|||
|
||||
| maxnoskov |
|
||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 112 Регистрация: 21.6.2006 Где: Мурманск Репутация: нет Всего: нет |
Вот схема DataSet. В БД ссылочная целостность не реализована Добавлено @ 11:20 Согласен, триггер это не то, но работал с VFP и привык Галку "Choose what to create" поставил , комбобоксы "Delete rule" и "Update rule" - установил. Я и говорю они срабатывают - удаляют связанные записи. Добавлено @ 11:23
Не знаю в БД или нет, но на Update подчиненной таблицы вылезает исключение: "Отсутствует значение для одного или нескольких требуемых параметров" Это сообщение отредактировал(а) maxnoskov - 6.7.2006, 11:29 Присоединённый файл ( Кол-во скачиваний: 4 )
DS.jpg 42,28 Kb |
||||||
|
|||||||
| maxnoskov |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 112 Регистрация: 21.6.2006 Где: Мурманск Репутация: нет Всего: нет |
Столько всего понаписал, что сам запутался. Еще раз объясню проблему:
Есть DataSet, схема приложена выше. Необходимо удалить данные из главной таблицы и подчиненных. Заполняю таблицы каждую своим адаптером. Затем удаляю строки из главной таблицы - просматриваю: везде связанные данные тоже удалены, т.к. срабатывают ограничения целостности. Пытаюсь выполнить update для подчиненной таблицы и выползает исключение "Отсутствует значение для одного или нескольких требуемых параметров". |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 8 Всего: 232 |
Похоже на то, что не хватает каких-то параметров для выполнения запроса.
-------------------- ![]() |
|||
|
||||
| maxnoskov |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 112 Регистрация: 21.6.2006 Где: Мурманск Репутация: нет Всего: нет |
Да, не хватает, но каких? Адаптер создавал: SELECT document.* FROM document Добавлено @ 12:08 Блин, сейчас попробывал перестроить адаптер вот так: SELECT studentid, formdocum, seriedocum, numdocum, whogive, whengive, docountry, docregion, docdistrict, doccity, docstation, idnation FROM document" и вроде все заработало |
|||
|
||||
| arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 4 Всего: 61 |
Если настроить каскадное удаление child'ов при удалении parent'а, то не потребуется вообще вызывать DataAdapter.Update для подчиненных таблиц. |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Базы данных под .NET | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |