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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как получить данные из двух таблиц, VS 2005, как потом их отобразить? 
V
    Опции темы
Rapalex
Дата 9.10.2006, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 732
Регистрация: 20.1.2006
Где: Украина -> Ник олаев

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



К примеру у меня есть 2 таблицы между ними связь один ко многим, обект релешон я не создавал, пока не знаю как им пользываться.

И так две таблицы : клиенты и улицы на которых они живут.

И нужно юзеру показать список в нормальном виде (ТАБЛИЦЕ) но чтоб вместо ключей улица была  написана кирилицей.

Я знаю что такое запросы, в редакторе выбрал создать запрос, написал его в билдере, ну а как его пользователю отобразить не могу докумекать, по .NET 2.0 инфы на русском у меня почти нет!

ПАМАГИТЕ!!!  smile  smile  smile  smile  smile  smile  smile 
 smile 

и хотелось бы этот запрос сделать параметризированым  smile 


--------------------
In vitium ducit culpae fuga.
Желание избежать ошибки вовлекает в другую.
(Horatius)
PM ICQ   Вверх
Pit_Bul
Дата 9.10.2006, 14:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



покажи поля таблиц
PM MAIL WWW   Вверх
mr.DUDA
Дата 9.10.2006, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Таблицы - в БД ? Или в датасете ? Если в базе, можно сделать view, который будет возвращать название улицы в отдельном поле главной таблицы. Если в датасете, можно добавить relation по ключевому полю (parent-ом будет таблица с улицами, чилдом будет таблица с клиентами), и в таблицу клиентов добавить read-only вычисляемое поле с Expression-ом типа "Parent(имя_рилейшена).поле_с_названием_улицы".


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


Опытный
**


Профиль
Группа: Участник
Сообщений: 732
Регистрация: 20.1.2006
Где: Украина -> Ник олаев

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



mr.DUDA, база у меня аксесовская.

Цитата(mr.DUDA @  9.10.2006,  14:39 Найти цитируемый пост)
Таблицы - в БД ? Или в датасете ?

Японял что таблицы все в бд, а в датасет они попадают когда при помощи адаптера я их заполняю, в следствии я могу их фильтровать. Но мне такой расклад не понравился, это долго и оперативу хавает зверски.

Создавал я этот релейшн а что это дало я пока не понял smile

Может просвятите меня, добрые юди.



--------------------
In vitium ducit culpae fuga.
Желание избежать ошибки вовлекает в другую.
(Horatius)
PM ICQ   Вверх
mr.DUDA
Дата 9.10.2006, 15:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(Rapalex @  9.10.2006,  14:45 Найти цитируемый пост)
Японял что таблицы все в бд, а в датасет они попадают когда при помощи адаптера я их заполняю, в следствии я могу их фильтровать.

Rapalex, так не нужно все данные тянуть из БД адаптером. Достаточно только те которые нужны вытянуть по запросу.

Датасет как делаем ? В коде или дизайнером рисуем ? (от этого зависит способ, которым проще добавить рилейшн)



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


Опытный
**


Профиль
Группа: Участник
Сообщений: 732
Регистрация: 20.1.2006
Где: Украина -> Ник олаев

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



Цитата(mr.DUDA @  9.10.2006,  15:36 Найти цитируемый пост)
не нужно все данные тянуть из БД адаптером

ну а я что сказал
Цитата(Rapalex @  9.10.2006,  14:45 Найти цитируемый пост)
Но мне такой расклад не понравился


Я всё пытаюсь сделать при помощи дизайнера дата сет, ну допустим я создал релейшн, или запорос, а как результаты юзеру показать, в DataGridView.

Вот в этом дело!



--------------------
In vitium ducit culpae fuga.
Желание избежать ошибки вовлекает в другую.
(Horatius)
PM ICQ   Вверх
mr.DUDA
Дата 9.10.2006, 19:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(Rapalex @  9.10.2006,  17:58 Найти цитируемый пост)
Я всё пытаюсь сделать при помощи дизайнера дата сет, ну допустим я создал релейшн, или запорос, а как результаты юзеру показать, в DataGridView.

В виде плоской таблицы, повторюсь. На уровне датасета это решается добавлением "вычисляемых" колонок в таблицу (см. пример выше), т.е. колонок со свойством Expression - такие колонки не хранят данных, а получают их вычисляя значение, например берут из записи по рилейшену.


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


Опытный
**


Профиль
Группа: Участник
Сообщений: 732
Регистрация: 20.1.2006
Где: Украина -> Ник олаев

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



Написал и ничего не отоброжается. Заполнял я это дело тейбл адаптером. Так вот, мне адаптер не очень нравится, он всю таблицу в память читает. А как создать запрос и его результаты выдать в грид, через адаптер или ещё что нибудь.


--------------------
In vitium ducit culpae fuga.
Желание избежать ошибки вовлекает в другую.
(Horatius)
PM ICQ   Вверх
mr.DUDA
Дата 10.10.2006, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Rapalex, SQL-запрос можно передать в первом аргументе конструктора адаптера.


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


Опытный
**


Профиль
Группа: Участник
Сообщений: 732
Регистрация: 20.1.2006
Где: Украина -> Ник олаев

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



Спасибо я вечером поппробую.

Блина, лохом себя чюствую, а где про это прочитать можно?

Я хочю какможно больше сделать при помощи мастеров и генерации кода.


--------------------
In vitium ducit culpae fuga.
Желание избежать ошибки вовлекает в другую.
(Horatius)
PM ICQ   Вверх
mr.DUDA
Дата 10.10.2006, 17:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Rapalex, это называется одним словом - ADO.NET


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


Опытный
**


Профиль
Группа: Участник
Сообщений: 732
Регистрация: 20.1.2006
Где: Украина -> Ник олаев

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



mr.DUDA, я понимаю что тебя изрядно достал своим незнанием, и прошу ПАЖАЛУЙСТА сделай мне проект.

Базу данных я прикрепил, она понтовая, в ней 2 таблицы: людей и ихних телефонов.

Это займёт у тебя 3 мин, сгенерь какойнибудь проект довавь в него эту бд, и выдай содержимое в таблицу (DataGridView) но так как я немогу, а точнее Первый столбец телефон, а дальше ФИО человека (будет повторятся).

Добавлено @ 16:21 
Да, вспомнил, я в редакторе дата сета добавил свой запрос назвал его FillBy установил вопросик где надо и заполнил список нужной инфой, удовлетворяющей условие. Мне понравилось, а как называется то что я сдлал, чтоб про эти дела почитать. И есть ли другие красивые способы сделать тоже самое?

СПС


--------------------
In vitium ducit culpae fuga.
Желание избежать ошибки вовлекает в другую.
(Horatius)
PM ICQ   Вверх
mr.DUDA
Дата 11.10.2006, 16:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Rapalex, где база-то ? smile


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


Опытный
**


Профиль
Группа: Участник
Сообщений: 732
Регистрация: 20.1.2006
Где: Украина -> Ник олаев

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



Ой извени  smile 

Присоединённый файл ( Кол-во скачиваний: 11 )
Присоединённый файл  Finder.zip 8,89 Kb


--------------------
In vitium ducit culpae fuga.
Желание избежать ошибки вовлекает в другую.
(Horatius)
PM ICQ   Вверх
mr.DUDA
Дата 11.10.2006, 17:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Лови:

Добавлено @ 17:25 
Цитата(Rapalex @  11.10.2006,  16:19 Найти цитируемый пост)
Да, вспомнил, я в редакторе дата сета добавил свой запрос назвал его FillBy установил вопросик где надо и заполнил список нужной инфой, удовлетворяющей условие. Мне понравилось, а как называется то что я сдлал, чтоб про эти дела почитать. И есть ли другие красивые способы сделать тоже самое?

Это называется автосгенерированный датасет, датаадаптер и т.п. если про это вопрос. Другие способы есть - например, работать с нетипизированным датасетом, датаадаптером и т.п. Почитать про всё это можно в любой книге по дотнет - хоть у Троелсена.

Присоединённый файл ( Кол-во скачиваний: 52 )
Присоединённый файл  WindowsApplication5.zip 33,15 Kb


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


Опытный
**


Профиль
Группа: Участник
Сообщений: 732
Регистрация: 20.1.2006
Где: Украина -> Ник олаев

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



Спс, разобрался, единственная разница которая бы ла заметна сразу, ето то что ты каскадное обновление с удалением поставил. smile

И у меня вопрос из теории сразу возник. Ч то такое каскадное удаление я понимаю - удаляем родительскую запись удаляем и все дочерние. А каскадное обновление что собой представляет?



Сделая я запрос (сгенерировалась вункция FillBy...) который заполняет дочернюю таблцу. Выражение в вычисляемом поле обращается к родительской таблице и находит всё чот ему надо.
И второй вопрос. Я так понял что родительская таблица должна быть вся подгружена в оперативу. Что мне не очнь понравилось, но жить с этим можно. Так можно както подгружать не всю родительскую таблицу?


И последнее, когда я пытался добавить строку в таблицу функция добовления берёт входными параметрами все столбцы влючая первичный ключ (а он счётчик и сам выберается) и вычисляемые столбцы (разумеется эти входные данные не на что не влияют) можно ли както от этого избавится?

Сасибо!


