@>проект на 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
Здравствуйте Amba, Вы писали:
A>А на мой взгляд лучше попробовать работать с обычным деревом и дочерние запросы проводить по событию разворачивания конкретного узла, а не закачивать много не всегда востребованной информации. а с деревом можно сделать всё гораздо привлекательнеее! вот.
А если руками заполнить IRowSet?
просто мне нужно сделать что-то типа школьного журнала:
т.е. из одной таблицы у меня вытаскиваются ФИО студента из другой предметы, а из третьей оценки по предметам %) во как.
@>А если руками заполнить IRowSet?
@>просто мне нужно сделать что-то типа школьного журнала:
@>т.е. из одной таблицы у меня вытаскиваются ФИО студента из другой предметы, а из третьей оценки по предметам %) во как.
@>Нет. Многоэтажный select не сможет выстроить такую табличку
Ну везде есть какие-нибудь ограничения, поэтому, если определить максимальное число колонок, можно сделать и одним селектом, указав нужное число колонок.
Потом, есть особенности сервера, например и в оракле и в мсскуэле есть возмость строить динамический SQL, вот его можно использовать для динамического формирования колонок.
Никогда не бойся браться делать то, что делать не умеешь. Помни, ковчег был построен любителем. Профессионалы построили Титаник...
Re[5]: Данные из 2-х разных Recordset'ов на одни grid
@>>>идея ясна?
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
Здравствуйте ru, Вы писали:
ru>Можно тогда поступить прямолинейно. Сформировать временную табличку ru>ФИО | Предмет №1 | Предмет №2 | .... | ru>Причем CREATE TABLE нужно сформировать динамически взависимости от количества предметов в в табл. ПРЕДМЕТЫ. (это чтобы добавление нового предмета не вело к возникновению ошибок). ru>Потом заполняем эту таблицу как нам надо.... и получаем из нее Recordset
Да не надо создавать временную таблицу, зачем плодить лишнее и делать за сервер то, что он умеет делать лучше.
Я все-таки агитирую за DynamicSQL, это будет быстрее чем новая таблица.
Вообще это дикость — для постройки запроса пользоваться временными таблицами, по моему опыту происходит это от не знания SQL и его конкретного диалекта...
Никогда не бойся браться делать то, что делать не умеешь. Помни, ковчег был построен любителем. Профессионалы построили Титаник...
Re[7]: Данные из 2-х разных Recordset'ов на одни grid
Здравствуйте VVP, Вы писали:
VVP>Да не надо создавать временную таблицу, зачем плодить лишнее и делать за сервер то, что он умеет делать лучше. VVP>Я все-таки агитирую за DynamicSQL, это будет быстрее чем новая таблица. VVP>Вообще это дикость — для постройки запроса пользоваться временными таблицами, по моему опыту происходит это от не знания SQL и его конкретного диалекта...
полностью согласен... Если база данных спроектирована правильно, то для работы с ней (получения, изменения,... данных) достаточно SQL запросов (иногда нетривиальных).
Re[6]: Данные из 2-х разных Recordset'ов на одни grid
Здравствуйте VVP, Вы писали:
VVP>Здравствуйте peter@work, Вы писали:
@>>Нет. Многоэтажный select не сможет выстроить такую табличку
VVP>Ну везде есть какие-нибудь ограничения, поэтому, если определить максимальное число колонок, можно сделать и одним селектом, указав нужное число колонок.
VVP>Потом, есть особенности сервера, например и в оракле и в мсскуэле есть возмость строить динамический SQL, вот его можно использовать для динамического формирования колонок.
Ну не в том дело. Тут уже видимо у меня проблема построения отчета. Данные-то я достану и они будут
однозначными, но вот как их запихать на грид?
peter@work
Re[7]: Данные из 2-х разных Recordset'ов на одни grid
если под запихать имеется ввиду редактирование и обновление то тут кроме собственных ручек тебе никто не поможет, да так и быстрее даже будет. Ведь тебе придется изменять как минимум данные в одной-двух таблицах, а кроме тебя никто не знает как там у тебя всё ложится и кто кому куда чего связан...
а еще можешь для общего развития почитать статью под названием "Editing Cells in a Hierarchical FlexGrid Spreadsheet" в МСДН, может легче станет...
Re[8]: Данные из 2-х разных Recordset'ов на одни grid
Здравствуйте Amba, Вы писали:
A>Здравствуйте peter@work, Вы писали:
A>если под запихать имеется ввиду редактирование и обновление то тут кроме собственных ручек тебе никто не поможет, да так и быстрее даже будет. Ведь тебе придется изменять как минимум данные в одной-двух таблицах, а кроме тебя никто не знает как там у тебя всё ложится и кто кому куда чего связан... A>а еще можешь для общего развития почитать статью под названием "Editing Cells in a Hierarchical FlexGrid Spreadsheet" в МСДН, может легче станет...
А такой же статьи только по MSVC нет?
peter@work
Re[9]: Данные из 2-х разных Recordset'ов на одни grid
@>Здравствуйте Amba, Вы писали:
A>>Здравствуйте peter@work, Вы писали:
A>>если под запихать имеется ввиду редактирование и обновление то тут кроме собственных ручек тебе никто не поможет, да так и быстрее даже будет. Ведь тебе придется изменять как минимум данные в одной-двух таблицах, а кроме тебя никто не знает как там у тебя всё ложится и кто кому куда чего связан... A>>а еще можешь для общего развития почитать статью под названием "Editing Cells in a Hierarchical FlexGrid Spreadsheet" в МСДН, может легче станет...
@>А такой же статьи только по MSVC нет?
В работе практически со всеми АДО-шными контролами приходится пользоваться аналогиями с Васиком или Явой, но основная мысль всё равно одна!