Скачиваний:
9
Добавлен:
17.06.2023
Размер:
970.15 Кб
Скачать

e2.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

Соседние файлы в папке Курсовые работы