Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с relations 
:(
    Опции темы
maxnoskov
Дата 4.7.2006, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 112
Регистрация: 21.6.2006
Где: Мурманск

Репутация: нет
Всего: нет



Такая проблема
Есть dataset. В нем одна главная таблица и несколько подчиненных по ключевому полю.
Т.е. есть объекты relations
Заполняю каждую таблицу своим адаптером
Пытаюсь вывести подчиненные записи а их нет, хотя ключевое поле совпадает
Отчего такая ситуация 
PM MAIL   Вверх
mr.DUDA
Дата 4.7.2006, 16:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 8
Всего: 232



Порядок заполнения таблиц имеет главную роль: сначала заполняются parent'ы, потом - child'ы. Хотя, может тут дело и не в том. Можно посмотреть на XSD-схему этого датасета ? 


--------------------
user posted image
PM MAIL WWW   Вверх
Хоббит
Дата 5.7.2006, 11:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1263
Регистрация: 6.11.2005

Репутация: нет
Всего: 1



ты заполняешь таблицы в dataSet е ..
я просто раз так лоханулся . Создал Обьект дата сет , создал отделно таблицы заполнил их ...
в таком случае связи между ними не будет и отношения будут давать Null 
PM MAIL   Вверх
maxnoskov
Дата 5.7.2006, 12:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 112
Регистрация: 21.6.2006
Где: Мурманск

Репутация: нет
Всего: нет



Все дело в том, что проблема даже не в этом. С relarions я разобрался: просто указал в дизайнере: "Foreign key constraint only" и создались только триггеры обновления, удаления и т.д., а сами relations не создались. Но все дело в том что мне тригеры и нужны, а не сами отношения. У себя в программе я удаляю строку из главной таблицы в DataSet. Смотрю, и во всех связанных таблицах связанные строки удалены. Т.е триггер на удаление работает. Но вот когда даю команду Update. НИЧЕГО. Т.е. в источнике в главной таблице строка удалена, а в подчиненных нет. Помогите разобраться  
PM MAIL   Вверх
arilou
Дата 5.7.2006, 22:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Великий МунаБудвин
****


Профиль
Группа: Экс. модератор
Сообщений: 2646
Регистрация: 15.7.2004
Где: город-герой Минск

Репутация: 4
Всего: 61



maxnoskov, а ты в БД ссылочную целостность с каскадным удалением для таблиц настроил? Покажи схему БД.  

Это сообщение отредактировал(а) arilou - 5.7.2006, 22:57


--------------------
user posted imageuser posted image
PM WWW ICQ   Вверх
mr.DUDA
Дата 6.7.2006, 01:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 8
Всего: 232



Цитата(maxnoskov @  5.7.2006,  12:30 Найти цитируемый пост)
С relarions я разобрался: просто указал в дизайнере: "Foreign key constraint only" и создались только триггеры обновления, удаления и т.д., а сами relations не создались

Тригеры - не совсем правильное слово для датасета smile. Ну какие триггеры могут быть для объекта, существующего вне базы...

Цитата(maxnoskov @  5.7.2006,  12:30 Найти цитируемый пост)
Т.е триггер на удаление работает. Но вот когда даю команду Update. НИЧЕГО. Т.е. в источнике в главной таблице строка удалена, а в подчиненных нет. Помогите разобраться  

В свойствах relation есть галка "Choose what to create" - ставим её в "Both relation and Foreign Key Constraint" - становятся доступными комбобоксы  "Delete rule" и "Update rule" - ставим туда "Cascade" вместо "None". Всё. 


--------------------
user posted image
PM MAIL WWW   Вверх
arilou
Дата 6.7.2006, 10:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Великий МунаБудвин
****


Профиль
Группа: Экс. модератор
Сообщений: 2646
Регистрация: 15.7.2004
Где: город-герой Минск

Репутация: 4
Всего: 61



Цитата(mr.DUDA @  6.7.2006,  01:05 Найти цитируемый пост)
В свойствах relation есть галка "Choose what to create" - ставим её в "Both relation and Foreign Key Constraint" - становятся доступными комбобоксы  "Delete rule" и "Update rule" - ставим туда "Cascade" вместо "None". Всё.  

Это для датасета, а речь, насколько я понял, идет уже о БД:

Цитата(maxnoskov @  5.7.2006,  12:30 Найти цитируемый пост)
Но вот когда даю команду Update

DataAdapter.Update ? 


--------------------
user posted imageuser posted image
PM WWW ICQ   Вверх
maxnoskov
Дата 6.7.2006, 11:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 112
Регистрация: 21.6.2006
Где: Мурманск

Репутация: нет
Всего: нет



Цитата(arilou @ 5.7.2006,  22:53)
maxnoskov, а ты в БД ссылочную целостность с каскадным удалением для таблиц настроил? Покажи схему БД.

Вот схема DataSet. В БД ссылочная целостность не реализована

Добавлено @ 11:20 
Цитата(mr.DUDA @ 6.7.2006,  01:05)
Цитата(maxnoskov @  5.7.2006,  12:30 Найти цитируемый пост)
С relarions я разобрался: просто указал в дизайнере: "Foreign key constraint only" и создались только триггеры обновления, удаления и т.д., а сами relations не создались

Тригеры - не совсем правильное слово для датасета smile. Ну какие триггеры могут быть для объекта, существующего вне базы...

Цитата(maxnoskov @  5.7.2006,  12:30 Найти цитируемый пост)
Т.е триггер на удаление работает. Но вот когда даю команду Update. НИЧЕГО. Т.е. в источнике в главной таблице строка удалена, а в подчиненных нет. Помогите разобраться  

В свойствах relation есть галка "Choose what to create" - ставим её в "Both relation and Foreign Key Constraint" - становятся доступными комбобоксы  "Delete rule" и "Update rule" - ставим туда "Cascade" вместо "None". Всё.

Согласен, триггер это не то, но работал с VFP и привык

Галку "Choose what to create" поставил , комбобоксы  "Delete rule" и "Update rule" - установил. Я и говорю они срабатывают - удаляют связанные записи.

Добавлено @ 11:23 
Цитата(arilou @ 6.7.2006,  10:42)
Цитата(mr.DUDA @  6.7.2006,  01:05 Найти цитируемый пост)
В свойствах relation есть галка "Choose what to create" - ставим её в "Both relation and Foreign Key Constraint" - становятся доступными комбобоксы  "Delete rule" и "Update rule" - ставим туда "Cascade" вместо "None". Всё.  

Это для датасета, а речь, насколько я понял, идет уже о БД:

Цитата(maxnoskov @  5.7.2006,  12:30 Найти цитируемый пост)
Но вот когда даю команду Update

DataAdapter.Update ?

Не знаю в БД или нет, но на Update подчиненной таблицы вылезает исключение: "Отсутствует значение для одного или нескольких требуемых параметров" 

Это сообщение отредактировал(а) maxnoskov - 6.7.2006, 11:29

Присоединённый файл ( Кол-во скачиваний: 4 )
Присоединённый файл  DS.jpg 42,28 Kb
PM MAIL   Вверх
maxnoskov
Дата 6.7.2006, 11:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 112
Регистрация: 21.6.2006
Где: Мурманск

Репутация: нет
Всего: нет



Столько всего понаписал, что сам запутался. Еще раз объясню проблему:
Есть DataSet, схема приложена выше. Необходимо удалить данные из главной таблицы и подчиненных.
Заполняю таблицы каждую своим адаптером. Затем удаляю строки из главной таблицы - просматриваю: везде связанные данные тоже удалены, т.к. срабатывают ограничения целостности. Пытаюсь выполнить update для подчиненной таблицы и выползает исключение "Отсутствует значение для одного или нескольких требуемых параметров". 
PM MAIL   Вверх
mr.DUDA
Дата 6.7.2006, 11:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 8
Всего: 232



Похоже на то, что не хватает каких-то параметров для выполнения запроса. 


--------------------
user posted image
PM MAIL WWW   Вверх
maxnoskov
Дата 6.7.2006, 12:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 112
Регистрация: 21.6.2006
Где: Мурманск

Репутация: нет
Всего: нет



Цитата(mr.DUDA @ 6.7.2006,  11:59)
Похоже на то, что не хватает каких-то параметров для выполнения запроса.

Да, не хватает, но каких?
Адаптер создавал: SELECT     document.* FROM         document

Добавлено @ 12:08 
Блин, сейчас попробывал перестроить адаптер вот так: SELECT     studentid, formdocum, seriedocum, numdocum, whogive, whengive, docountry, docregion, docdistrict, doccity, docstation, idnation
FROM         document" и вроде все заработало smile  
PM MAIL   Вверх
arilou
Дата 6.7.2006, 22:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Великий МунаБудвин
****


Профиль
Группа: Экс. модератор
Сообщений: 2646
Регистрация: 15.7.2004
Где: город-герой Минск

Репутация: 4
Всего: 61



Цитата(maxnoskov @  6.7.2006,  11:17 Найти цитируемый пост)
В БД ссылочная целостность не реализована

Если настроить каскадное удаление child'ов при удалении parent'а, то не потребуется вообще вызывать DataAdapter.Update для подчиненных таблиц. 


--------------------
user posted imageuser posted image
PM WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
stab
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Базы данных под .NET | Следующая тема »


 




[ Время генерации скрипта: 0.0532 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.