Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Вид для Базы

2.2K
17 июня 2006 года
0cool
54 / / 15.06.2006
Здравствуйте, у меня вопрос по ADO.NET
У меня есть БД
Id_actorrole
Id_actor --------- Id_actor
NameActor Id_role--------------------- Id_role
Address Id_wherewhen NameRole
… | …
|
Id_wherewhen
where
when
Так вот, я бы хотел сделать “вид”, в котором выводится такая информация:
NameActor, NameRole, Where, When
2.2K
17 июня 2006 года
0cool
54 / / 15.06.2006
Еще раз обрисую БД , а то плохо 1 раз получилось
1 таблица:id_actor, name,...
2т.:id_role, name, ...
3т.: id_wherewhen, where, when
4т.: id_role, id_actor, id_wherewhen

1 связана с 4 по id_actor
2 c 4 по id_role
3 c 4 по id_wherewhen
422
18 июня 2006 года
Dimarik
181 / / 12.02.2005
[QUOTE=0cool]Еще раз обрисую БД , а то плохо 1 раз получилось
1 таблица:id_actor, name,...
2т.:id_role, name, ...
3т.: id_wherewhen, where, when
4т.: id_role, id_actor, id_wherewhen

1 связана с 4 по id_actor
2 c 4 по id_role
3 c 4 по id_wherewhen[/QUOTE]

В смысле надо запрос придумать или что?
Если запрос, то вот вроде этого

select a.name, b.name, c.where, c.when
from table1 a, table2 b, table3 c, table4 d where
a.id_actor=d.id_actor and b.id_role=d.id_role and c.id_wherewhen=d.id_wherewhen
2.2K
18 июня 2006 года
0cool
54 / / 15.06.2006
Нет, мне хотелось бы это сделать без запроса к серверу,
а полностью средствами ADO.NET
422
18 июня 2006 года
Dimarik
181 / / 12.02.2005
Ничего не понимаю. Вы же пишите, что у вас "есть БД", вам необходимо вывести информацию из нескольких таблиц, так? То как это без обращения к серверу можно реализовать. Короче ничего непонимаю.
Можно по-точнее написать, что вам нужно.
2.2K
18 июня 2006 года
0cool
54 / / 15.06.2006
база данных у меня уже залита в dataset
так вот вопрос: я бы хотел создать вид без использования
запросов к серверу(через запрос к серверу я знаю как сделать )
и по-моему с AdO.NET работают отсоединенно, так что я бы хотел не обращаться
к базе т.к. думаю что через ADO.NET будет быстрее.
422
18 июня 2006 года
Dimarik
181 / / 12.02.2005
Ну ладно, почему тогда нельзя сразу залить в датасет результат приведённого выше запроса.
Ну если всё-таки нельзя, тогда на мой взгляд эту задачу решить путём использования циклов
2.2K
18 июня 2006 года
0cool
54 / / 15.06.2006
а если у меня обнавляются данные,
так что мне постоянно обращаться к серверу?
422
18 июня 2006 года
Dimarik
181 / / 12.02.2005
[QUOTE=0cool]а если у меня обнавляются данные,
так что мне постоянно обращаться к серверу?[/QUOTE]

