Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Журнал, задачка для эксперта :) 
:(
    Опции темы
Ch0bits
  Дата 12.12.2005, 22:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Python Dev.
****


Профиль
Группа: Завсегдатай
Сообщений: 2124
Регистрация: 21.2.2005
Где: Казань

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



Имеется вот такая таблица:
Код

ID_Student - идентификатор студента, Foreign Key на Students
ID_Group   - идентификатор группы, FK на Groups
SemNum     - номер семетра
ID_Predmet - идентификатор предмета, FK на Predmets
Rate       - оценка 2..5, 0-прогул, 1-недопущен
IsExam     - true-экзамен, иначе зачёт

Должна быть такая форма "Журнал" где выбирают группу и семестр, а также добавляют новую сессию с экзаменами. Я могу выбрать группу и семестр, но никак не соображу как же сделать таблицу журнала. Т.е. нужна таблица где столбцы это экзамены, а строки имена студентов.

PM WWW   Вверх
Демо
Дата 12.12.2005, 22:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 2
Всего: 50



Посмотри на стандартный компонент TDecisionCube. он позволяет делать то, что тебе нужно - разворачивать Dataset.


--------------------
    
PM MAIL ICQ Skype   Вверх
YurikGL
Дата 12.12.2005, 22:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Если сервер позволяет, то можно сделать на хранимой процедуре.
--------------------
 
PM MAIL WWW ICQ   Вверх
Ch0bits
Дата 13.12.2005, 00:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Python Dev.
****


Профиль
Группа: Завсегдатай
Сообщений: 2124
Регистрация: 21.2.2005
Где: Казань

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



Цитата
Посмотри на стандартный компонент TDecisionCube

Посмотрел... Примеров нету, доки только для отмазки.

Цитата(YurikGL @ 12.12.2005, 22:53)
Если сервер позволяет

Access smile

Нашёл аналогичную моей тему. Там тоже шла речь про TDecisionCube, но похоже что делать всё-таки пришлось через StringGrid. smile smile
Если не удасться разобраться с этим кубозверем, то буду на ходу создавать таблицу, а потом дропать её. smile И так много-много раз... Ужасьнах!
PM WWW   Вверх
YurikGL
Дата 13.12.2005, 21:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата
Должна быть такая форма "Журнал" где выбирают группу и семестр, а также добавляют новую сессию с экзаменами. Я могу выбрать группу и семестр, но никак не соображу как же сделать таблицу журнала. Т.е. нужна таблица где столбцы это экзамены, а строки имена студентов.


Для начала, нужно определить список предметов, т.е. список столбцов. Он явно будет разным для разных семестров и групп...
Потом можно попробовать написать запрос типа

select StudentName, t1.rate, t2.rate, t3.rate ... from students, /* не помню как определяются псевдонимы таблиц, но t1, t2 и t3 это - рассмотренная таблица*/ where t1.id_predmet=id_predmet1, t2.id_predmet=id_predmet2, t3.id_predmet=id_predmet3 /* id_predmet1..3 это те предметы, которые мы заране определили */
Причем для каждого t1..t3 нужно будет повторить все условия, которые накладываются на всю выборку (номер семестра, группа)

--------------------
 
PM MAIL WWW ICQ   Вверх
Ch0bits
Дата 14.12.2005, 18:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Python Dev.
****


Профиль
Группа: Завсегдатай
Сообщений: 2124
Регистрация: 21.2.2005
Где: Казань

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



YurikGL
Спасибо что подумал на эту тему, но я уже всё сделал. smile

Сначала происходит добавление сессии для группы и семестра, т.е для каждого студента группы создаются предметы и ставятся начальные значения - двойки. smile Далее при обращении на редактирование создаётся временная таблица со столбцами предметами для данной группы и сессии, где строки имена(идентификаторы) студентов. Временная таблица соединяется с гридом, где её удобно редактировать. Во время этого механизм зеркалирования переносит изменения в настоящую таблицу. В завершении временная таблица дропается. Также зеркалирование учитывает что студенты могут переходить из одной группы в другую, поэтому сохраняется их группа на данную сессию. К тому же экзамены у разных групп одного факультета могут быть разными на старших курсах из-за разделения по специализациям.
Вот такая замарочка. smile
PM WWW   Вверх
YurikGL
Дата 14.12.2005, 19:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Только надо продумать механизм, что-бы несколько пользователей одновременно не создали таблицу с одним и тем же именем smile
--------------------
 
PM MAIL WWW ICQ   Вверх
YurikGL
Дата 14.12.2005, 19:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Вообще в многопользовательской БД делать временные таблицы - неправильно.
Имена таблиц не должны повторяться. Сделать это без применения счетчиков, по меньшей мере, проблематично. Если только запрещать запуск двух клиентов с одного компьютера.
Если перед drop-ем таблицы программа зависает, то времянка остается навсегда.
--------------------
 
PM MAIL WWW ICQ   Вверх
Ch0bits
Дата 14.12.2005, 21:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Python Dev.
****


Профиль
Группа: Завсегдатай
Сообщений: 2124
Регистрация: 21.2.2005
Где: Казань

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



Цитата(YurikGL @ 14.12.2005, 19:41)
в многопользовательской БД делать временные таблицы - неправильно.

Зачем же тогда придумали CREATE TEMPORARY TABLE? Раз есть надо пользоваться.

Цитата(YurikGL @ 14.12.2005, 19:41)
Если перед drop-ем таблицы программа зависает, то времянка остается навсегда.

Почему остаётся? Всё равно дропнем!

PM WWW   Вверх
YurikGL
Дата 15.12.2005, 21:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Код

CREATE TEMPORARY TABLE

Временная таблица (TEMPORARY) будет автоматически удалена 
после закрытия соединения с базой данных. Два различных 
соединения могут создавать таблицы с одинаковым именем не 
конфликтуя при этом. Если уже существует таблица с таким 
именем, то она будет спрятана пока не будет удалена 
временная таблица. 


Ну да! можно! smile



Это сообщение отредактировал(а) YurikGL - 15.12.2005, 21:14
--------------------
 
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


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

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


 




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


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

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