Автоматизированная система управления «Деканат»: Руководство разработчика, страница 4

**

RzSpinEdit1Change() === RzNumericEdit1Change()

procedure TForm3AddGrup.RzNumericEdit2Change(Sender: TObject);

Замечательная процедура. Она ничего не делает ее можно удалить.

procedure TForm3AddGrup.cxLookupComboBox1PropertiesCloseUp(Sender: TObject);

Вытаскивает продолжительность обучения по ID специальности и подставляет в cxDBTextEdit1.

-Запрос на выборку продолжительности обучения:

SELECT prodolj_ob

FROM specialnost

WHERE specialnost.id = cxLookupComboBox1.EditValue

procedure TForm3AddGrup.RzSpinEdit1Change(Sender: TObject); 

Меняя количество групп, формируем для них шифр из года набора и кода специальности. Небольшая проверка на год, чтобы из 2001 получалось 01, а не 1. Номер группы получаем через вычитание 2000 из года набора. Вываливаем получившееся в RzStringGrid1.

**

RzSpinEdit1Change() === RzNumericEdit1Change()

procedure TForm3AddGrup.RzBitBtn1Click(Sender: TObject);

Вносим данные из RzStringGrid1 в БД. После этого создаем запрос с параметром в DataModule2.IBTemp2. Название берем из RzStringGrid1. И создаем бюджетные места, если они были указаны в RzStringGrid1.

-Запрос нахождения группы

SELECT ID

FROM gruppa

WHERE gruppa.nazv=:NAZV

Запрос возвращает ID группы по ее называнию.

procedure TForm3AddGrup.cxDBTextEdit1KeyPress(Sender: TObject; var Key: Char);

«Защита от дурака». Нельзя вводить буквы в cxDBTextEdit1.

Хотя вообще не понимаю зачем тут что-то вводить если все берется из БД.

unit Unit4 – Сводная ведомость;

procedure TForm4SvodVed.xls1Click(Sender: TObject);

Экспорт в MS Excel. Последовательный. Перебором каждой ячейки.

procedure TForm4SvodVed.xls2Click(Sender: TObject);

Экспорт в шаблон MS Excel 'shab\FactPlan.xls'. Последовательный. Перебором каждой ячейки.

procedure TForm4SvodVed.N3Click(Sender: TObject);

Открывает окно формирования экзаменационной ведомости.

unit Unit5 – Учебный план;

Учебный план – какая дисциплина в каом семестре у какой специальности ведется и какая форма контроля.

Текущий план – расширяет учебный план, разворачивая «специальности» до конкретных групп (генерируется программой из УП) и добавляя расчасовку с преподавателем (указывается пользователем).

Сводная ведомость – расширяет Текущий план, разворачивая академические группы до конкретных студентов. Пользователю остается только указать оценки за форму контроля

procedure TForm5UchPlan.N1Click(Sender: TObject);

Пункт меню «Добавить строку». Добавляет запись в таблицу.

procedure TForm5UchPlan.N2Click(Sender: TObject);

Пункт меню «Удалить строку». Удаляет запись в таблице.

procedure TForm5UchPlan.xls1Click(Sender: TObject);

«Импорт» → «Новый файл..». Экспортирует таблицу в MS Excel.

procedure TForm5UchPlan.xls2Click(Sender: TObject);

«Импорт» → «Шаблон». Экспортирует таблицу в шаблон MS Excel shab\UchPlan.xls.

procedure TForm5UchPlan.RzBitBtn1Click(Sender: TObject);

Берем запрос из файла 'SQL\UP-FPnorepeatPARAM.sql', передаем параметры Года и Сезона из cxComboBox2 и cxComboBox1 соответственно и формируем фактический план из учебного.

-Запрос на формирование фактического плана из учебного (файл SQL\UP-FPnorepeatPARAM.sql)

insert into tecplan (gruppa_id,

kalen_semestr_id,

disciplina_id,

attectation_id,

semestr_id)

SELECT

gp.id,

giveme_kalsem.id,

up.disciplina_id,

up.attestation_id,

up.semestr_id

FROM

giveme_kalsem(:G,:S),

gruppa gp

left join specialnost sp on (gp.specialnost_id = sp.id)

left join uchplan up on (up.specialnost_id = sp.id)

where

(up.semestr_id = 2* (:G - gp.god_post)+:S)

and not exists(

select tp.id

from tecplan tp

where

(

gruppa_id = gp.id

and kalen_semestr_id = giveme_kalsem.id

and disciplina_id = up.disciplina_id

and attectation_id = up.attestation_id

and semestr_id = up.semestr_id

)

)

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

giveme_kalsem() – возвращает ID календарного семестра из таблицы KALEN_SEMESTR Входные параметры – год и {осень=1, весна=0}

up.semestr_id = 2* (:G - gp.god_post)+:S - узнает текущий номер семестра по году набора группы. Входные параметры – текущий год (G) и  семестр (S - {осень=1, весна=0} )

Блок and not exists() проверяет перед вставку существует ли уже подобная запись в текущем плане.