Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УМП по БД 5244.doc
Скачиваний:
148
Добавлен:
09.04.2015
Размер:
3.82 Mб
Скачать

If MessageDlg('Несохраненные данные будут потеряны. Закрыть? ',

mtConfirmation, [mbYes, mbNo], 0) = mrYes then

Q_Spr.CancelUpdates ;

Close ;

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

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

7.5 Форма Журнал (j_Ved)

События OnActivate

Q_J_Ved.Close ;

Q_J_Ved.Open ;

Query

Свойства SQL:

select distinct N_G , Date_g,

Predmet = isnull((select Predmet from Predmet as v2 where v2.Num_pred = v1.Num_Pred),'') ,

Gr = (select v2.Gr from Kadr as v2 where v1.PN= v2.PN)

from ved as v1

Добавить

Событие OnClick: TVed.Create(Application);

Удалить

Событие OnClick

with DataModule3.Q_for_Work do

Begin

sql.Clear;

sql.add('set dateformat dmy Delete from Ved where N_G = '

+ Q_J_Ved.FieldbyName('N_G').AsString+' and Date_G = '

+ QuotedStr(Q_J_Ved.FieldbyName('Date_g').AsString)) ;

ExecSQL ;

Q_J_Ved.Close ;

Q_J_Ved.Open ;

end ;

7.6 Форма Ведомость (Ved)

Событие OnActivate: DT_Date_G.date := Now ;

Компоненты

ComboBox (Cb_Predmet ) , ComboBox (CB_GR)

Событие OnDropDown (ссылка обоих объектов на одно событие)

var Str : string ;

begin

if (Sender as TComboBox).Name = 'CB_Predmet' then

Str := 'select distinct Predmet from Predmet';

if (Sender as TComboBox).Name = 'CB_Gr' then

Str := 'select distinct Gr from Kadr';

(Sender as TComboBox).Items.Clear;

with DataModule3.Q_for_Work do

Begin

sql.Clear;

sql.add(Str);

Open ;

If not IsEmpty then

Begin

First;

while not eof do

begin

(Sender as TComboBox).Items.add(fields[0].AsString) ;

Next ;

end;

end

end;

end;

UpdateSql

Свойство ModifySql

update ved

set

Mark = :Mark

where

NzapVed = :OLD_NzapVed

Query (Q_Ved)

Свойство SQL:

Select v1.NzapVed, v1.pn, v2.FIO , v1.Mark

from ved as v1 join Kadr as v2

on v1.PN = v2.PN

where v2.Gr = :Gr and v1.Num_Pred = :Num_Pred

and v1.n_g = :n_g and v1.Date_g = :Date_g

order by v1.pn

Button (Добавить список Студентов)

Событие OnClick

var Num_Pred: integer ;

N_G : integer;

Date_G :string ;

begin

N_G := strtoint(ME_NG.text) ;

Date_G := datetostr(DT_Date_G.Date) ;

with DataModule3.Q_for_Work do

Begin

// получение номера предмета по его названию

sql.Clear;

sql.add('select Num_Pred from predmet where Predmet='

+ QuotedStr(CB_Predmet.text)) ;

Open ;

if IsEmpty then

ShowMessage('Введен несуществующий предмет')

else

Begin

// Добавление в ведомость списка студентов выбранной группы

Num_Pred := fields[0].asinteger;

sql.Clear;

sql.add( ' set dateformat dmy '+

' Insert into ved (N_G, Date_G, PN, Num_Pred)'+

' select N_G ='+ME_NG.Text+' , Date_G = '

+ QuotedStr(datetostr(DT_Date_G.date))+', PN,'+

' Num_Pred = '+inttostr(Num_Pred)+

' from Kadr where Gr = '+QuotedStr(CB_Gr.text)) ;

ExecSQL ;

Q_Ved.Close ;

Q_Ved.ParamByName('Gr').AsString := CB_Gr.Text;

Q_Ved.ParamByName('Num_Pred').AsInteger := Num_Pred;

Q_Ved.ParamByName('N_G').AsInteger := N_G;

Q_Ved.ParamByName('Date_G').Asstring := Date_G;

Q_Ved.Open ;

end ;

end;

end;

Button (Ок)

Событие OnClick

IF Q_Ved.State in[dsedit,dsinsert] then

Q_Ved.Post ;

if Q_Ved.UpdatesPending then

Begin

try

Q_Ved.ApplyUpdates ;

except

Showmessage('Нарушена ссылочная целостность!');

Q_Ved.CancelUpdates ;

Abort ;

end ;

end ;

Close ;