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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Обновление нескольких таблиц в БД, не получается 
:(
    Опции темы
FYoung
Дата 29.5.2007, 21:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 5.11.2006

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



При заполнении датасета данные берутся из нескольких таблиц. Для внесения изменений использую метод Update у датаадаптера, также для автоматического формирования команд создал SqlCommandBuilder  и ему указал созданный датаадаптер. При попытке вставить, удалить или обновить данные возникает ошибка: Dynamic SQL generation is not supported against multiple base tables.
Во всех таблицах присутствует первичный ключ. Подскажите как работать с несколькими таблицами?
З.Ы. Если в запросе учавствует одна таблица то все нормально работает.
PM MAIL   Вверх
ivashkanet
Дата 30.5.2007, 09:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

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



FYoung, нужно вручную заполнить запросы UpdateCommand, InsertCommand, DeleteCommand адаптера.
PM MAIL WWW ICQ   Вверх
FYoung
Дата 30.5.2007, 21:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 5.11.2006

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



А можно пару примеров, получается надо отслеживать какие строки были изменены, добавлены или удалены. А как это сделать?
PM MAIL   Вверх
v00d00
Дата 24.6.2007, 23:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 142
Регистрация: 28.12.2005

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



Столкнулся с такой-же проблемой, пожалуйста приведите пару примеров
PM MAIL   Вверх
ivashkanet
Дата 25.6.2007, 09:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

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



v00d00, структуру таблиц, и SQL датаАдаптера в студию
PM MAIL WWW ICQ   Вверх
v00d00
Дата 25.6.2007, 18:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 142
Регистрация: 28.12.2005

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



Цитата
    
v00d00, структуру таблиц, и SQL датаАдаптера в студию


SQL:

Код

SELECT Tasks.ID, Tasks.Name, Tasks.Time, RepeatType.Type, Description.Discription
FROM RepeatType INNER JOIN (Description INNER JOIN Tasks ON Description.ID = Tasks.ID) ON RepeatType.TypeID = Tasks.RepeatType;


С базами работал только на Delphi через ADOQuery все было достаточно просто, а тут совсем другой подход... Литературы бы..

Присоединённый файл ( Кол-во скачиваний: 18 )
Присоединённый файл  schema.JPG 26,41 Kb
PM MAIL   Вверх
thomas
Дата 25.6.2007, 19:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент... почти
***


Профиль
Группа: Завсегдатай
Сообщений: 1385
Регистрация: 3.10.2006
Где: " Сказочное королевство"

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



v00d00, 
У тебя ошибочка в этом месте
Цитата

Description.ID = Tasks.ID

Не могут ID двух разных таблиц иметь такую связь какую ты показал на схеме.
В таблице Tasks не хватает поля DescriptionID  для обеспечения связи с таблицей Description.

Вместо литературы.  smile 





Это сообщение отредактировал(а) thomas - 25.6.2007, 19:32


--------------------
Крепко жму горло, искренне ваш Thomas. (С)vingrad
Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну!
Проблемы негров шерифа не волнуют.
PM MAIL   Вверх
thomas
Дата 25.6.2007, 19:45 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент... почти
***


Профиль
Группа: Завсегдатай
Сообщений: 1385
Регистрация: 3.10.2006
Где: " Сказочное королевство"

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



v00d00, 
Ну и запрос будет соответствующий
Код

SELECT     dbo.Tasks.ID, dbo.Tasks.Name, dbo.Tasks.Time, dbo.RepeatType.Type, dbo.Description.Discription
FROM        dbo.Description INNER JOIN
                 dbo.Tasks ON dbo.Description.ID = dbo.Tasks.DescriptionID INNER JOIN
                 dbo.RepeatType ON dbo.Tasks.RepeatType = dbo.RepeatType.TypeID


или так
Код

SELECT     dbo.Tasks.ID, dbo.Tasks.Name, dbo.Tasks.Time, dbo.RepeatType.Type, dbo.Description.Discription
FROM        dbo.RepeatType INNER JOIN
                 dbo.Tasks ON dbo.RepeatType.TypeID = dbo.Tasks.RepeatType INNER JOIN
                 dbo.Description ON dbo.Tasks.DescriptionID = dbo.Description.ID


А обновлять я так понимаю нужно только таблицу в детальными строками т.е. Tasks. Потому как типы и описания не меняются.
Соответственно либо пишешь сам команды INSERT, DELETE, UPDATE либо просишь CommandBuilder  сделать это за тебя. Но тут есть одна засада. Последний sql  запрос должен быть чисто к таблице Tasks. (например такой select * from Tasks)
Тогда Builder сможет сгенерить команду, а если последний запрос был как приведенные выше, то получишь исключение как описано в первом посте этой темы. 

Это сообщение отредактировал(а) thomas - 25.6.2007, 19:57


--------------------
Крепко жму горло, искренне ваш Thomas. (С)vingrad
Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну!
Проблемы негров шерифа не волнуют.
PM MAIL   Вверх
thomas
Дата 25.6.2007, 20:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент... почти
***


Профиль
Группа: Завсегдатай
Сообщений: 1385
Регистрация: 3.10.2006
Где: " Сказочное королевство"

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



FYoung, 
Ты сам ответил на свой вопрос
Цитата

З.Ы. Если в запросе учавствует одна таблица то все нормально работает. 

Обмани Builder, пропиши последний sql-запрос к одной таблице(которую и будешь обновлять) и тогда Builder сгенерит запрос, а так он не может генерить запросы со связями. (я так думаю  smile )


--------------------
Крепко жму горло, искренне ваш Thomas. (С)vingrad
Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну!
Проблемы негров шерифа не волнуют.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
stab
mr.DUDA
Exception

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

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

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


 




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


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

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