почему? при обновлении нужно ообновлять датасет? в чём проблема?
273
18 июня 2006 года
3A3-968M
1.2K / / 22.12.2005
[quote=0cool]а если у меня обнавляются данные,
так что мне постоянно обращаться к серверу?[/quote]
Конечно, без запросов плоховато:( Хотя если у тебя стоит LINQ, то можно написать интегрированный запрос. Если нет, то примерно так:
Код:
[SIZE=2][COLOR=#008080]DataSet[/COLOR][/SIZE][SIZE=2] dataSet = [/SIZE][SIZE=2][COLOR=#0000ff]new[/COLOR][/SIZE][SIZE=2] [/SIZE][SIZE=2][COLOR=#008080]DataSet[/COLOR][/SIZE][SIZE=2]();
[/SIZE][SIZE=2][COLOR=#008000]//......добавляем в dataSet нужные нам таблицы, можно через DataAdapter.Fill(DataSet, String);
[/COLOR][/SIZE][SIZE=2][/SIZE][SIZE=2][COLOR=#008080]DataTable[/COLOR][/SIZE][SIZE=2] Actors = dataSet.Tables[[/SIZE][SIZE=2][COLOR=#800000]"Actors"[/COLOR][/SIZE][SIZE=2]]; [/SIZE][SIZE=2][COLOR=#008000]//id_actor, name
[/COLOR][/SIZE][SIZE=2][/SIZE][SIZE=2][COLOR=#008080]DataTable[/COLOR][/SIZE][SIZE=2] Roles = dataSet.Tables[[/SIZE][SIZE=2][COLOR=#800000]"Roles"[/COLOR][/SIZE][SIZE=2]]; [/SIZE][SIZE=2][COLOR=#008000]//id_role, name
[/COLOR][/SIZE][SIZE=2][/SIZE][SIZE=2][COLOR=#008080]DataTable[/COLOR][/SIZE][SIZE=2] WhereWhen = dataSet.Tables[[/SIZE][SIZE=2][COLOR=#800000]"WhereWhen"[/COLOR][/SIZE][SIZE=2]]; [/SIZE][SIZE=2][COLOR=#008000]//id_wherewhen, where, when
[/COLOR][/SIZE][SIZE=2][/SIZE][SIZE=2][COLOR=#008080]DataTable[/COLOR][/SIZE][SIZE=2] Common = dataSet.Tables[[/SIZE][SIZE=2][COLOR=#800000]"Common"[/COLOR][/SIZE][SIZE=2]]; [/SIZE][SIZE=2][COLOR=#008000]//id_role, id_actor, id_wherewhen
[/COLOR][/SIZE][SIZE=2][/SIZE][SIZE=2][COLOR=#008080]DataTable[/COLOR][/SIZE][SIZE=2] Result = [/SIZE][SIZE=2][COLOR=#0000ff]new[/COLOR][/SIZE][SIZE=2] [/SIZE][SIZE=2][COLOR=#008080]DataTable[/COLOR][/SIZE][SIZE=2]([/SIZE][SIZE=2][COLOR=#800000]"Result"[/COLOR][/SIZE][SIZE=2]);
[/SIZE][SIZE=2][COLOR=#0000ff]foreach[/COLOR][/SIZE][SIZE=2] ([/SIZE][SIZE=2][COLOR=#008080]DataRow[/COLOR][/SIZE][SIZE=2] commonRow [/SIZE][SIZE=2][COLOR=#0000ff]in[/COLOR][/SIZE][SIZE=2] Common.Rows)
{
[/SIZE][SIZE=2][COLOR=#0000ff]string[/COLOR][/SIZE][SIZE=2] actorId = ([/SIZE][SIZE=2][COLOR=#0000ff]string[/COLOR][/SIZE][SIZE=2])commonRow.ItemArray[0]; [/SIZE][SIZE=2][COLOR=#008000]//читаем id_actor
[/COLOR][/SIZE][SIZE=2][/SIZE][SIZE=2][COLOR=#0000ff]string[/COLOR][/SIZE][SIZE=2] roleId = ([/SIZE][SIZE=2][COLOR=#0000ff]string[/COLOR][/SIZE][SIZE=2])commonRow.ItemArray[1]; [/SIZE][SIZE=2][COLOR=#008000]//читаем id_role
[/COLOR][/SIZE][SIZE=2][/SIZE][SIZE=2][COLOR=#0000ff]string[/COLOR][/SIZE][SIZE=2] wherewhenId = ([/SIZE][SIZE=2][COLOR=#0000ff]string[/COLOR][/SIZE][SIZE=2])commonRow.ItemArray[2]; [/SIZE][SIZE=2][COLOR=#008000]//читаем id_wherewhen
[/COLOR][/SIZE][SIZE=2][/SIZE][SIZE=2][COLOR=#008080]DataRow[/COLOR][/SIZE][SIZE=2][] actorRows = Actors.Select([/SIZE][SIZE=2][COLOR=#008080]String[/COLOR][/SIZE][SIZE=2].Format([/SIZE][SIZE=2][COLOR=#800000]"id_actor={0}"[/COLOR][/SIZE][SIZE=2], actorId)), [/SIZE][SIZE=2][COLOR=#008000]//выбраем записи из таблицы Actors, которые удовлетворяют текущему id_actor. Эта запись одна или вообще нет, т.к. она ключевая
[/COLOR][/SIZE][SIZE=2]roleRows = Roles.Select([/SIZE][SIZE=2][COLOR=#008080]String[/COLOR][/SIZE][SIZE=2].Format([/SIZE][SIZE=2][COLOR=#800000]"id_role={0}"[/COLOR][/SIZE][SIZE=2], roleId)),
whenwhereRows = WhereWhen.Select([/SIZE][SIZE=2][COLOR=#008080]String[/COLOR][/SIZE][SIZE=2].Format([/SIZE][SIZE=2][COLOR=#800000]"id_wherewhen={0}"[/COLOR][/SIZE][SIZE=2], wherewhenId));
Result.Rows.Add(actorRows[0].ItemArray[1], roleRows[0].ItemArray[1], whenwhereRows[0].ItemArray[1]); [/SIZE][SIZE=2][COLOR=#008000]//Добавляем новые ячейки в результирующу таблицу
[/COLOR][/SIZE][SIZE=2]}
[/SIZE]
2.2K
21 июня 2006 года
0cool
54 / / 15.06.2006
to 3A3-968M
это не совсем то что я хотел , НО все равно спасибо
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог