![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Заполнение Grida [D7, Paradox]
paurlin © (2005-08-20 13:01:00)Здравствуйте.
Есть вот какой вопрос. Необходимо заполнить DBGrid из таблицы данных. Верхний ряд - дисциплины, строки левого ряда - ФИО студентов. Пересечение в матрице студента с дисциплиной - оценка. Короче сводная ведомость по успеваемости, как табличка в Exel. Исходная таблица базы данных содержит 3 столбца. в каждой строке студент, дисциплина, оценка. Надо дисциплины загрузить в шапку Грида, а оценки как в матрице. Не знаю, удалось ли выссказать правильно идею. Куб строить для меня слишком сложно пока, посоветовали воспользоваться EhLib компонентом DBGridEh. Но по описанию не понятно как использовать данных компонент для моих целей. Может кто-нибудь подскажет хотя бы от чего отталкиваться. Принцип решения моей задачи. Спасибо большое.
Sergey13 (2005-09-01 11:25:00) [1]2 [29] paurlin (01.09.05 11:21)
В ЕхЛибе есть виртуальная таблица вроде (или есть похожая в Rx или CDS наконец). Возьми ее. В рантайме из своих выборок сформируй структуру и заполни данными. Отображай в гриде как обычно.
paurlin (2005-09-01 11:21:00) [2]...
paurlin (2005-08-31 12:36:00) [3]Спасибо. Про "подготовительные действия" мысль была.
Хотел бы попробовать использовать DBGridEh или вот тут в [26] подсказали DBGridEx (такого зверя еще не видел).
А можно кратко описать последовательность действий с указанным компонентом для решения моей задачи. Принцип действия.Чтобы знать как к нему подойти.
Антоныч (2005-08-29 13:09:00) [4]Как вариант реализации:
Работа с обычным StringGrid, но придется делать подготовительные действия:
1) количество столбцов и строк в StringGrid будет определяться исходя из запроса SELECT DISTINCT Student FROM Ocenki и SELECT DISTINCT Predmeti FROM Ocenki
2) прогоняется БД от начала в конец и оценка для студента по соотв. предмету записывается в соответствующую ячейку StringGrid
Все эти действия происходят, например, в OnShow.
Далее работается как с обычным StringGrid-ом, а затем по нажатии кнопки "Обновить данные", или на событии смены ячейки StringGrid происходит обновление базы. Немного геморрно, через одно место, но должно работать :)
Турист (2005-08-29 13:09:00) [5]Поищи в интернете компонент TDhGridEx. Он подходит для твоей задачи.
paurlin (2005-08-29 11:44:00) [6]Не здорово это.
Задача была в том, чтобы создать форму на которой как в экселе можно будет перемещаться по ячейкам и редактировать "оценки".
Все равно спасибо. Попробую придумать другой способ.
Турист (2005-08-28 19:38:00) [7]>paurlin (27.08.05 15:16) [23]
>А можно ли будет редактировать данные прямо в DecisionGrid или он для этого не предназначен?
Наверно, не предназначен.
Можно добавить отдельное диалоговое окно редактирования выбранной ячейки в котором выводить дисциплину, фамилию
оценку, через тоже окно добавлять новую "тройку".
paurlin (2005-08-27 15:16:00) [8]Здорово. Спасибо большое. А можно ли будет редактировать данные прямо в DecisionGrid или он для этого не предназначен? Если нельзя, то какой может быть выход? И ещё один вопросик. Если мне необходимо чтобы в Dec-nGrid были не только поля, в которых проставлены оценки, а все поля, что нужно для этого сделать? Ещё раз спасибо за помощь.
Турист (2005-08-26 23:27:00) [9]Если F5 символьное, то MIN( CAST (F5 AS INT) )
Турист (2005-08-26 23:14:00) [10]F4 - дисциплина
F2 - фамилия
F5 - оценка
SELECT F4, F2, MIN( F5 ) FROM TABLE4 GROUP BY F4, F2
DecisionQuery1, DecisionCube1, DecisionSource1, DecisionGrid1
paurlin (2005-08-26 20:41:00) [11]В итоге строю кубик вручную методом тыка. Запрос написал для DecisionQuery вот такой:
"SELECT Дисциплины, Count(Оценки) , Фамилия
FROM result
GROUP BY Оценки, Фамилия, Дисциплины"
Могу воспользоваться только функцией Count почему-то. Мне надо просто значения из столбца считать, а не преобразовывать их. Хотел воспользоваться функцией MAX, но пишет что выражение не соответствует String.
Подскажите, если можете, что можно сделать.
paurlin (2005-08-26 13:40:00) [12]...
paurlin (2005-08-25 18:33:00) [13]Попробовал фичу с Аксессом. Адаптированный запрос выглядит так.
TRANSFORM Max(rezult)
Select ID_st from result
GROUP BY ID_st
PIVOT IDdisc
Пишет Capability not supported.
В чем может быть ошибка. Может она не связана с кодом? Спасибо.
alex_*** (2005-08-24 12:21:00) [14]все равно придется понять как он работает и адаптировать под себя. С таким же успехом можно самому писать
magic (2005-08-24 10:55:00) [15]Есть в Access-e такая фича, как перекрестные запросы. Сделай это под аксессом и посмотри SQL, который он сгенерирует. Потом сможешь этот запрос в свою прогу воткнуть
paurlin (2005-08-24 10:18:00) [16]Никто не знает других ссылок по данной теме? Чтоб без Екселя. Буду очень признателен.
KilkennyCat (2005-08-23 11:49:00) [17]
> [13] paurlin (23.08.05 11:29)
я ж уже дал...
paurlin (2005-08-23 11:29:00) [18]Хорошо, вручную так вручную. Может тогда кто-нибудь ссылки в и-нет дать, как это сделать.
alex_*** (2005-08-23 10:16:00) [19]ручками надо куб делать. Делать набор для столбцов, потом по ним сформировать набор по строкам. ОБыкновенная сводная отчетность
Турист (2005-08-22 23:55:00) [20]Ненормальная таблица - ненормальные решения :-)