Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2005.10.09;
Скачать: [xml.tar.bz2];

Вниз

Заполнение Grida   Найти похожие ветки 

 
paurlin   (2005-08-20 13:01) [0]

Здравствуйте.
Есть вот какой вопрос. Необходимо заполнить DBGrid из таблицы данных. Верхний ряд - дисциплины, строки левого ряда - ФИО студентов. Пересечение в матрице студента с дисциплиной - оценка. Короче сводная ведомость по успеваемости, как табличка в Exel. Исходная таблица базы данных содержит 3 столбца. в каждой строке студент, дисциплина, оценка. Надо дисциплины загрузить в шапку Грида, а оценки как в матрице. Не знаю, удалось ли выссказать правильно идею. Куб строить для меня слишком сложно пока, посоветовали воспользоваться EhLib компонентом DBGridEh. Но по описанию не понятно как использовать данных компонент для моих целей. Может кто-нибудь подскажет хотя бы от чего отталкиваться. Принцип решения моей задачи. Спасибо большое.


 
Defunct ©   (2005-08-20 20:59) [1]

paurlin   (20.08.05 13:01)  

Воспользоваться StringGrid"ом и отрисовать все вручную.
Имя 3 массива имен, дисциплин и оценок, думаю это не составит труда.


 
Defunct ©   (2005-08-20 20:59) [2]

> Имя 3 массива имен, дисциплин и оценок

Имея..


 
paurlin   (2005-08-21 10:46) [3]

Спасибо. А не могли бы вы чуть подробнее описать решение. Буду очень признателен.


 
paurlin   (2005-08-21 10:54) [4]

Речь идет не просто о выводе отчета для просмотра, с такой формой необходимо работать. Нужна привязка к DataSet насколько я понимаю.


 
Виталий Панасенко   (2005-08-22 10:27) [5]

Это нужно именно в сетку или все-таки в отчет ? Если в отчет, то это кросс-таб отчет.. Смотри в сторону ФастРепорт/pReport


 
paurlin   (2005-08-22 11:28) [6]

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


 
Desdechado ©   (2005-08-22 13:36) [7]

сводная ведомость и рабочая ведомость - не одно и то же
интерфейс можно и поменять


 
paurlin   (2005-08-22 22:32) [8]

Так я и не понял, как мне подступиться к решению задачи. Все равно спасибо.


 
Турист   (2005-08-22 23:21) [9]

Defunct ©   (20.08.05 20:59) [1]


 
KilkennyCat ©   (2005-08-22 23:45) [10]

Могу посоветовать TADVStringgrid, http://www.tmssoftware.com
В чем преимущества: можно сохранить таблицу как есть, экспортировать в Ексель и т.д., т.е. не ломаем голову. Честно говоря, если такая простая таблица сложна в реализации, то проще уж так...


 
Турист   (2005-08-22 23:55) [11]

Ненормальная таблица - ненормальные решения :-)


 
alex_***   (2005-08-23 10:16) [12]

ручками надо куб делать. Делать набор для столбцов, потом по ним сформировать набор по строкам. ОБыкновенная сводная отчетность


 
paurlin   (2005-08-23 11:29) [13]

Хорошо, вручную так вручную. Может тогда кто-нибудь ссылки в и-нет дать, как это сделать.


 
KilkennyCat ©   (2005-08-23 11:49) [14]


> [13] paurlin   (23.08.05 11:29)


я ж уже дал...


 
paurlin   (2005-08-24 10:18) [15]

Никто не знает других ссылок по данной теме? Чтоб без Екселя. Буду очень признателен.


 
magic   (2005-08-24 10:55) [16]

Есть в Access-e такая фича, как перекрестные запросы. Сделай это под аксессом и посмотри SQL, который он сгенерирует. Потом сможешь этот запрос в свою прогу воткнуть


 
alex_***   (2005-08-24 12:21) [17]

все равно придется понять как он работает и адаптировать под себя. С таким же успехом можно самому писать


 
paurlin   (2005-08-25 18:33) [18]

Попробовал фичу с Аксессом. Адаптированный запрос выглядит так.

TRANSFORM Max(rezult)
Select ID_st from result
GROUP BY ID_st
PIVOT IDdisc

