Курсовые работы / ПРИС П _32
.pdfe2.Text:='';
e3.Text:='';
e4.Text:='';
dtp2.Date:=now;
close;
end;
procedure Tedkl.BitBtn1Click(Sender: TObject); begin
if (e1.Text='') OR (e2.Text='') OR (length(e3.Text)<4) OR
(length(e4.Text)<6) then showmessage('Введены не все данные') else
begin
if ind=0 then begin
dm.temp.Active:=false; dm.temp.CommandText:='SELECT * FROM klient
WHERE (sp_kl = '+e3.Text+') AND (np_kl = '+e4.Text+')'; dm.temp.Active:=true;
if dm.temp.RecordCount>0 then begin
showmessage('Введена некорректная информация'); exit;
end;
dm.COM.CommandText:='INSERT INTO KLIENT (fio_kl,adr_kl,dataR_kl,dataT_kl,sp_kl,np_kl) values ("'+e1.Text+'","'+e2.Text+'","'+datetostr(dtp1.Date)+'","'+datetostr(dtp2.
Date)+'",'+e3.Text+','+e4.Text+')';
dm.COM.Execute; end
else begin
dm.temp.Active:=false; dm.temp.CommandText:='SELECT * FROM klient
WHERE (sp_kl = '+e3.Text+') AND (np_kl = '+e4.Text+')'; dm.temp.Active:=true;
if dm.temp.RecordCount>0 then begin
if dm.temp.Fields[0].AsString<>dm.Kl.Fields[0].AsString
then
begin
showmessage('Введена некорректная информация'); exit;
end;
end;
dm.COM.CommandText:='UPDATE KLIENT SET fio_kl = "'+e1.Text+'",adr_kl = "'+e2.Text+'",dataR_kl = "'+datetostr(dtp1.Date)+'",dataT_kl = "'+datetostr(dtp2.Date)+'",sp_kl = "'+e3.Text+'",np_kl = "'+e4.Text+'" WHERE id_kl = '+dm.Kl.Fields[0].AsString+'';
dm.COM.Execute;
end;
dm.Kl.Requery();
closequery;
end;
end;
procedure Tedkl.BitBtn2Click(Sender: TObject); begin
closequery;
end;
end.
unit datm;
interface
uses
SysUtils, Classes, DB, ADODB, Menus, ImgList, Controls, Windows, Messages, Variants, Graphics, Forms,
Dialogs, ExtCtrls,comObj,inifiles,shellapi;
type
TDM = class(TDataModule) AC: TADOConnection; COM: TADOCommand; temp: TADODataSet;
Kl: TADODataSet;
KLs: TDataSource;
MM: TMainMenu; N1: TMenuItem; N2: TMenuItem; N3: TMenuItem; N4: TMenuItem; N5: TMenuItem; N6: TMenuItem; N7: TMenuItem; N8: TMenuItem; N9: TMenuItem; N10: TMenuItem; N11: TMenuItem; IL: TImageList; N12: TMenuItem; N13: TMenuItem; vop: TADODataSet; PR: TADODataSet; PRs: TDataSource; Timer1: TTimer;
procedure N2Click(Sender: TObject); procedure N13Click(Sender: TObject); procedure N5Click(Sender: TObject); procedure N3Click(Sender: TObject); procedure N10Click(Sender: TObject); procedure Timer1Timer(Sender: TObject); procedure N11Click(Sender: TObject); procedure N8Click(Sender: TObject); procedure N9Click(Sender: TObject);
private
{Private declarations } public
{Public declarations } end;
var
DM: TDM; ind:integer; id_us:string; id_kl:string; tmp:string; kolO:integer; implementation
uses fklient, fvopr, Fsprav, fchpass;
{$R *.dfm}
procedure TDM.N2Click(Sender: TObject); begin
dm.Kl.Active:=false;
dm.Kl.CommandText:='SELECT * FROM KLIENT WHERE id_kl not in (select id_kl_pr FROM prava)';
dm.Kl.Active:=true; klient.Caption:='Экзаменующиеся'; klient.ToolBar1.Visible:=true; klient.ShowModal;
end;
procedure TDM.N13Click(Sender: TObject); begin
vopr.ToolButton8.Visible:=true;
dm.vop.Active:=false;
dm.vop.CommandText:='SELECT id_vp,nazv_vp,po_vp FROM vopr ORDER BY id_vp';
dm.vop.Active:=true;
vopr.m.Lines.Add(dm.vop.Fields[1].AsString);
tmp:=vop.Fields[2].AsString;
dm.temp.Active:=false;
dm.temp.CommandText:='SELECT * FROM otvet WHERE id_vp_o = '+dm.vop.Fields[0].AsString+' ORDER BY id_o';
dm.temp.Active:=true;
vopr.e1.text:=dm.temp.Fields[1].AsString; if tmp=dm.temp.Fields[0].AsString then
begin
32
vopr.rb1.Checked:=true;
end;
dm.temp.Next;
vopr.e2.Text:=dm.temp.Fields[1].AsString; if tmp=dm.temp.Fields[0].AsString then
begin vopr.rb2.Checked:=true; end;
dm.temp.Next;
vopr.e3.Text:=dm.temp.Fields[1].AsString; if tmp=dm.temp.Fields[0].AsString then
begin vopr.rb3.Checked:=true; end;
dm.temp.Next;
vopr.e4.Text:=dm.temp.Fields[1].AsString; if tmp=dm.temp.Fields[0].AsString then
begin vopr.rb4.Checked:=true; end;
vopr.ShowModal
end;
procedure TDM.N5Click(Sender: TObject); begin
{---------!!!-----------} dm.temp.Active:=false;
dm.temp.CommandText:='SELECT * FROM klient WHERE (id_kl = '+id_kl+') AND (log_kl = TRUE)';
dm.temp.Active:=true;
if dm.temp.RecordCount>0 then begin
showmessage('Информация о Вас в данный момент редактируется');
exit; end
else begin
dm.COM.CommandText:='UPDATE KLIENT SET log_kl =TRUE WHERE id_kl = '+id_kl+'';
{dm.COM.CommandText:='Insert into temp (kl) values ('+id_kl+')';}
dm.COM.Execute;
tmp:=dm.temp.Fields[0].AsString;
end; {---------!!!-----------}
vopr.ToolButton8.Visible:=false;
dm.vop.Active:=false;
dm.vop.CommandText:='SELECT id_vp,nazv_vp,po_vp FROM vopr ORDER BY id_vp';
dm.vop.Active:=true;
kolO:=dm.vop.RecordCount;
vopr.m.Lines.Add(dm.vop.Fields[1].AsString);
tmp:=vop.Fields[2].AsString;
dm.temp.Active:=false;
dm.temp.CommandText:='SELECT * FROM otvet WHERE id_vp_o = '+dm.vop.Fields[0].AsString+' ORDER BY id_o';
dm.temp.Active:=true;
vopr.e1.text:=dm.temp.Fields[1].AsString;
dm.temp.Next;
vopr.e2.Text:=dm.temp.Fields[1].AsString;
dm.temp.Next;
vopr.e3.Text:=dm.temp.Fields[1].AsString;
dm.temp.Next;
vopr.e4.Text:=dm.temp.Fields[1].AsString;
vopr.ShowModal;
end;
procedure TDM.N3Click(Sender: TObject); begin
if dm.PR.Active=false then dm.PR.Active:=true; sprav.ShowModal;
end;
procedure TDM.N10Click(Sender: TObject); begin
klient.ToolBar1.Visible:=false;
dm.Kl.Active:=false;
dm.Kl.CommandText:='SELECT * FROM KLIENT WHERE (test_k = true) AND (id_kl not in (select id_kl_pr FROM prava))';
dm.Kl.Active:=true; klient.Caption:='Сдали, но не получили'; klient.ShowModal;
end;
procedure TDM.Timer1Timer(Sender: TObject); var ind:integer;
begin
if dm.Kl.Active=true then begin ind:=dm.kl.RecNo; dm.Kl.Requery(); dm.Kl.RecNo:=ind; end;
if dm.Pr.Active=true then begin ind:=dm.Pr.RecNo; dm.Pr.Requery(); dm.Pr.RecNo:=ind; end;
end;
procedure TDM.N11Click(Sender: TObject); var
XL: variant; // Переменная в которой создаётся обьект
EXCEL
i,n,j:integer; begin
dm.temp.Active:=false;
dm.temp.CommandText:='select fio_kl, adr_kl, dataR_kl, dataO_pr, k_pr from prava,klient WHERE (id_kl = id_kl_pr) AND ((dataO_pr-date())<365)';
dm.temp.Active:=true;
// Обьект EXCEL
XL := CreateOleObject('Excel.Application');
//Чтоб не задавал вопрос о сохранении документа
XL.DisplayAlerts := false;
//новый документ
XL.WorkBooks.Add;
//Делаем его видимым
XL.Visible := true;
//Когда прога уже оттестирована лучше это делать в
конце, быстрей работает,
//а пока нет лучше в начале
//Левое и правое поля отступа для печати
XL.WorkBooks[1].WorkSheets[1].PageSetup.LeftMargin :=
30;
XL.WorkBooks[1].WorkSheets[1].PageSetup.RightMargin
:= 10;
//Даём название страничке
XL.WorkBooks[1].WorkSheets[1].Name := 'Истекает срок';
//Строка появляется на каждом листе при печати
XL.WorkBooks[1].WorkSheets[1].PageSetup.PrintTitleRows
:= '$3:$3';
XL.WorkBooks[1].WorkSheets[1].PageSetup.PrintTitleColumns :=
'$A:$A';
// Таким способом можно задавать ширину колонки
XL.WorkBooks[1].WorkSheets[1].Columns[1].ColumnWidth := 40;
XL.WorkBooks[1].WorkSheets[1].Columns[2].ColumnWidth := 40;
XL.WorkBooks[1].WorkSheets[1].Columns[3].ColumnWidth := 15;
XL.WorkBooks[1].WorkSheets[1].Columns[4].ColumnWidth := 19;
XL.WorkBooks[1].WorkSheets[1].Columns[5].ColumnWidth := 10;
33
// Шрифт жирный |
|
|
|
|
|
|
XL.WorkBooks[1].WorkSheets[1].Rows[1].Font.Bold |
:= |
XL.WorkBooks[1].WorkSheets[1].Range['A3:C'+inttostr(3+dm.temp.Re |
||||
True; |
|
cordCount)+''].Borders.LineStyle := 1; |
|
|
||
XL.WorkBooks[1].WorkSheets[1].Rows[1].Font.Color |
:= |
|
|
|
|
|
clBlack; |
|
XL.WorkBooks[1].WorkSheets[1].Range['A3:C'+inttostr(3+dm.temp.Re |
||||
XL.WorkBooks[1].WorkSheets[1].Rows[1].Font.Size := 16; |
cordCount)+''].Borders.Weight := 2; |
|
|
|||
XL.WorkBooks[1].WorkSheets[1].Rows[1].Font.Name |
:= |
|
|
|
|
|
'Times New Roman'; |
|
XL.WorkBooks[1].WorkSheets[1].Range['A3:C'+inttostr(3+dm.temp.Re |
||||
|
|
cordCount)+''].Borders.ColorIndex := 1; |
|
|
||
// Выравнивам по центру по вертикали |
|
|
|
|
|
|
XL.WorkBooks[1].WorkSheets[1].Rows[1].VerticalAlignment := 2; |
|
XL.WorkBooks[1].WorkSheets[1].Range['A3:D'+inttostr(3+dm.temp.Re |
||||
// Выравнивам по центру по горизонтали |
|
cordCount)+''].Borders.LineStyle := 1; |
|
|
||
XL.WorkBooks[1].WorkSheets[1].Rows[1].HorizontalAlignment := 3; |
|
XL.WorkBooks[1].WorkSheets[1].Range['A3:D'+inttostr(3+dm.temp.Re |
||||
// Обьединяем ячейки |
|
cordCount)+''].Borders.Weight := 2; |
|
|
||
XL.WorkBooks[1].WorkSheets[1].Range['A1:E1'].Merge; |
|
|
|
|
|
|
XL.WorkBooks[1].WorkSheets[1].Cells[1, 1] := 'Истекает |
XL.WorkBooks[1].WorkSheets[1].Range['A3:D'+inttostr(3+dm.temp.Re |
|||||
срок'; |
|
cordCount)+''].Borders.ColorIndex := 1; |
|
|
||
// Выравнивам по центру по вертикали |
|
|
|
|
|
|
XL.WorkBooks[1].WorkSheets[1].Rows[3].VerticalAlignment := 2; |
|
XL.WorkBooks[1].WorkSheets[1].Range['A3:E'+inttostr(3+dm.temp.Rec |
||||
// Выравнивам по центру по горизонтали |
|
ordCount)+''].Borders.LineStyle := 1; |
|
|
||
XL.WorkBooks[1].WorkSheets[1].Rows[3].HorizontalAlignment := 3; |
|
XL.WorkBooks[1].WorkSheets[1].Range['A3:E'+inttostr(3+dm.temp.Rec |
||||
// Выравнивам по левому краю |
|
ordCount)+''].Borders.Weight := 2; |
|
|
||
XL.WorkBooks[1].WorkSheets[1].Cells[3, |
|
|
|
|
|
|
2].HorizontalAlignment := 2; |
|
XL.WorkBooks[1].WorkSheets[1].Range['A3:E'+inttostr(3+dm.temp.Rec |
||||
XL.WorkBooks[1].WorkSheets[1].Cells[3, |
|
ordCount)+''].Borders.ColorIndex := 1; |
|
|
||
3].HorizontalAlignment := 2; |
|
|
|
|
|
|
// Выравнивам по правому краю |
|
j:=4; |
|
|
|
|
XL.WorkBooks[1].WorkSheets[1].Cells[3, |
|
|
|
|
|
|
4].HorizontalAlignment := 4; |
|
while not dm.temp.Eof do |
|
|
||
XL.WorkBooks[1].WorkSheets[1].Rows[3].Font.Color |
:= |
begin |
|
|
|
|
clBlack; |
|
XL.WorkBooks[1].WorkSheets[1].Cells[j, |
1] |
:= |
||
XL.WorkBooks[1].WorkSheets[1].Rows[3].Font.Name |
:= |
dm.temp.Fields[0].AsString; |
|
|
|
|
'Times New Roman'; |
|
XL.WorkBooks[1].WorkSheets[1].Cells[j, |
2] |
:= |
||
XL.WorkBooks[1].WorkSheets[1].Rows[3].Font.Size := 12; |
dm.temp.Fields[1].AsString; |
|
|
|
|
|
XL.WorkBooks[1].WorkSheets[1].Rows[3].Font.Bold |
:= |
XL.WorkBooks[1].WorkSheets[1].Cells[j, |
3] |
:= |
||
True; |
|
dm.temp.Fields[2].AsString; |
|
|
|
|
XL.WorkBooks[1].WorkSheets[1].Cells[3, 1] := 'ФИО'; |
|
XL.WorkBooks[1].WorkSheets[1].Cells[j, |
4] |
:= |
||
XL.WorkBooks[1].WorkSheets[1].Cells[3, 2] := 'Адрес'; |
|
dm.temp.Fields[3].AsString; |
|
|
|
|
XL.WorkBooks[1].WorkSheets[1].Cells[3, 3] := 'Д.Р.'; |
|
XL.WorkBooks[1].WorkSheets[1].Cells[j, |
5] |
:= |
||
XL.WorkBooks[1].WorkSheets[1].Cells[3, 4] := 'Дата |
dm.temp.Fields[4].AsString; |
|
|
|
|
|
пересдачи'; |
|
dm.temp.Next; j:=j+1; |
|
|
||
XL.WorkBooks[1].WorkSheets[1].Cells[3, 5] := 'Категория'; |
end; |
|
|
|
|
|
//showmessage(IntToStr(fmain.Q_temp.RecordCount)); |
|
end; |
|
|
|
|
|
|
procedure TDM.N8Click(Sender: TObject); |
|
|
||
XL.WorkBooks[1].WorkSheets[1].Range['A3:E3'].Borders.LineStyle |
:= |
begin |
|
|
|
|
1; |
|
chpass.ShowModal; |
|
|
|
|
|
|
end; |
|
|
|
|
XL.WorkBooks[1].WorkSheets[1].Range['A3:E3'].Borders.Weight := 2; |
|
|
|
|
|
|
|
|
function WindowsCopyFile(FromFile, ToDir : string) : |
||||
XL.WorkBooks[1].WorkSheets[1].Range['A3:E3'].Borders.ColorIndex := |
boolean; |
|
|
|
|
|
1; |
|
var |
|
|
|
|
|
|
F: TShFileOpStruct; |
|
|
|
|
|
|
begin |
|
|
|
|
XL.WorkBooks[1].WorkSheets[1].Range['A3:B'+inttostr(3+dm.temp.Re |
F.Wnd := 0; |
|
|
|
|
|
cordCount)+''].Borders.LineStyle := 1; |
|
F.wFunc := FO_COPY; |
|
|
||
|
|
FromFile:=FromFile+#0; |
|
|
||
XL.WorkBooks[1].WorkSheets[1].Range['A3:B'+inttostr(3+dm.temp.Re |
F.pFrom:=pchar(FromFile); |
|
|
|||
cordCount)+''].Borders.Weight := 2; |
|
ToDir:=''+ToDir+'\base_'+datetostr(date)+'.mdb'; |
|
|
||
|
|
F.pTo:=pchar(ToDir); |
|
|
||
XL.WorkBooks[1].WorkSheets[1].Range['A3:B'+inttostr(3+dm.temp.Re |
F.fFlags |
:= |
FOF_ALLOWUNDO |
|
or |
|
cordCount)+''].Borders.ColorIndex := 1; |
|
FOF_NOCONFIRMATION; |
|
|
|
|
|
|
result:=ShFileOperation(F) = 0; |
|
|
||
|
|
end; |
|
|
|
|
XL.WorkBooks[1].WorkSheets[1].Range['A3:A'+inttostr(3+dm.temp.Re |
|
|
|
|
|
|
cordCount)+''].Borders.LineStyle := 1; |
|
procedure TDM.N9Click(Sender: TObject); |
|
|
||
|
|
var inifile:tinifile; |
|
|
|
|
XL.WorkBooks[1].WorkSheets[1].Range['A3:A'+inttostr(3+dm.temp.Re |
databasepath:string; |
|
|
|
||
cordCount)+''].Borders.Weight := 2; |
|
begin |
|
|
|
|
|
|
IniFile |
|
|
|
:= |
XL.WorkBooks[1].WorkSheets[1].Range['A3:A'+inttostr(3+dm.temp.Re |
TIniFile.Create(ExtractFilePath(Application.ExeName)+'options.ini'); |
|
||||
cordCount)+''].Borders.ColorIndex := 1; |
|
DataBasePath |
:= |
IniFile.ReadString('Options', |
'DBPath', |
|
|
|
ExtractFilePath(Application.ExeName)+'DataBase\'); |
|
|
||
|
|
IniFile.Free; |
|
|
|
|
|
|
34 |
|
|
|
|
if not WindowsCopyFile(DataBasePath, ExtractFilePath(Application.ExeName)) then
showmessage('Произошла ошибка, копирование не произведено')
else begin
showmessage('Копирование произведено успешно'); end;
end;
end.
unit fchpass;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons;
type
Tchpass = class(TForm) GroupBox1: TGroupBox; GroupBox2: TGroupBox; e1: TEdit;
e2: TEdit; Label1: TLabel; Label2: TLabel; BitBtn1: TBitBtn; BitBtn2: TBitBtn;
procedure FormCloseQuery(Sender: TObject; var CanClose:
Boolean);
procedure BitBtn1Click(Sender: TObject); private
{Private declarations } public
{Public declarations } end;
var
chpass: Tchpass;
implementation
uses datm; {$R *.dfm}
procedure Tchpass.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin e1.Text:=''; e2.Text:=''; close;
end;
procedure Tchpass.BitBtn1Click(Sender: TObject); begin
if e1.Text<>e2.Text then showmessage('Пароли не совпадают')
else begin
dm.COM.CommandText:='UPDATE pass SET pass="'+e2.Text+'" WHERE us = "Администратор" ';
dm.COM.Execute; showmessage('пароль изменен'); closequery;
end;
end;
end.
program Prava;
uses Forms,
fpass in 'fpass.pas' {pass},
datm in 'datm.pas' {DM: TDataModule}, fmain in 'fmain.pas' {main},
fklient in 'fklient.pas' {Klient}, fedkl in 'fedkl.pas' {edkl}, fvopr in 'fvopr.pas' {vopr}, FvidP in 'FvidP.pas' {VidP}, Fsprav in 'Fsprav.pas' {Sprav},
fchpass in 'fchpass.pas' {chpass};
{$R *.res}
begin Application.Initialize;
Application.CreateForm(Tpass, pass); Application.CreateForm(TDM, DM); Application.CreateForm(Tmain, main); Application.CreateForm(TKlient, Klient); Application.CreateForm(Tedkl, edkl); Application.CreateForm(Tvopr, vopr); Application.CreateForm(TVidP, VidP); Application.CreateForm(TSprav, Sprav); Application.CreateForm(Tchpass, chpass); Application.Run;
end.
unit fpass;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons,inifiles;
type
Tpass = class(TForm) GroupBox1: TGroupBox; GroupBox2: TGroupBox; Label1: TLabel;
Label2: TLabel;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn; e2: TEdit;
cb: TComboBox;
procedure BitBtn2Click(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose:
Boolean);
procedure FormShow(Sender: TObject); procedure BitBtn1Click(Sender: TObject);
private
{Private declarations } public
{Public declarations } end;
var
pass: Tpass;
implementation
uses datm, fmain;
{$R *.dfm}
procedure Tpass.BitBtn2Click(Sender: TObject); begin
halt;
end;
procedure Tpass.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin halt; end;
35
procedure Tpass.FormShow(Sender: TObject); var inifile:tinifile;
DBP:string; begin
IniFile := TIniFile.Create(ExtractFilePath(Application.ExeName)+'options.ini');
DBP := IniFile.ReadString('Options', 'DBPath', ExtractFilePath(Application.ExeName));
IniFile.Free;
dm.AC.ConnectionString :='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+DBP+';Persist Security Info=False';
dm.AC.Connected := True;
cb.Clear;
dm.temp.Active:=false; dm.Temp.CommandText:='select * from pass'; dm.Temp.Active:=true;
while not dm.Temp.Eof do begin
cb.Items.Add(dm.Temp.Fields.Fields[0].AsString);
dm.Temp.Next;
end; id_kl:='0'; end;
procedure Tpass.BitBtn1Click(Sender: TObject); begin
if cb.ItemIndex=0 then begin dm.temp.Active:=false;
dm.Temp.CommandText:='select * from pass WHERE (us = "'+cb.Text+'") AND (pass = "'+e2.Text+'")';
dm.Temp.Active:=true; end
else
begin dm.temp.Active:=false;
dm.Temp.CommandText:='select * from klient WHERE ([sp_kl]&""&[np_kl]) = "'+e2.text+'"';
dm.Temp.Active:=true;
end;
if dm.temp.RecordCount=0 then begin
showmessage('Пароль введен неправильно'); exit;
end else
begin
if cb.ItemIndex=0 then begin
pass.Hide;
main.Show;
dm.N4.Visible:=false; end
else begin
id_kl:=dm.temp.Fields[0].AsString; pass.Hide;
main.Show;
dm.N1.Visible:=false;
dm.N12.Visible:=false;
dm.N6.Visible:=false;
dm.N7.Visible:=false;
end;
end;
end;
end.
36