Данные из 2-х разных Recordset'ов на одни grid
От: peter@work Россия  
Дата: 07.06.02 09:59
Оценка:
проект на MSVC6 MFC + ADO + DocView
Имею два Recordset'а и желание запихать эти данные на один грид(MS HierDataGrid)
как это сделать?
peter@work
Re: Данные из 2-х разных Recordset'ов на одни grid
От: Amba  
Дата: 07.06.02 10:35
Оценка:
Здравствуйте peter@work, Вы писали:

@>проект на MSVC6 MFC + ADO + DocView
@>Имею два Recordset'а и желание запихать эти данные на один грид(MS HierDataGrid)
@>как это сделать?

перед открытием соединения задай провайдера как
m_spShapeConnection->Provider = "MSDataShape";
и твою обычную коннекшн стринг с который открываешь обычные плоские рекодсеты.
дальше самое трудно — создать запрос... об этом можно поглядеть в МСДН, а также попробовать в Васике создать его с помощью мастера (что-там типа DataWizard или что-то близкое) получится что-то типа
SHAPE {SELECT <поля главной таблицы> FROM <главная таблица> }  APPEND ({SELECT <поля из вспомогательной таблицы> FROM <вспомогательная таблица>}  RELATE <поле по которому сращиваем> TO <поле по которому сращиваем>)

но при больших таблицах конечно работает не совсем быстро... а с гридами можно хлебнуть — функции связанные с координатами нередко либо круто врут либо работают не совсем корректно... хотя конечно красиво выглядит (на первый взгляд).
А на мой взгляд лучше попробовать работать с обычным деревом и дочерние запросы проводить по событию разворачивания конкретного узла, а не закачивать много не всегда востребованной информации. а с деревом можно сделать всё гораздо привлекательнеее! вот.
Re[2]: Данные из 2-х разных Recordset'ов на одни grid
От: peter@work Россия  
Дата: 07.06.02 10:56
Оценка:
Здравствуйте Amba, Вы писали:

A>А на мой взгляд лучше попробовать работать с обычным деревом и дочерние запросы проводить по событию разворачивания конкретного узла, а не закачивать много не всегда востребованной информации. а с деревом можно сделать всё гораздо привлекательнеее! вот.


А если руками заполнить IRowSet?
просто мне нужно сделать что-то типа школьного журнала:
т.е. из одной таблицы у меня вытаскиваются ФИО студента из другой предметы, а из третьей оценки по предметам %) во как.

и на выхлопе должно быть что-то типа

А Б В Г Д
ФИО1 4 5 3 4 4
ФИО2 3 2 4 2 5
ФИО3 4 5 6 4 2

идея ясна?
peter@work
Re[3]: Данные из 2-х разных Recordset'ов на одни grid
От: ru  
Дата: 07.06.02 13:13
Оценка:
Здравствуйте peter@work, Вы писали:

@>А если руками заполнить IRowSet?
@>просто мне нужно сделать что-то типа школьного журнала:
@>т.е. из одной таблицы у меня вытаскиваются ФИО студента из другой предметы, а из третьей оценки по предметам %) во как.

@>и на выхлопе должно быть что-то типа

@> А Б В Г Д
@>ФИО1 4 5 3 4 4
@>ФИО2 3 2 4 2 5
@>ФИО3 4 5 6 4 2

@>идея ясна?

А нельзя ли в вашем случае собрать в одном рекордсете все необходимые данные, используя "многоэтажный" SELECT
Re[4]: Данные из 2-х разных Recordset'ов на одни grid
От: peter@work Россия  
Дата: 07.06.02 14:54
Оценка:
Здравствуйте ru, Вы писали:


@>> А Б В Г Д
@>>ФИО1 4 5 3 4 4
@>>ФИО2 3 2 4 2 5
@>>ФИО3 4 5 6 4 2

@>>идея ясна?

ru>А нельзя ли в вашем случае собрать в одном рекордсете все необходимые данные, используя "многоэтажный" SELECT


Нет. Многоэтажный select не сможет выстроить такую табличку
Может я, конечно, чего-нибудь не знаю.
Представь таблички (это не SQL'ные операторы)

первая — студенты
id, lname, fname, mname, birthday, gender, class

вторая — предметы
id, title, кол-во часов

третья — оценки
id_студента, id_предмета, оценка, дата

и это нужно запихать как в школьном журнале... т.е. в табличке выше (А,Б,В,Г,Д — это названия предметов)
peter@work
Re[5]: Данные из 2-х разных Recordset'ов на одни grid
От: VVP Россия 67524421
Дата: 10.06.02 08:53
Оценка:
Здравствуйте peter@work, Вы писали:

@>Нет. Многоэтажный select не сможет выстроить такую табличку
Ну везде есть какие-нибудь ограничения, поэтому, если определить максимальное число колонок, можно сделать и одним селектом, указав нужное число колонок.

Потом, есть особенности сервера, например и в оракле и в мсскуэле есть возмость строить динамический SQL, вот его можно использовать для динамического формирования колонок.
Никогда не бойся браться делать то, что делать не умеешь. Помни, ковчег был построен любителем. Профессионалы построили Титаник...
Re[5]: Данные из 2-х разных Recordset'ов на одни grid
От: ru  
Дата: 10.06.02 10:43
Оценка:
Здравствуйте peter@work, Вы писали:

@>Здравствуйте ru, Вы писали:


@>>> А Б В Г Д
@>>>ФИО1 4 5 3 4 4
@>>>ФИО2 3 2 4 2 5
@>>>ФИО3 4 5 6 4 2

@>>>идея ясна?

ru>>А нельзя ли в вашем случае собрать в одном рекордсете все необходимые данные, используя "многоэтажный" SELECT


@>Нет. Многоэтажный select не сможет выстроить такую табличку
@>Может я, конечно, чего-нибудь не знаю.
@>Представь таблички (это не SQL'ные операторы)

@>первая — студенты
@>id, lname, fname, mname, birthday, gender, class

@>вторая — предметы
@>id, title, кол-во часов

@>третья — оценки
@>id_студента, id_предмета, оценка, дата

@>и это нужно запихать как в школьном журнале... т.е. в табличке выше (А,Б,В,Г,Д — это названия предметов)



Можно тогда поступить прямолинейно. Сформировать временную табличку
ФИО | Предмет №1 | Предмет №2 | .... |
Причем CREATE TABLE нужно сформировать динамически взависимости от количества предметов в в табл. ПРЕДМЕТЫ. (это чтобы добавление нового предмета не вело к возникновению ошибок).
Потом заполняем эту таблицу как нам надо.... и получаем из нее Recordset
Re[6]: Данные из 2-х разных Recordset'ов на одни grid
От: VVP Россия 67524421
Дата: 10.06.02 13:20
Оценка:
Здравствуйте ru, Вы писали:

ru>Можно тогда поступить прямолинейно. Сформировать временную табличку

ru>ФИО | Предмет №1 | Предмет №2 | .... |
ru>Причем CREATE TABLE нужно сформировать динамически взависимости от количества предметов в в табл. ПРЕДМЕТЫ. (это чтобы добавление нового предмета не вело к возникновению ошибок).
ru>Потом заполняем эту таблицу как нам надо.... и получаем из нее Recordset
Да не надо создавать временную таблицу, зачем плодить лишнее и делать за сервер то, что он умеет делать лучше.
Я все-таки агитирую за DynamicSQL, это будет быстрее чем новая таблица.
Вообще это дикость — для постройки запроса пользоваться временными таблицами, по моему опыту происходит это от не знания SQL и его конкретного диалекта...
Никогда не бойся браться делать то, что делать не умеешь. Помни, ковчег был построен любителем. Профессионалы построили Титаник...
Re[7]: Данные из 2-х разных Recordset'ов на одни grid
От: ru  
Дата: 11.06.02 04:56
Оценка:
Здравствуйте VVP, Вы писали:

VVP>Да не надо создавать временную таблицу, зачем плодить лишнее и делать за сервер то, что он умеет делать лучше.

VVP>Я все-таки агитирую за DynamicSQL, это будет быстрее чем новая таблица.
VVP>Вообще это дикость — для постройки запроса пользоваться временными таблицами, по моему опыту происходит это от не знания SQL и его конкретного диалекта...

полностью согласен... Если база данных спроектирована правильно, то для работы с ней (получения, изменения,... данных) достаточно SQL запросов (иногда нетривиальных).
Re[6]: Данные из 2-х разных Recordset'ов на одни grid
От: peter@work Россия  
Дата: 11.06.02 10:34
Оценка:
Здравствуйте VVP, Вы писали:

VVP>Здравствуйте peter@work, Вы писали:


@>>Нет. Многоэтажный select не сможет выстроить такую табличку

VVP>Ну везде есть какие-нибудь ограничения, поэтому, если определить максимальное число колонок, можно сделать и одним селектом, указав нужное число колонок.


VVP>Потом, есть особенности сервера, например и в оракле и в мсскуэле есть возмость строить динамический SQL, вот его можно использовать для динамического формирования колонок.


Ну не в том дело. Тут уже видимо у меня проблема построения отчета. Данные-то я достану и они будут
однозначными, но вот как их запихать на грид?
peter@work
Re[7]: Данные из 2-х разных Recordset'ов на одни grid
От: Amba  
Дата: 11.06.02 11:37
Оценка:
Здравствуйте peter@work, Вы писали:

если под запихать имеется ввиду редактирование и обновление то тут кроме собственных ручек тебе никто не поможет, да так и быстрее даже будет. Ведь тебе придется изменять как минимум данные в одной-двух таблицах, а кроме тебя никто не знает как там у тебя всё ложится и кто кому куда чего связан...
а еще можешь для общего развития почитать статью под названием "Editing Cells in a Hierarchical FlexGrid Spreadsheet" в МСДН, может легче станет...
Re[8]: Данные из 2-х разных Recordset'ов на одни grid
От: peter@work Россия  
Дата: 11.06.02 12:04
Оценка:
Здравствуйте Amba, Вы писали:

A>Здравствуйте peter@work, Вы писали:


A>если под запихать имеется ввиду редактирование и обновление то тут кроме собственных ручек тебе никто не поможет, да так и быстрее даже будет. Ведь тебе придется изменять как минимум данные в одной-двух таблицах, а кроме тебя никто не знает как там у тебя всё ложится и кто кому куда чего связан...

A>а еще можешь для общего развития почитать статью под названием "Editing Cells in a Hierarchical FlexGrid Spreadsheet" в МСДН, может легче станет...

А такой же статьи только по MSVC нет?
peter@work
Re[9]: Данные из 2-х разных Recordset'ов на одни grid
От: Amba  
Дата: 11.06.02 12:32
Оценка:
Здравствуйте peter@work, Вы писали:

@>Здравствуйте Amba, Вы писали:

A>>Здравствуйте peter@work, Вы писали:


A>>если под запихать имеется ввиду редактирование и обновление то тут кроме собственных ручек тебе никто не поможет, да так и быстрее даже будет. Ведь тебе придется изменять как минимум данные в одной-двух таблицах, а кроме тебя никто не знает как там у тебя всё ложится и кто кому куда чего связан...

A>>а еще можешь для общего развития почитать статью под названием "Editing Cells in a Hierarchical FlexGrid Spreadsheet" в МСДН, может легче станет...

@>А такой же статьи только по MSVC нет?
В работе практически со всеми АДО-шными контролами приходится пользоваться аналогиями с Васиком или Явой, но основная мысль всё равно одна!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.