Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Формирование расп. занят. в ВУЗе, способом эксп-та из БД в Excel [D6, MSSQL]


Страницы:   1 2

Василий ©   (2006-06-08 18:42:00) 

Ребята помогите пожалуйсто!
Нужно написать программу расписаний занятий для вуза, смысл таков:    
      "Каждый деканат состовляет для своего факультета, расписание, способом набора его в MS Excel. Оно выглядит примерно следующим образом:

|---------------------------------------------------------------
|                               РАСПИСАНИЕ ЗАНЯТИЙ
|---------------------------------------------------------------
| дн|вр|   101       |       102      |      201      |      301
|    |--|--------------------------------------------------------
| п | 1 |               |                  |        |        |
| о |   |  Мат.Лог  |                   |        |  КС  |      Ф-ра
| н |   |       15     |                   |        |   22 |        ст.
| е |   |               |                   |        |        |
| д |**********************************************
| е | 2 |        |      |                  |                 |
| л |   |        |       |                  |                 |    Педагогика
| ь |   | Ф-ра| Физ |                  |                 |           13
| н |   |  ст.  |   17 |                  |                 |
| и |   |        |       |                  |                 |
| к |   |        |       |                  |                 |
----------------------------------------------------------------
| в |
| т |
| о |
| р |
| н |
| и |
| к |
|   |

Где: дн-день недели
      вр-время звонка (1-я пара, 2-я пара и т.д.)
      101-первый курс первая группа
      102-первый курс вторая группа
      201-второй курс первая группа и т.д., надеюсь понятно!
      Мат.Лог, КС, Ф-ра, Физ, Педагогика - это все пары
      15, 22, ст.(стадион), 13, 17- это аудитории

        Это расписание нужно размещать на сайте!
        Т.е. каждому деканату приходиться набирать расписание на ПК в Excel, распичатывать и вывешивать на доску расписаний. При всем приэтом им (деканатам) еще приходиться вбивать все тоже самое, что они набирали в Excel.
        Мной же было предложено разработать программу при помоши которой каждый деканат могбы вбивать это все в какуюто форму(БД), а далее экспортировать в Excel, распичатать, а скрипт вывода на Web-страницу делалбы тожесамое только с БД на Web.
        Вся трудность состои в том, что я немогу сформировать это расписание в Excel-е верным обрасом. Т.е. мне необходим правельный SQL-запрос.
Помогите пожалуйсто!

База: <a href=" http://www.agpu.armavir.ru/novoalex/1.gif">1.gif</a>

date- дата
dn-   день недели (1-понедельник, 2-вторник и т.д.)
chet- четная или не четная (0-четная 1-нечетная)
fak- факультет (1-физфак,2-матфак и т.д.)
grup- группа
p_grup -подгруппа (1-первая подгруппа, 2- вторая и т.д., 0-занимаются все и 1-я и 2-я вместе)
time- время звонка (1-первая пара 8:00, 2- вторая пара 9:35 и т.д. [пара длиться 1час 20мин, перемена 15мин])
pred-предмет
aud- аудитория
prep- преподователь
dprep-должность преподователя


PEAKTOP   (2006-07-10 14:40:00) [1]

Твоя проблема в том, что ты пытаешься сначала собрать разобщенные данные с разных файлов xls по всему институту (универу, и т.д....) с разных факультетов, обработать их и вставить в базу, а потом - выкинуть в ВЭБ расписание.
Не проще ли пойти путем создания централизованной базы расписания на весь ВУЗ, пускай прямо в нее вставляют записи, а потом из нее генерь расписание и на печать и на ВЭБ. В таком случае снижается вероятность получения противоречивых данных, т.к. какая-то тетка поправила файл расписания, а подгрузить в базу его забыла.
А уж потом, из базы данных, хочешь FastReport печатай, хочешь xlReport, да прямо из броузера можно послать на печать. А если делашь свою архитектуру на MySQL или FireBird, то в принципе и exe-шника клиентского не надо, можно легко обойтись броузером и сервером в связке Apache+PHP+[Firebird|MySQL|M$SQL] и все сделать на одних скриптах.


sniknik   (2006-07-10 14:04:00) [2]

> Если вы не можете помочь!
лениво... вот прикинь насколько нам лениво, если тебе тоже настолько, что не делаеш, хотя и очень нужно..., а нам то это еще и не нужно...

> А вопрос этот тогда постараюсь сам решить!
посмотри раздел "Cross-Tab Reports" в BOL. должно помочь.


Василий   (2006-07-10 13:23:00) [3]


> Virgo_Style ©


> unknown ©  

Вот втом все и дело что я все это время другим занимался!
А вопрос этот тогда постараюсь сам решить!
Если вы не можете помочь!
Чтож извените что поднял данную тему!


unknown   (2006-07-09 17:11:00) [4]


> Василий   (09.07.06 15:38) [21]
> Помогите пожалуйста! Работа горит!

Ты чем целый месяц занимался?
Можно было как минимум прочитать книжку по SQL.


Virgo_Style   (2006-07-09 16:31:00) [5]

Василий   (09.07.06 15:38) [21]

Месяц уже прошел, выведи его наконец хоть в StringGrid и будь счастлив


Василий   (2006-07-09 15:38:00) [6]

Здравствуйте ребята!
Прошу прощения, что поднимаю старую тему!
Но всеже хотелось бы увидеть на данном форуме решение моей проблемы по базе расписания!
Кто может составить запрос тот который будет выводить данные за неделю, пускай не в Excel, а так как вы это представляете!
Пускай к примеру отображает данные FastReport!
Помогите пожалуйста! Работа горит!


evvcom   (2006-06-20 09:47:00) [7]

Особо не въезжал в структуру и как надо, но думаю генератор отчетов с возможностью создания кросстаблиц юзать проще будет. Тогда SQL будет элементарным, независимым от количества и номеров групп, а всю работу выполнит чужой код, который к тому же, наверняка, будет надежнее, чем код начинающего автора.


ANB   (2006-06-20 09:33:00) [8]

Значится, ответ примерно такой (делал в оракле, но без фичей) :
Таблица :

create table Rasp
(
Gr_No integer,
Predm varchar2(40),
dt    Date,
dn    integer,
tm    integer
)


Затем выбираешь все группы

select distinct R.GR_NO from Rasp R

На основании этого запроса формируешь динамически запрос примерно по образцу :

select   R.Dt, R.Dn, R.Tm,
        min ((case
              when R.Gr_No = 101
  then R.Predm
              else null
              end)) Gr_101,
        min ((case
              when R.Gr_No = 102
              then R.Predm
              else null
              end)) Gr_102,
        min ((case
              when R.Gr_No = 103
              then R.Predm
              else null
              end)) Gr_103
   from Rasp R
group by R.Dt, R.Dn, R.Tm

Ну, под свою стркутуру сам подкрутишь.


ANB   (2006-06-20 09:15:00) [9]


> fantasy ©   (20.06.06 03:40) [17]

Тут проблема в составлении запроса.


> Василий   (19.06.06 18:08) [15]

Я думаю, есть смысл сначала привести таблицу в порядок, т.к. БД явно требует нормализации. В такой структуре очень велика вероятность мелкой ошибки оператора из-за которой расписание будет печататься неверно


fantasy   (2006-06-20 03:40:00) [10]

Есть много очень удобных компонетнт по экспорту данных в ехсел
юзай их


VadimSpb   (2006-06-19 23:41:00) [11]

завязка с Excel главная ошибка! нада формировать отчет в генераторе отчетов типа FastReport
Бред. Просто надо научиться делать ЭТО правильно. Зависит от того, что надо экспортировать. И далеко не факт, что FastReport сделает это лучше, напр. по соотношению объем/скорость. Скоре наоборот ;-))


Василий   (2006-06-19 18:08:00) [12]

Нужно составить SQL-запрос, который будет возврощать неделю, при условии, что она будет сортироваться таким образом:
   SELECT * FROM templates WHERE (pon <= vd) AND (vd <= vs) AND (fak = fak_)                   , где fak- выбранный факультет, расписание которого нам нужно;
vd- выбранная дата которая должна входить в ту неделю, которая нам нужна;
далее функциями delphi мы возвращаем: pon(понедельник)- край недели, vs(воскресение)- край недели;
т.е. неделю я оттсортировал без проблем!
Вопрос в том как узнать, сколько максимум занятий вовсех группах по горизонтали? И сколько максимум по каждой группе подгруп?


Василий   (2006-06-19 17:43:00) [13]

Что-то форум замолчал!?


unknown   (2006-06-09 20:50:00) [14]


> Василий   (09.06.06 17:42) [12]
> ВОТ, ВОТ, ВОТ !!!!!!!

http://www.ln.ua/~openxs/articles/smart-questions-ru.html


Василий   (2006-06-09 17:42:00) [15]

ВОТ, ВОТ, ВОТ !!!!!!!
Спасибо ANB, за понимание. Это самое я и имел ввиду!!!
Просто не мог правильно выразиться, может из-за того, что думал вы не поймёте, извиняюсь за недооценку.

Меня именно вот этот запрос и интересует, сколько я их не делал, не могу осмыслить хоть убей!, на странице Excel "белиберду выводит и ВСЕ", а каким я путём шел, понял что не верно.
КОНКРЕТНО ВОПРОС:
     Как должен выглядеть SQL- запрос сортирующий таблицу http://www.agpu.armavir.ru/novoalex/1.gif , чтобы я мог одним махом забрать т.е., сколько максимум подгрупп учиться, на всей недели у 101 группы, чтобы вывести обозначение 102 группы уже с Другой позиции (по вертикали! )и т.д., у какой группы максимум предметов в понедельник, чтобы обозначение недели вторник, вывести уже с другой позиции (по горизонтали! ) и т.д., а проблем с формированием шаблона расписания у меня нет.


ANB   (2006-06-09 16:44:00) [16]

А тебе все равно надо динамически составлять хитрый запрос, чтобы все красиво выгреблось.


Василий   (2006-06-09 16:33:00) [17]

Спасибо unknown, понял как связать!
Хотелось бы услышать еще парочку предложений от посетителей форума.
Может можно пойти например каким-то другим путём?

Заранее благодарен!!!


unknown   (2006-06-09 15:46:00) [18]


> Василий   (09.06.06 08:02) [8]

1) В панели управления выбираем "Источники данных (ODBC)"
2) Добавляем там свой DSN для SQL Server-а
3) В екселе жмем F1 и ищем "источники данных"


Василий   (2006-06-09 08:02:00) [19]

Unknown немоглибы по подробней рассказать о odbc, каким конкретно способом можно, цитирую: прилинковаться к m$sql?


Ильш   (2006-06-09 06:20:00) [20]

завязка с Excel главная ошибка! нада формировать отчет в генераторе отчетов типа FastReport (а там уж хошь в Excek сохраняй, хошь куда)... у меня друг делал диплом как раз что-то в этом духе, но у него все было намного кузявее - вводились нагрузки преподов, наличие свободных аудиторий и прочие данные и на их основе автоматически формировалось расписание, вот это вещчь!
да и запрос тут врядли составишь, чудес не бывает... чтобы получить желаемый результат надо данные исходные (структуры базы) затачивать под этот результат...


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо