Курсовые работы / ПРИС П _30
.pdfПРИЛОЖЕНИЕ Б Листинг программы
Листинг Б.1 -Fmain
unit main; interface uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls,jpeg, ComCtrls, Menus,inifiles; type
TFmain = class(TForm) im1: TImage;
sb1: TStatusBar; MainMenu1: TMainMenu; N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
N8: TMenuItem;
N9: TMenuItem;
N10: TMenuItem;
N11: TMenuItem;
N12: TMenuItem;
N13: TMenuItem;
N14: TMenuItem;
N15: TMenuItem;
N16: TMenuItem;
N17: TMenuItem;
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure FormShow(Sender: TObject); procedure N6Click(Sender: TObject); procedure N7Click(Sender: TObject); procedure N4Click(Sender: TObject); procedure N3Click(Sender: TObject); procedure N9Click(Sender: TObject); procedure N10Click(Sender: TObject); procedure N11Click(Sender: TObject); procedure N13Click(Sender: TObject); procedure N15Click(Sender: TObject); procedure N17Click(Sender: TObject);
private
{Private declarations } public
{Public declarations } end;
var
Fmain: TFmain; implementation
uses datm, chPass, NasP, luchr, Podrazd, Oborud, Zakaz, ot; {$R *.dfm}
procedure TFmain.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
if application.MessageBox(' 'Вы уверены? ','Выход из программы!',mb_yesno+mb_iconquestion)=idyes then
begin dm.ado.Connected:=false; application.Terminate; end
else canclose:=false; end;
procedure TFmain.FormShow(Sender: TObject); begin
if fileexists(ExtractFilePath(Application.ExeName)+'data\photo.jpeg' ) then
begin
im1.Picture.LoadFromFile(ExtractFilePath(Application.ExeName)
+'data\photo.jpeg');
end;
end;
procedure TFmain.N6Click(Sender: TObject); begin
closequery;
end;
procedure TFmain.N7Click(Sender: TObject); begin
tmp:=fmain.Caption+#13+#13+#13+
'Разработчик: '+avtor +#13+ 'Группа: '+gruppa+#13+#13+
'CopyRight';
Showmessage(tmp);
end;
procedure TFmain.N4Click(Sender: TObject); var inifile:tinifile;
dbp:string;
s:string;
path1,path2:string; begin
IniFile := TIniFile.Create(ExtractFilePath(Application.ExeName)+'data\optio ns.ini');
DBP := IniFile.ReadString('options', 'DBPath', ''); IniFile.Free;
path1:=ExtractFilePath(Application.ExeName)+'data\Архив\COP Y_DB_'+datetostr(date)+'.mdb';
try copyfile(pchar(DBP),pchar(path1),true); except
end;
if fileexists(path1) then showmessage('Резервная копия создана успешно') else showmessage('Ошибка при создании резервной копии');
end;
procedure TFmain.N3Click(Sender: TObject); begin
fchpass.Caption:=n3.Caption;
fchpass.ShowModal;
end;
procedure TFmain.N9Click(Sender: TObject); begin
dm.np.Connection:=dm.ado;
dm.nps.DataSet:=dm.np;
fnasp.DBGrid1.DataSource:=dm.nps;
dm.np.Active:=false; dm.np.CommandText:='Select * from nasp'; dm.np.Active:=true; fnasp.Caption:=n9.Caption; fnasp.ShowModal;
end;
procedure TFmain.N10Click(Sender: TObject); begin
dm.lu.Connection:=dm.ado;
dm.lus.DataSet:=dm.lu;
fluchr.DBGrid1.DataSource:=dm.lus;
dm.lu.Active:=false;
dm.lu.CommandText:='Select id_lu,nazv_lu,nazv_np,fio_lu,tel_lu,log_lu,kod_np,kod_lu from nasp,luchr where (id_np=id_np_lu)';
dm.lu.Active:=true;
fluchr.Caption:=n10.Caption;
fluchr.ShowModal;
end;
32
procedure TFmain.N11Click(Sender: TObject); begin
dm.pod.Connection:=dm.ado;
dm.pods.DataSet:=dm.pod;
fpodrazd.DBGrid1.DataSource:=dm.pods;
dm.pod.Active:=false;
dm.pod.CommandText:='Select id_pod,nazv_pod,fio_pod,tel_pod,([nazv_lu]&" ("&[nazv_np]&")") as lu,id_lu,kod_lu,kod_pod from podrazd,luchr,nasp where (id_lu=id_lu_pod) and (id_np=id_np_lu)';
dm.pod.Active:=true;
fpodrazd.Caption:=n11.Caption;
fpodrazd.ShowModal;
end;
procedure TFmain.N13Click(Sender: TObject); begin
dm.ob.Connection:=dm.ado;
dm.obs.DataSet:=dm.ob;
foborud.DBGrid1.DataSource:=dm.obs;
dm.ob.Active:=false;
dm.ob.CommandText:='select id_ob,([nazv_np]&", "&[nazv_lu]&", "&[nazv_pod]) as podr,nazv_ob,st_ob,datav_ob,datap_ob,zn_ob,id_np,id_lu,id_pod, kod_np,kod_lu,kod_pod,rabota_ob from nasp,luchr,podrazd,oborud WHERE (id_np=id_np_lu) and (id_lu=id_lu_pod) and (id_pod = id_pod_ob)'; dm.ob.Active:=true;
Листинг Б.2 – AccessDB
unit AccessDB; interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, Menus,inifiles,datm; function data(data:tdatetime):string; function Update(rs,tab,temp:string):boolean; function Delete(rs,tab,temp:string):boolean;
Procedure Zan(rs,tab,temp:string;tm:integer); Procedure jurnal(mesto,deis:string);
implementation var tmp:string;
tm:integer;
function data (data:tdatetime):string; var g,m,d:word;
begin decodedate(data,g,m,d);
result:=''+currtostr(d)+'/'+currtostr(m)+'/'+currtostr(g)+'';
end;
function Update(rs,tab,temp:string):boolean; begin
dm.temp.Active:=false;
dm.temp.CommandText:='Select log_'+rs+' from '+tab+' where (id_'+rs+'='+temp+')';
dm.temp.Active:=true;
if dm.temp.Fields[0].AsBoolean=true then begin
result:=false; end
else begin
dm.com.CommandText:='Update '+tab+' set log_'+rs+'=TRUE where id_'+rs+'='+temp+'';
dm.com.Execute;
result:=true;
end;
end;
foborud.Caption:=n13.Caption;
foborud.ShowModal;
end;
procedure TFmain.N15Click(Sender: TObject); begin
dm.zk.Connection:=dm.ado;
dm.zks.DataSet:=dm.zk;
fzakaz.DBGrid1.DataSource:=dm.zks;
dm.zk.Active:=false;
dm.zk.CommandText:='Select id_zk,data_zk,count(id_ob) as kol, sum(st_ob) as summa,([nazv_np]&", "&[nazv_lu]&", "&[nazv_pod]) as podr,nazv_pod,tel_pod from oborud,zakaz,nasp,luchr,podrazd '+
'WHERE (id_zk=id_zk_ob) and (id_np=id_np_lu) and (id_lu=id_lu_pod) and (id_pod=id_pod_zk) GROUP BY id_zk,data_zk,([nazv_np]&", "&[nazv_lu]&", "&[nazv_pod]),nazv_pod,tel_pod ';
dm.zk.Active:=true;
fzakaz.Caption:=n15.Caption;
fzakaz.ShowModal;
end;
procedure TFmain.N17Click(Sender: TObject); begin
fot.Caption:=n17.Caption;
fot.ShowModal;
end;
end.
function Delete(rs,tab,temp:string):boolean; begin
dm.temp.Active:=false;
dm.temp.CommandText:='Select log_'+rs+' from '+tab+' where (id_'+rs+'='+temp+')';
dm.temp.Active:=true;
if dm.temp.Fields[0].AsBoolean=true then begin
result:=false; end
else if application.MessageBox(‘Вы хотите удалить запись
?','Удаление',mb_yesno+mb_iconquestion)=idyes then begin
dm.com.CommandText:='Delete * from '+tab+' where (id_'+rs+'='+temp+')';
dm.com.Execute;
result:=true;
showmessage('Удаление прошло успешно'); end;
end;
Procedure Zan(rs,tab,temp:string;tm:integer); begin
if tm=1 then begin
dm.com.CommandText:='Update '+tab+' set log_'+rs+'=FALSE WHERE (id_'+rs+'='+temp+')';
dm.com.Execute;
end;
end;
Procedure jurnal(mesto,deis:string); begin
{mesto:=stringreplace(mesto,'"','+',[rfReplaceAll, rfIgnoreCase]); dm.com.CommandText:='Insert into jurnal (id_us_j,data_j,time_j,mesto_j,deis_j) values ('+id_us+',date(),time(),"'+mesto+'","'+deis+'")';
dm.com.Execute; } end;
end
Листинг Б.3 – Аluch
33
unit aluchr; interface uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,accessdb; type
TFaLuchr = class(TForm) Label1: TLabel;
e1: TEdit; Button1: TButton; Button2: TButton; cb1: TComboBox; Label2: TLabel; Label3: TLabel; e2: TEdit;
Label4: TLabel; e3: TEdit; Label5: TLabel; e4: TEdit;
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure cb1KeyPress(Sender: TObject; var Key: Char); procedure cb1Change(Sender: TObject);
procedure Button2Click(Sender: TObject); procedure Button1Click(Sender: TObject);
procedure e2KeyPress(Sender: TObject; var Key: Char); procedure e3KeyPress(Sender: TObject; var Key: Char);
private
{Private declarations } public
{Public declarations } end;
var
FaLuchr: TFaLuchr; implementation
uses datm; {$R *.dfm}
procedure TFaLuchr.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin accessdb.Zan('lu','luchr',id_lu,tm); e1.Clear;e2.Clear;e3.Clear; e4.Clear; cb1.Clear;
close;
end;
procedure TFaLuchr.cb1KeyPress(Sender: TObject; var Key: Char);
begin key:=#0; end;
procedure TFaLuchr.cb1Change(Sender: TObject); begin
if cb1.Text<>'' then begin dm.temp.active:=false;
dm.temp.commandtext:='Select id_Np from nasp where (nazv_np="'+cb1.text+'")';
dm.temp.active:=true; id_np:=dm.temp.fieldbyname('id_np').AsString;
end
else id_np:=''; end;
procedure TFaLuchr.Button2Click(Sender: TObject); begin
closequery;
end;
procedure TFaLuchr.Button1Click(Sender: TObject); begin
if (e1.text='') or (e2.text='') or (e3.text='') or (cb1.Text='') OR
(e4.Text='') then showmessage('Не все поля заполнены') |
|
|||
else |
|
|
|
|
begin |
|
|
|
|
if tm=0 then |
|
|
|
|
begin |
|
|
|
|
dm.temp.Active:=false; |
|
|
|
|
dm.temp.CommandText:='Select |
id_lu from |
luchr |
where |
|
((nazv_lu="'+e1.text+'") |
and |
(id_np_lu='+id_np+')) |
OR |
(kod_lu="'+e4.Text+'")'; |
|
|
dm.temp.Active:=true; |
|
|
if |
dm.temp.RecordCount>0 |
then |
application.MessageBox('Подобная запись уже существует
',pchar(Caption),mb_ok+mb_iconwarning) |
|
|
else |
|
|
begin |
|
|
dm.com.CommandText:='INSERT |
INTO |
luchr |
(nazv_lu,fio_lu,tel_lu,id_np_lu,kod_lu) |
|
values |
("'+e1.text+'","'+e2.text+'","'+e3.text+'",'+id_np+',"'+e4.Text+'")';
dm.com.Execute; |
|
|
|
|
|
|
application.MessageBox('Добавление прошло успешно |
|
|||||
',pchar(Caption),mb_ok+mb_iconasterisk); |
|
|
|
|||
dm.lu.Requery(); |
|
|
|
|
|
|
closequery; |
|
|
|
|
|
|
end; |
|
|
|
|
|
|
end |
|
|
|
|
|
|
else |
|
|
|
|
|
|
begin |
|
|
|
|
|
|
dm.temp.Active:=false; |
|
|
|
|
|
|
dm.temp.CommandText:='Select |
id_lu |
from |
luchr |
where |
||
((nazv_lu="'+e1.text+'") |
and |
(id_np_lu='+id_np+')) |
OR |
|||
(kod_lu="'+e4.Text+'")'; |
|
|
|
|
|
|
dm.temp.Active:=true; |
|
|
|
|
|
|
if |
(dm.temp.RecordCount>0) |
|
and |
|||
(id_lu<>dm.temp.Fields[0].asstring) |
|
|
|
then |
||
application.MessageBox('Подобная запись уже существует |
||||||
',pchar(Caption),mb_ok+mb_iconwarning) |
|
|
|
|||
else |
|
|
|
|
|
|
begin |
|
|
|
|
|
|
dm.com.CommandText:='UPDATE |
luchr |
|
SET |
nazv_lu="'+e1.text+'",fio_lu="'+e2.text+'",tel_lu="'+e3.text+'",id_ np_lu="'+id_np+'",kod_lu="'+e4.Text+'" WHERE (id_lu='+id_lu+')';
dm.com.Execute; application.MessageBox('Изменение произошло успешно',pchar(Caption),mb_ok+mb_iconasterisk);
dm.lu.Requery();
closequery;
end;
end;
end;
end;
procedure TFaLuchr.e2KeyPress(Sender: TObject; var Key: Char); begin
if Key in ['0'..'9'] then key :=#0; end;
procedure TFaLuchr.e3KeyPress(Sender: TObject; var Key: Char); begin
if not (key in['0'..'9', #8]) then Key:=#0; end;
end.
Листинг Б.4 – АNasP
unit aNasP; |
TFaNasP = class(TForm) |
interface |
Label1: TLabel; |
uses |
e1: TEdit; |
Windows, Messages, SysUtils, Variants, Classes, Graphics, |
Button1: TButton; |
Controls, Forms, |
Button2: TButton; |
Dialogs, StdCtrls,accessdb; |
Label2: TLabel; |
type |
e2: TEdit; |
|
34 |
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure Button2Click(Sender: TObject); procedure Button1Click(Sender: TObject);
procedure e1KeyPress(Sender: TObject; var Key: Char); private
{Private declarations } public
{Public declarations } end;
var
FaNasP: TFaNasP; implementation uses datm;
{$R *.dfm}
procedure TFaNasP.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin accessdb.Zan('np','nasp',id_np,tm); e1.Clear; e2.Clear;
close;
end;
procedure TFaNasP.Button2Click(Sender: TObject); begin
closequery;
end;
procedure TFaNasP.Button1Click(Sender: TObject); begin
if (e1.text='') OR (e2.Text='') then showmessage('Не все поля
заполнены') |
|
|
|
|
else |
|
|
|
|
begin |
|
|
|
|
if tm=0 then |
|
|
|
|
begin |
|
|
|
|
dm.temp.Active:=false; |
|
|
|
|
dm.temp.CommandText:='Select id_np |
from |
nasp |
where |
|
(nazv_np="'+e1.text+'") OR (kod_np="'+e2.Text+'")'; |
|
|
||
dm.temp.Active:=true; |
|
|
|
|
if |
dm.temp.RecordCount>0 |
|
then |
|
application.MessageBox('Подобная |
запись |
|
уже |
|
существует',pchar(Caption),mb_ok+mb_iconwarning) |
|
|||
else |
|
|
|
|
Листинг Б.5 – Аoborud
begin
dm.com.CommandText:='INSERT INTO nasp (nazv_np,kod_np) values ("'+e1.text+'","'+e2.Text+'")';
dm.com.Execute;
application.MessageBox('Добавление прошло успешно',pchar(Caption),mb_ok+mb_iconasterisk);
dm.np.Requery();
closequery;
end; end
else begin
dm.temp.Active:=false;
dm.temp.CommandText:='Select id_np from nasp where (nazv_np="'+e1.text+'") OR (kod_np="'+e2.Text+'")';
dm.temp.Active:=true;
if (dm.temp.RecordCount>0) and (id_np<>dm.temp.Fields[0].asstring) then application.MessageBox('Подобная запись уже существует',pchar(Caption),mb_ok+mb_iconwarning)
else begin
dm.com.CommandText:='UPDATE nasp SET nazv_np="'+e1.text+'",kod_np="'+e2.Text+'" WHERE (id_np='+id_np+')';
dm.com.Execute;
application.MessageBox('Изменение прошло успешно',pchar(Caption),mb_ok+mb_iconasterisk);
dm.np.Requery();
closequery;
end;
end;
end;
end;
procedure TFaNasP.e1KeyPress(Sender: TObject; var Key: Char); begin
if Key in ['0'..'9'] then key :=#0;
end;
end.
unit aoborud; |
public |
|
|
|
interface |
{ Public declarations } |
|
|
|
uses |
end; |
|
|
|
Windows, Messages, SysUtils, Variants, Classes, Graphics, |
var |
|
|
|
Controls, Forms, |
Faoborud: TFaoborud; |
|
|
|
Dialogs, ComCtrls, StdCtrls,accessdb,dateutils; |
implementation |
|
|
|
type |
uses datm; |
|
|
|
TFaoborud = class(TForm) |
{$R *.dfm} |
|
|
|
Label1: TLabel; |
procedure TFaoborud.Button1Click(Sender: TObject); |
|
||
Label2: TLabel; |
begin |
|
|
|
Label3: TLabel; |
if (e1.text='') or (e2.text='') or (e3.text='') or (cb1.Text='') OR |
|||
Label4: TLabel; |
(e4.Text='') then showmessage('Не все поля заполнены') |
|||
e1: TEdit; |
else |
|
|
|
Button1: TButton; |
begin |
|
|
|
Button2: TButton; |
try |
|
|
|
cb1: TComboBox; |
if strtofloat(e3.Text)<1 then |
|
|
|
e2: TEdit; |
begin |
|
|
|
e3: TEdit; |
showmessage('Оборудование не может стоить дешевле 1 |
|||
Label5: TLabel; |
р.'); |
|
|
|
Label6: TLabel; |
exit; |
|
|
|
dtp1: TDateTimePicker; |
end; |
|
|
|
dtp2: TDateTimePicker; |
except |
|
|
|
Label7: TLabel; |
showmessage('Ошибка |
при |
вводе |
стоимости |
e4: TEdit; |
оборудования'); |
|
|
|
procedure Button1Click(Sender: TObject); |
exit; |
|
|
|
procedure FormCloseQuery(Sender: TObject; var CanClose: |
end; |
|
|
|
Boolean); |
if (dtp1.Date>incday(date,1)) OR (dtp2.Date>incday(date,1)) OR |
|||
procedure Button2Click(Sender: TObject); |
(dtp1.Date>dtp2.Date) then |
|
|
|
private |
begin |
|
|
|
{ Private declarations } |
showmessage('Ошибка при вводе дат'); |
|
|
35
exit; |
|
|
end. |
end; |
|
|
|
if tm=0 then |
|
|
|
begin |
|
|
|
dm.temp.Active:=false; |
|
|
|
dm.temp.CommandText:='Select id_ob |
from oborud |
where |
|
(nazv_ob="'+e1.text+'") and (zn_ob="'+e2.text+'")'; |
|
||
dm.temp.Active:=true; |
|
|
|
if |
dm.temp.RecordCount>0 |
then |
|
application.MessageBox('Подобная |
запись |
уже |
|
существует',pchar(Caption),mb_ok+mb_iconwarning) |
|
||
else |
|
|
|
begin |
|
|
|
dm.temp.Active:=false; |
|
|
|
dm.temp.CommandText:='Select id_zk from zakaz WHERE |
|||
(id_pod_zk='+id_pod+') and (data_zk=date())'; |
|
||
dm.temp.Active:=true; |
|
|
|
if |
dm.temp.RecordCount=1 |
then |
|
id_zk:=dm.temp.Fields[0].AsString |
|
|
|
else |
|
|
|
begin |
|
|
|
dm.com.CommandText:='Insert |
into |
zakaz |
|
(id_pod_zk,data_zk) values ('+id_pod+',date())'; |
|
||
dm.com.Execute; |
|
|
|
dm.temp.Active:=false; |
|
|
|
dm.temp.CommandText:='select max(id_zk) from zakaz'; |
|||
dm.temp.Active:=true; |
|
|
|
id_zk:=dm.temp.Fields[0].AsString; |
|
|
|
end; |
|
|
|
dm.com.CommandText:='INSERT |
INTO |
oborud |
|
(nazv_ob,zn_ob,st_ob,datav_ob,datap_ob,id_pod_ob,rabota_ob,id_ |
|||
zk_ob) |
|
|
values |
("'+e1.text+'","'+e2.text+'","'+e3.text+'","'+datetostr(dtp1.Date)+'", "'+datetostr(dtp2.Date)+'",'+id_pod+',"'+e4.Text+'",'+id_zk+')';
dm.com.Execute;
application.MessageBox('Добавление прошло успешно',pchar(Caption),mb_ok+mb_iconasterisk);
//dm.pod.Requery();
closequery;
end; end
else begin
dm.temp.Active:=false;
dm.temp.CommandText:='Select id_ob from oborud where (nazv_ob="'+e1.text+'") and (zn_ob="'+e2.text+'")';
dm.temp.Active:=true;
if (dm.temp.RecordCount>0) and (id_ob<>dm.temp.Fields[0].asstring) then application.MessageBox('Подобная запись уже существует',pchar(Caption),mb_ok+mb_iconwarning)
else begin
dm.com.CommandText:='UPDATE oborud SET nazv_ob="'+e1.text+'",zn_ob="'+e2.text+'",st_ob="'+e3.text+'",dat av_ob="'+datetostr(dtp1.Date)+'",datap_ob="'+datetostr(dtp2.Date) +'",rabota_ob="'+e4.Text+'" WHERE (id_ob='+id_ob+')';
dm.com.Execute;
application.MessageBox('Изменение прошло успешно',pchar(Caption),mb_ok+mb_iconasterisk);
dm.ob.Requery();
closequery;
end;
end;
end;
end;
procedure TFaoborud.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin accessdb.Zan('ob','oborud',id_ob,tm); e1.Clear;e2.Clear;e3.Clear; e4.Clear; cb1.Clear;
close;
end;
procedure TFaoborud.Button2Click(Sender: TObject); begin
closequery;
end;
36
Листинг Б.6 – aPodrazd
unit aPodrazd; interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,accessdb; type
TFaPodrazd = class(TForm) Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel; e1: TEdit; Button1: TButton; Button2: TButton; cb1: TComboBox; e2: TEdit;
e3: TEdit; Label5: TLabel; e4: TEdit;
procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure e2KeyPress(Sender: TObject; var Key: Char); procedure e3KeyPress(Sender: TObject; var Key: Char);
private
{Private declarations } public
{Public declarations } end;
var
FaPodrazd: TFaPodrazd; implementation
uses datm; {$R *.dfm}
procedure TFaPodrazd.Button1Click(Sender: TObject); begin
if (e1.text='') or (e2.text='') or (e3.text='') or (cb1.Text='') then showmessage('Не все поля заполнены')
else begin
if tm=0 then begin
dm.temp.Active:=false;
dm.temp.CommandText:='Select id_pod from podrazd where ((nazv_pod="'+e1.text+'") and (id_lu_pod='+id_lu+')) OR (kod_pod="'+e4.Text+'")';
dm.temp.Active:=true;
if dm.temp.RecordCount>0 then application.MessageBox('Подобная запись уже существует',pchar(Caption),mb_ok+mb_iconwarning)
else begin
dm.com.CommandText:='INSERT INTO podrazd (nazv_pod,fio_pod,tel_pod,id_lu_pod,kod_pod) values ("'+e1.text+'","'+e2.text+'","'+e3.text+'",'+id_lu+',"'+e4.Text+'")';
dm.com.Execute;
application.MessageBox('Добавление прошло успешно',pchar(Caption),mb_ok+mb_iconasterisk);
//dm.pod.Requery();
closequery;
end; end
else begin
dm.temp.Active:=false;
dm.temp.CommandText:='Select id_pod from podrazd where ((nazv_pod="'+e1.text+'") and (id_lu_pod='+id_lu+')) OR (kod_pod="'+e4.Text+'")';
dm.temp.Active:=true;
if (dm.temp.RecordCount>0) and (id_pod<>dm.temp.Fields[0].asstring) then application.MessageBox('Подобная запись уже существует',pchar(Caption),mb_ok+mb_iconwarning)
37
else begin
dm.com.CommandText:='UPDATE podrazd SET nazv_pod="'+e1.text+'",fio_pod="'+e2.text+'",tel_pod="'+e3.text+' ",id_lu_pod="'+id_lu+'",kod_pod="'+e4.Text+'" WHERE (id_pod='+id_pod+')';
dm.com.Execute;
application.MessageBox('Изменение прошло успешно',pchar(Caption),mb_ok+mb_iconasterisk);
dm.pod.Requery();
closequery;
end;
end;
end;
end;
procedure TFaPodrazd.Button2Click(Sender: TObject); begin
closequery;
end;
procedure TFaPodrazd.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin accessdb.Zan('pod','podrazd',id_pod,tm); e1.Clear;e2.Clear;e3.Clear; e4.Text:=''; cb1.Clear;
close;
end;
procedure TFaPodrazd.e2KeyPress(Sender: TObject; var Key: Char);
begin
if Key in ['0'..'9'] then key :=#0; end;
procedure TFaPodrazd.e3KeyPress(Sender: TObject; var Key: Char);
begin
if not (key in['0'..'9', #8]) then Key:=#0; end;
end.
Листинг Б.7 – chPass
unit chPass; interface uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls; type
TFchPass = class(TForm) Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel;
e1: TEdit; e2: TEdit; e3: TEdit;
Button1: TButton;
Button2: TButton; cb1: TComboBox;
procedure cb1KeyPress(Sender: TObject; var Key: Char); procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure FormShow(Sender: TObject); private
{Private declarations } public
{Public declarations } end;
var
FchPass: TFchPass; implementation
uses datm; {$R *.dfm}
procedure TFchPass.cb1KeyPress(Sender: TObject; var Key: Char);
begin key:=#0; end;
procedure TFchPass.Button2Click(Sender: TObject); begin
closequery;
end;
procedure TFchPass.Button1Click(Sender: TObject); begin
if (e1.Text='') OR (e2.text='') OR (e3.Text='') OR (cb1.text='') then showmessage('Одно из полей не заполнено')
else begin
dm.temp.Active:=false;
dm.temp.CommandText:='Select * from pass where (pass="'+e1.Text+'") and (login="'+cb1.text+'")';
dm.temp.Active:=true;
if dm.temp.RecordCount=0 then showmessage('Ошибка в текущем пароле')
else begin
if e2.Text=e1.Text then showmessage('Пароли не должны совпадать')
else if e2.Text<>e3.Text then showmessage('Новый пароль и подтверждение должны совпадать')
else begin
dm.com.CommandText:='Update pass SET pass="'+e2.Text+'" where (login="'+cb1.text+'")';
dm.com.Execute; showmessage('Пароль изменен'); closequery;
end;
end;
end;
end;
procedure TFchPass.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
38
e1.Clear;e2.Clear; e3.Clear; close;
end;
procedure TFchPass.FormShow(Sender: TObject); begin
cb1.Clear;
dm.temp.Active:=false;
dm.temp.CommandText:='Select login from pass order by login'; dm.temp.Active:=true;
while not dm.temp.Eof do begin
cb1.Items.Add(dm.temp.Fields[0].AsString);
dm.temp.Next;
end;
end;
end.
Листинг Б.8 – datm
unit datm; interface uses
SysUtils, Classes, DB, ADODB, Dialogs, ExtCtrls; type
Tdm = class(TDataModule) ado: TADOConnection; com: TADOCommand; temp: TADODataSet;
od: TOpenDialog; np: TADODataSet; nps: TDataSource; Timer1: TTimer; lu: TADODataSet; lus: TDataSource; pod: TADODataSet; pods: TDataSource; ob: TADODataSet; obs: TDataSource; zk: TADODataSet; zks: TDataSource;
procedure Timer1Timer(Sender: TObject); private
{Private declarations } public
{Public declarations } end;
var
dm: Tdm; avtor,gruppa:string; tm:integer; tmp:string;
id_np,id_lu,id_pod,id_ob,id_zk:string; implementation
{$R *.dfm}
procedure Tdm.Timer1Timer(Sender: TObject); var rn:integer;
begin try
if dm.np.Active=true then begin
rn:=np.RecNo;
np.Requery();
np.recno:=rn;
end;
if dm.lu.Active=true then begin
rn:=lu.RecNo;
lu.Requery();
lu.recno:=rn;
end;
if dm.pod.Active=true then begin
rn:=pod.RecNo;
pod.Requery();
pod.recno:=rn;
end;
if dm.ob.Active=true then begin
rn:=ob.RecNo;
ob.Requery();
ob.recno:=rn;
end;
if dm.zk.Active=true then begin
rn:=zk.RecNo;
zk.Requery();
zk.recno:=rn;
end;
except;
end;
end;
end.
39
Листинг Б.9 – luchr
unit luchr; interface uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ExtCtrls, Grids, DBGrids,accessdb; type
TFluchr = class(TForm) DBGrid1: TDBGrid; Panel1: TPanel; BitBtn1: TBitBtn; BitBtn2: TBitBtn; BitBtn3: TBitBtn; Panel2: TPanel;
e: TEdit; BitBtn4: TBitBtn; BitBtn5: TBitBtn; BitBtn6: TBitBtn;
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure BitBtn3Click(Sender: TObject); procedure BitBtn2Click(Sender: TObject); procedure BitBtn1Click(Sender: TObject); procedure eChange(Sender: TObject); procedure BitBtn4Click(Sender: TObject); procedure BitBtn5Click(Sender: TObject); procedure BitBtn6Click(Sender: TObject);
private
{Private declarations } public
{Public declarations } end;
var
Fluchr: TFluchr; implementation
uses datm, aluchr, aPodrazd; {$R *.dfm}
procedure TFluchr.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin e.Clear; end;
procedure TFluchr.BitBtn3Click(Sender: TObject); begin
if dm.lu.RecordCount=0 then showmessage('Записи отсутствуют')
else begin tm:=1;
id_lu:=dm.lu.Fields[0].AsString;
if accessdb.Delete('lu','luchr',id_lu)=false then showmessage('Запись используется другим пользователем')
else dm.lu.Requery(); end;
end;
procedure TFluchr.BitBtn2Click(Sender: TObject); begin
if dm.lu.RecordCount=0 then showmessage('Записи отсутствуют')
else begin tm:=1;
id_lu:=dm.lu.Fields[0].AsString;
if accessdb.Update('lu','luchr',id_lu)=false then showmessage('Запись используется другим пользователем')
else begin
dm.temp.active:=false; dm.temp.CommandText:='select nazv_np from nasp'; dm.temp.active:=true;
While not dm.temp.Eof do begin
faluchr.cb1.items.add(dm.temp.fieldbyname('nazv_np').AsString); dm.temp.next;
end; faluchr.cb1.Text:=dm.lu.fieldbyname('nazv_np').AsString;
40
faluchr.e1.Text:=dm.lu.fieldbyname('nazv_lu').AsString; faluchr.e2.Text:=dm.lu.fieldbyname('fio_lu').AsString; faluchr.e3.Text:=dm.lu.fieldbyname('tel_lu').AsString; faluchr.e4.Text:=dm.lu.fieldbyname('kod_lu').AsString; FaLuchr.cb1Change(Sender); faluchr.Caption:=caption+' :: '+bitbtn2.caption; faluchr.ShowModal;
end;
end;
end;
procedure TFluchr.BitBtn1Click(Sender: TObject); begin
faluchr.Caption:=caption+' :: '+bitbtn1.caption; tm:=0;
dm.temp.active:=false; dm.temp.CommandText:='select nazv_np from nasp'; dm.temp.active:=true;
While not dm.temp.Eof do begin
faluchr.cb1.items.add(dm.temp.fieldbyname('nazv_np').AsString); dm.temp.next;
end;
faluchr.ShowModal;
end;
procedure TFluchr.eChange(Sender: TObject); begin
if e.Text='' then begin dm.lu.Active:=false;
dm.lu.CommandText:='Select id_lu,nazv_lu,nazv_np,fio_lu,tel_lu,log_lu from nasp,luchr where (id_np=id_np_lu)';
dm.lu.Active:=true;
end;
end;
procedure TFluchr.BitBtn4Click(Sender: TObject); begin
dm.lu.Active:=false;
dm.lu.CommandText:='Select id_lu,nazv_lu,nazv_np,fio_lu,tel_lu,log_lu,kod_np,kod_lu from nasp,luchr where (id_np=id_np_lu) and (nazv_lu like "%'+e.Text+'%")';
dm.lu.Active:=true;
end;
procedure TFluchr.BitBtn5Click(Sender: TObject); begin
dm.lu.Active:=false;
dm.lu.CommandText:='Select id_lu,nazv_lu,nazv_np,fio_lu,tel_lu,log_lu,kod_np,kod_lu from nasp,luchr where (id_np=id_np_lu) and (nazv_lu like "%'+e.Text+'%") ORDER BY nazv_np' ;
dm.lu.Active:=true;
end;
procedure TFluchr.BitBtn6Click(Sender: TObject); begin
if dm.lu.RecordCount=0 then showmessage('Записи отсутствуют')
else begin tm:=0;
id_lu:=dm.lu.Fields[0].AsString; fapodrazd.Caption:=caption+' :: '+BitBtn6.Caption; fapodrazd.cb1.text:=dm.lu.fieldbyname('nazv_lu').AsString+'
('+dm.lu.fieldbyname('nazv_np').AsString+')'; fapodrazd.ShowModal;
end;
end;
end.
Листинг Б.10 – NasP
unit NasP; interface uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ExtCtrls, Grids, DBGrids,accessdb; type
TFNasP = class(TForm) DBGrid1: TDBGrid; Panel1: TPanel; BitBtn1: TBitBtn; BitBtn2: TBitBtn; BitBtn3: TBitBtn; Panel2: TPanel;
e: TEdit; BitBtn4: TBitBtn; BitBtn5: TBitBtn;
procedure eChange(Sender: TObject); procedure BitBtn4Click(Sender: TObject); procedure BitBtn2Click(Sender: TObject); procedure BitBtn1Click(Sender: TObject); procedure BitBtn3Click(Sender: TObject); procedure BitBtn5Click(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
private
{Private declarations } public
{Public declarations } end;
var
FNasP: TFNasP; implementation uses datm, aNasP; {$R *.dfm}
procedure TFNasP.eChange(Sender: TObject); begin
if e.Text='' then begin
dm.np.Active:=false; dm.np.CommandText:='Select * from nasp'; dm.np.Active:=true;
end;
end;
procedure TFNasP.BitBtn4Click(Sender: TObject); begin
dm.np.Active:=false;
dm.np.CommandText:='Select * from nasp WHERE (nazv_np like "%'+e.text+'%")';
dm.np.Active:=true;
end;
procedure TFNasP.BitBtn2Click(Sender: TObject); begin
if dm.np.RecordCount=0 then showmessage('Записи отсутствуют')
else begin tm:=1;
id_np:=dm.np.Fields[0].AsString;
if accessdb.Update('np','nasp',id_np)=false then showmessage('Запись используется другим пользователем')
else begin
fanasp.e1.Text:=dm.np.fieldbyname('nazv_np').AsString; fanasp.e2.Text:=dm.np.fieldbyname('kod_np').AsString; fanasp.Caption:=caption+' :: '+bitbtn2.caption; fanasp.ShowModal;
end;
end;
end;
procedure TFNasP.BitBtn1Click(Sender: TObject); begin
fanasp.Caption:=caption+' :: '+bitbtn1.caption; tm:=0;
fanasp.ShowModal;
end;
41
procedure TFNasP.BitBtn3Click(Sender: TObject); begin
if dm.np.RecordCount=0 then showmessage('Записи отсутствуют')
else begin tm:=1;
id_np:=dm.np.Fields[0].AsString;
if accessdb.Delete('np','nasp',id_np)=false then showmessage('Запись используется другим пользователем')
else dm.np.Requery(); end;
end;
procedure TFNasP.BitBtn5Click(Sender: TObject); begin
dm.np.Active:=false;
dm.np.CommandText:='Select * from nasp WHERE (nazv_np like "%'+e.text+'%") ORDER BY nazv_np';
dm.np.Active:=true;
end;
procedure TFNasP.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin e.Clear; end; end.