--------------------
In vitium ducit culpae fuga.
Желание избежать ошибки вовлекает в другую.
(Horatius)
PM ICQ   Вверх
Akella
Дата 17.10.2006, 08:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

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



Код

        private void button1_Click(object sender, EventArgs e)
        {

            fbConnection1.ConnectionString = "User=SYSDBA;Password=masterkey;Database=D:\\Programs\\Kvartal\\Data\\KVARTAL.GDB;DataSource=;Port=3050;Dialect=3;Charset=WIN1251;Role=;Connection lifetime=0;Connection timeout=15;Pooling=True;Packet Size=8192;Server Type=0";
            string mySelectQuery = "select a.id, r.name from apart a left join regions r on (r.id = a.id_region)";
            fbConnection1.Close();
            fbConnection1.Open();
            FbDataAdapter da = new FbDataAdapter(mySelectQuery, fbConnection1);
            FbCommand comm = new FbCommand(mySelectQuery);
            DataSet ds = new DataSet();
            da.Fill(ds);
            DataTable dt = ds.Tables[0];
            dataGridView1.DataSource = dt;
            fbConnection1.Close();
        }


полностью рабочий код

Это сообщение отредактировал(а) Akella - 17.10.2006, 08:22
PM MAIL   Вверх
Rapalex
Дата 17.10.2006, 13:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 732
Регистрация: 20.1.2006
Где: Украина -> Ник олаев

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



Цитата

полностью рабочий код

не сомневаюсь, а что он делает?


--------------------
In vitium ducit culpae fuga.
Желание избежать ошибки вовлекает в другую.
(Horatius)
PM ICQ   Вверх
Akella
Дата 17.10.2006, 13:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

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



Цитата(Rapalex @  9.10.2006,  14:26 Найти цитируемый пост)
К примеру у меня есть 2 таблицы между ними связь один ко многим, 


Цитата(Rapalex @  9.10.2006,  14:26 Найти цитируемый пост)
И так две таблицы : клиенты и улицы на которых они живут.


Цитата(Rapalex @  9.10.2006,  14:26 Найти цитируемый пост)
И нужно юзеру показать список в нормальном виде (ТАБЛИЦЕ) но чтоб вместо ключей улица была  написана кирилицей


Добавлено @ 13:41 
как видно из запроса 2 таблицы: apart и regions. Соеденены между собой.
PM MAIL   Вверх
Rapalex
Дата 17.10.2006, 14:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 732
Регистрация: 20.1.2006
Где: Украина -> Ник олаев

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



Akella, понял, спасибо, а я реализовал с вычисляемыми полями. И теперь нужно думать каким же мне методом пользоваться smile


--------------------
In vitium ducit culpae fuga.
Желание избежать ошибки вовлекает в другую.
(Horatius)
PM ICQ   Вверх
Akella
Дата 17.10.2006, 14:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

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



Join быстрее, мне так кажется, по крайней мере smile 

Это сообщение отредактировал(а) Akella - 17.10.2006, 14:56
PM MAIL   Вверх
Rapalex
Дата 17.10.2006, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 732
Регистрация: 20.1.2006
Где: Украина -> Ник олаев

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



Согласен, а можно всё это какимлибо образом при помощи мастеров в какойнибудь метод какогонибудь тейбл адаптера запихнуть?


--------------------
In vitium ducit culpae fuga.
Желание избежать ошибки вовлекает в другую.
(Horatius)
PM ICQ   Вверх
Akella
Дата 17.10.2006, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

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



можно
кидай на форму datasource и "облепливай" его мастером
http://www.firebirdtutorial.net/sqldatasource-component.html

Добавлено @ 15:19 
что-то у меня в MSVS2005 не очень получается  smile , буду эксперементировать
PM MAIL   Вверх
Akella
Дата 17.10.2006, 16:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

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



кинул на форму FbDataAdapter, теперь получилось, т.к. у этой компоненты есть мастер, который поможет создать нежные компоненты, ну а грид, конечно датаАдаптер не создаст
PM MAIL   Вверх
Rapalex
Дата 18.10.2006, 11:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 732
Регистрация: 20.1.2006
Где: Украина -> Ник олаев

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



А как реализовать отображение дввух таблиц так чтоб при выботе элемента в родительской таблице содержимое дочерней таблицы содержало только дочерние элементы выбраной строки?


--------------------
In vitium ducit culpae fuga.
Желание избежать ошибки вовлекает в другую.
(Horatius)
PM ICQ   Вверх
mr.DUDA
Дата 18.10.2006, 11:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Rapalex, это делается через DataRelation. WinForms будет автоматически отображать связанные записи подчинённой таблицы при выборе записи в родительской таблице, это называется data binding.


--------------------
user posted image
PM MAIL WWW   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
stab
mr.DUDA
Exception

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

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

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


 




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


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

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