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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Связанные таблицы, Отображение и обновление 
:(
    Опции темы
Walker
Дата 26.5.2008, 13:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Доброго времени суток, Уважаемые жители Винграда!

Подскажите, Пожалуйста, ссылку на мануал по работе со связанными таблицами. Имеется - набор связанных таблиц в базе под управлением SQL Server 2005 EE. Требуется - отображение в единой таблице DataGridView избранных столбцов, выборочное обновление, добавление и удаление записей.
Пример:
В трёх таблицах представлена структура сотрудников предприятия с их иерархической зависимостью (Дерево).
Первая таблица - список сотрудников: ИД, имя, ИД должности.
Вторая таблица - список утверждённых должностей. Фиксирована, изменению в текущем контексте не подлежит: ИД должности, Название должности
Третья таблица - список узлов дерева. Идентификаторы первой таблицы: ИД начальника, ИД подчинённого.
Требуется отобразить: ИД (нередакт), имя, должность, ИД начальника
Требуется модифицировать: имя, должность, подчинение (ИД начальника, меняется также через TreeView) - Update
Insert, Delete - записи в первой и третьей таблицах по связи, вторая не трогается.

Вижу варианты:
1) В DataSet одна сводная таблица, требуемого мне вида, представляющая собой результат запроса к базе. Её можно махом кинуть на DataGridView, но проблемы с модификацией записей. 
2) В DataSet набор таблиц. Проблема с отображением.
3) В DataSet набор таблиц и одна сводная, связаны алгоритмами поиска. Одна для DataGridView, остальные для базы. Решение "в лоб", верным не представляется.
Собственные домыслы исчерпались, требуется документация. Как решается подобная задача ADO.net-way?

Спасибо!


Это сообщение отредактировал(а) Walker - 26.5.2008, 14:46


--------------------
"От вчерашних побед остаётся усталость, если завтрашний день не сулит ничего..."
PM MAIL   Вверх
Varenij
Дата 26.5.2008, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



а почему нельзя поле ИД начальника добавить прям во вторую таблицу?
PM MAIL   Вверх
Walker
Дата 26.5.2008, 14:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Ага, для исключения разночтений внёс поправку. Во второй таблице имеется ввиду идентификатор должности.
ЗЫ. Пример представлен в качестве модели ситуации и нужен только для понимания концепции решения. Реальная задача выглядит объёмнее.

Это сообщение отредактировал(а) Walker - 26.5.2008, 14:59


--------------------
"От вчерашних побед остаётся усталость, если завтрашний день не сулит ничего..."
PM MAIL   Вверх
vretsky
Дата 26.5.2008, 16:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



какая СУБД?
PM MAIL   Вверх
thomas
Дата 26.5.2008, 17:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



vretsky, 
Цитата

набор связанных таблиц в базе под управлением SQL Server 2005 EE. 
Читаем первый пост автора темы.  smile 


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


Новичок



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

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



пардон устал, тогда как вариант выводим в грид вью из трех таблиц, а в датаАдаптере insert, update и delete коммандах вызываем сторед процедуры с параметрами, которые изменяют данные в трех таблицах. тогда рекомендую отображать для модификации помимо должности ID должности
PM MAIL   Вверх
Chef
Дата 26.5.2008, 17:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 167
Регистрация: 7.12.2007
Где: РК Павлодар

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



Я мож ошибаюсь,  но я бы выборку из всех, в ГридВиев.... А с остальными прямым SQL... 
У меня такая проблема была, но база маленькая была, и я связи не делаля в Акцессе... 
С ключами работал в уме так сказать......
--------------------
Разговоры об IT
PM MAIL WWW   Вверх
vretsky
Дата 26.5.2008, 18:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



да с прямым SQL все понятно, только как будет выглядеть команда удалить в таблице1 что то , и что то, что ей соответствует в таблице3?

delete 
from table1
where IDсотрудника=@param1

go

delete
from table3
where where IDсотрудника=@param1

тут и наступает загвоздка: с GO студия SQL команды не понимает.

выход -> простинькая хранимка которая принимает этот параметр @param1
и в теле делает что хошь, либо посредством тригеров организовать каскадное удаление, но это помоему сложнее.
а по поводу выборки так я и пишу: создаем представление хоть на стороне сервера хоть в приложении

select tabl1.ID, table1.Name, table2.Dolжnost....
from table1 какойто там джоин.........

и выводим в грид. 
в датаадаптере пишим чтото типа:
SqlDataAdapter1.DeleteCommand="EXEC PROCEDURA1 @PARAM1";

и заработает как миленькая!

p.s. при чем тут Access????



PM MAIL   Вверх
informatik
Дата 26.5.2008, 19:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата

а почему нельзя поле ИД начальника добавить прям во вторую таблицу?


Мысль правильная но не в ту сторону...
ID начальника - это атрибут сотрудника а не должности..

Если думать так то тогда уж добавлять ID начальника в первую таблицу
--------------------
namespace informatik
PM MAIL   Вверх
Chef
Дата 27.5.2008, 06:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 167
Регистрация: 7.12.2007
Где: РК Павлодар

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



Цитата(vretsky @  26.5.2008,  18:12 Найти цитируемый пост)
да с прямым SQL все понятно, только как будет выглядеть команда удалить в таблице1 что то , и что то, что ей соответствует в таблице3?

У тебя есть конечный запрос(твоя сводная таблица), по мимо текстовых данных, в запрос ты отправляешь, и все свои ключи.... НО... в гриде делаешь их невидимыми.... Ну а дальше дело твоей логики.....
Код

DataGridView.colums["NameColums"].Visible = false;

Я так делал...


Это сообщение отредактировал(а) Chef - 27.5.2008, 06:03
--------------------
Разговоры об IT
PM MAIL WWW   Вверх
Varenij
Дата 27.5.2008, 09:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(informatik @  26.5.2008,  22:12 Найти цитируемый пост)
Если думать так то тогда уж добавлять ID начальника в первую таблицу

что-то я часто стал очепятываться :(
PM MAIL   Вверх
4u4a
Дата 16.7.2009, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



не стал создавать новую тему.
есть 3 таблицы на картинке показана связь между ними.надо при отображении  в DataGridView таблицы reis,чтобы вместо idM было     "nameCity - namecity" для соответствующих idCity1 и idCity2.


Присоединённый файл ( Кол-во скачиваний: 6 )
Присоединённый файл  db.gif 12,21 Kb
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
stab
mr.DUDA
Exception

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

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

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


 




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


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

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