Пишет Capability not supported.
В чем может быть ошибка. Может она не связана с кодом? Спасибо.


 
paurlin   (2005-08-26 13:40) [19]

...


 
paurlin   (2005-08-26 20:41) [20]

В итоге строю кубик вручную методом тыка. Запрос написал для DecisionQuery вот такой:
"SELECT Дисциплины,  Count(Оценки) , Фамилия
FROM result
GROUP BY Оценки, Фамилия, Дисциплины"

Могу воспользоваться только функцией Count почему-то. Мне надо просто значения из столбца считать, а не преобразовывать их. Хотел воспользоваться функцией MAX, но пишет что выражение не соответствует String.
Подскажите, если можете, что можно сделать.


 
Турист   (2005-08-26 23:14) [21]

F4 - дисциплина
F2 - фамилия
F5 - оценка

SELECT F4, F2, MIN( F5 ) FROM TABLE4 GROUP BY F4, F2

DecisionQuery1, DecisionCube1, DecisionSource1, DecisionGrid1


 
Турист   (2005-08-26 23:27) [22]

Если F5 символьное, то MIN( CAST (F5 AS INT) )


 
paurlin   (2005-08-27 15:16) [23]

Здорово. Спасибо большое. А можно ли будет редактировать данные прямо в DecisionGrid или он для этого не предназначен? Если нельзя, то какой может быть выход? И ещё один вопросик. Если мне необходимо чтобы в Dec-nGrid были не только поля, в которых проставлены оценки, а все поля, что нужно для этого сделать? Ещё раз спасибо за помощь.


 
Турист   (2005-08-28 19:38) [24]

>paurlin   (27.08.05 15:16) [23]
>А можно ли будет редактировать данные прямо в DecisionGrid или он для этого не предназначен?

Наверно, не предназначен.

Можно добавить отдельное диалоговое окно редактирования выбранной ячейки в котором выводить дисциплину, фамилию
оценку, через тоже окно добавлять новую "тройку".


 
paurlin   (2005-08-29 11:44) [25]

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


 
Турист   (2005-08-29 13:09) [26]

Поищи в интернете компонент TDhGridEx. Он подходит для твоей задачи.


 
Антоныч ©   (2005-08-29 13:09) [27]

Как вариант реализации:
Работа с обычным StringGrid, но придется делать подготовительные действия:
1) количество столбцов и строк в StringGrid будет определяться исходя из запроса SELECT DISTINCT Student FROM Ocenki и SELECT DISTINCT Predmeti FROM Ocenki
2) прогоняется БД от начала в конец и оценка для студента по соотв. предмету записывается в соответствующую ячейку StringGrid
Все эти действия происходят, например, в OnShow.
Далее работается как с обычным StringGrid-ом, а затем по нажатии кнопки "Обновить данные", или на событии смены ячейки StringGrid происходит обновление базы. Немного геморрно, через одно место, но должно работать :)


 
paurlin   (2005-08-31 12:36) [28]

Спасибо. Про "подготовительные действия" мысль была.
Хотел бы попробовать использовать DBGridEh или вот тут в [26] подсказали DBGridEx (такого зверя еще не видел).
А можно кратко описать последовательность действий с указанным компонентом для решения моей задачи. Принцип действия.Чтобы знать как к нему подойти.


 
paurlin   (2005-09-01 11:21) [29]

...


 
Sergey13 ©   (2005-09-01 11:25) [30]

2 [29] paurlin   (01.09.05 11:21)
В ЕхЛибе есть виртуальная таблица вроде (или есть похожая в Rx или CDS наконец). Возьми ее. В рантайме из своих выборок сформируй структуру и заполни данными. Отображай в гриде как обычно.



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2005.10.09;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.51 MB
Время: 0.015 c
5-1101811719
Anatoly
2004-11-30 13:48
2005.10.09
Открытие формы в design-time


14-1127306450
Антоний
2005-09-21 16:40
2005.10.09
Завершение lsass.exe


5-1101496474
gisarm
2004-11-26 22:14
2005.10.09
TColorDialog


14-1126844828
Rentgen
2005-09-16 08:27
2005.10.09
COM1 -> Ethernet -> COMn


1-1127028683
vidiv
2005-09-18 11:31
2005.10.09
Распознование ссылок в тексте





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский