Приложение А (1230876), страница 2
Текст из файла (страница 2)
Button5: TButton;
Button6: TButton;
Panel1: TPanel;
Button8: TButton;
CB1: TComboBox;
CB2: TComboBox;
Label2: TLabel;
Label3: TLabel;
Button7: TButton;
procedure FormActivate(Sender: TObject);
procedure DBGrid2CellClick(Column: TColumn);
procedure Button1Click(Sender: TObject);
procedure Button8Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure CB1Select(Sender: TObject);
procedure CB2Select(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button7Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
const mes: array [1..12] of string = ('01','02','03','04','05','06','07','08','09','10','11','12');
day: array [1..12] of integer = (31,29,31,30,31,30,31,31,30,31,30,31);
DayExc: array [1..31] of string = ('F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'AG' ,'AH', 'AI', 'AJ');
var
Form5: TForm5;
mesac,god:integer;
implementation
uses unit3, unit2, unit6, unit7, unit9, unit10, unit11, unit12;
{$R *.dfm}
procedure TForm5.Button1Click(Sender: TObject);
begin
Form6.Show;
end;
procedure TForm5.Button2Click(Sender: TObject);
begin
DM.DB.Connected:=false;
DM.DB.Connected:=true;
DM.DT.Active:=true;
DM.DS_GR.Open;
DM.DS_OBJ.Open;
end;
procedure TForm5.Button3Click(Sender: TObject);
begin
Form9.Show;
end;
procedure TForm5.Button4Click(Sender: TObject);
begin
Form11.Show;
end;
procedure TForm5.Button5Click(Sender: TObject);
begin
Form7.SHow;
end;
procedure TForm5.Button6Click(Sender: TObject);
begin
Form10.Show;
end;
procedure TForm5.Button7Click(Sender: TObject);
begin
Form12.Show;
end;
procedure TForm5.Button8Click(Sender: TObject);
var Exc,Doc,Str: Olevariant;
Pathini,PathExc,DatN,DatK,shfr,FIO,Num1: String;
Ini: TIniFile;
yach_SH,yach_FIO,CounRec,i,j: integer;
D,M,Y: Word;
Date1: TDate;
Itog: array [1..31] of integer;
label l1;
begin
i:=1;
yach_SH:=20;
yach_FIO:=20;
if (mesac=-1) or (god=-1)
then MessageDlg('Выберите месяц и/или год',mtInformation,[mbOK],1)
else
begin
Pathini:=ExtractFilePath(Application.ExeName)+'Info.ini';
Ini:=TIniFile.Create(Pathini);
PathExc:=Ini.ReadString('Path','Excel','');
if FileExists(PathExc)
then
begin
datn:='01.'+mes[mesac+1]+'.'+CB2.Items.Strings[god];
datk:=IntToStr(day[mesac+1])+'.'+mes[mesac+1]+'.'+CB2.Items.Strings[god];
DM.DS_Exc.Close;
DM.DS_Exc.SelectSQL.Clear;
DM.DS_Exc.SelectSQL.Text:='select DATE_,SOTR_,RABOTA.SHIFR_,FIO_,ID_FIO,ZATR_TIME,OBJECTS.SHIFR_ as SHIFR1,ID_OBJ';
DM.DS_Exc.SelectSQL.Add(' FROM RABOTA,FIO,OBJECTS where (SOTR_ = ID_FIO) And (ID_OBJ = RABOTA.SHIFR_) and (Date_ between');
DM.DS_Exc.SelectSQL.Add(' '''+datN+''' AND '''+datK+''')');
DM.DS_Exc.SelectSQL.Add(' ORDER by SHIFR_, FIO_, DATE_');
DM.DS_Exc.Open;
DM.DS_Exc.Last;
CounRec:=DM.DS_Exc.RecordCount;
Exc:=CreateOleObject('Excel.Application');
Exc.Visible:=true;
Doc:=Exc.Workbooks.Add(PathExc);
Str:=Exc.Worksheets[1];
Str.Activate;
Str.Range['A15'].Value:='учета рабочего времени (по объектам) отдела АТС за '+CB1.Items.Strings[mesac]+' '+CB2.Items.Strings[god];
Str.Range['AJ13'].Value:=DateToStr(Now);
end
else
begin
MessageDlg('Не найден путь к фалйу Excel',mtError,[mbOk],1);
goto l1;
end;
DM.DS_Exc.First;
FIO:='';
shfr:=DM.DS_Exc.FBN('SHIFR1').AsString;
WHILE NOT DM.DS_Exc.EOF DO
begin
if (DM.DS_Exc.FBN('SHIFR1').asString=shfr) then
begin
if (DM.DS_Exc.FBN('FIO_').asString=FIO) and (Date1=DM.DS_Exc.FBN('DATE_').AsDateTime) then
begin
yach_FIO:=yach_FIO-1;
DecodeDate(DM.DS_Exc.FBN('DATE_').AsDateTime,Y,M,D);
Num1:=Str.Range[DayExc[D]+IntToStr(yach_FIO)].Value;
Str.Range[DayExc[D]+IntToStr(yach_FIO)].Value:=IntToStr(StrToInt(Num1)+StrToInt(DM.DS_Exc.FBN('ZATR_TIME').AsString));
Str.Range['AK'+IntToStr(yach_FIO)].Formula:='=SUM(F'+IntToStr(yach_FIO)+':AJ'+IntToStr(yach_FIO);
Itog[D]:=Itog[D]+StrToInt(DM.DS_Exc.FBN('ZATR_TIME').AsString);
DM.DS_Exc.Next;
yach_FIO:=yach_FIO+1;
end
else
if DM.DS_Exc.FBN('FIO_').AsString=FIO then
begin
yach_FIO:=yach_FIO-1;
DecodeDate(DM.DS_Exc.FBN('DATE_').AsDateTime,Y,M,D);
Num1:=Str.Range[DayExc[D]+IntToStr(yach_FIO)].Value;
Str.Range[DayExc[D]+IntToStr(yach_FIO)].Value:=DM.DS_Exc.FBN('ZATR_TIME').AsString;
Str.Range['AK'+IntToStr(yach_FIO)].Formula:='=SUM(F'+IntToStr(yach_FIO)+':AJ'+IntToStr(yach_FIO);
Date1:=DM.DS_Exc.FBN('DATE_').AsDateTime;
Itog[D]:=Itog[D]+Str.Range[DayExc[D]+IntToStr(yach_FIO)].Value;
DM.DS_Exc.Next;
yach_FIO:=yach_FIO+1;
end
else
begin
DecodeDate(DM.DS_Exc.FBN('DATE_').AsDateTime,Y,M,D);
Str.Range['E'+IntToStr(yach_SH)].Value:=DM.DS_Exc.FBN('SHIFR1').AsString;
Str.Range['B'+IntToStr(yach_FIO)].Value:=DM.DS_Exc.FBN('FIO_').AsString;
Str.Range[DayExc[D]+IntToStr(yach_FIO)].Value:=DM.DS_Exc.FBN('ZATR_TIME').AsString;
Str.Range['AK'+IntToStr(yach_FIO)].Formula:='=SUM(F'+IntToStr(yach_FIO)+':AJ'+IntToStr(yach_FIO);
FIO:= DM.DS_Exc.FBN('FIO_').AsString;
Date1:=DM.DS_Exc.FBN('DATE_').AsDateTime;
Str.Range['A'+IntToStr(yach_FIO)].Value:=i;
Itog[D]:=Itog[D]+Str.Range[DayExc[D]+IntToStr(yach_FIO)].Value;
DM.DS_Exc.Next;
yach_SH:=yach_SH+1;
yach_FIO:=yach_FIO+1;
i:=i+1;
end;
end
else
begin
Str.Range['B'+IntToStr(yach_FIO)].Value:='Итого';
Str.Range['AK'+IntToStr(yach_FIO)].Formula:='=SUM(F'+IntToStr(yach_FIO)+':AJ'+IntToStr(yach_FIO);
for D:=1 to 31 do
begin
if Itog[D]<>0 then
Str.Range[DayExc[D]+IntToStr(yach_FIO)].Value:=Itog[D];
end;
yach_SH:=yach_SH+2;
yach_FIO:=yach_FIO+2;
shfr:=DM.DS_Exc.FBN('SHIFR1').AsString;
FIO:='';
i:=1;
for D:=1 to 31 do Itog[D]:=0;
end;
end;
if (DM.DS_Exc.EOF=true) and (DM.DS_Exc.RecordCount<>0) then
begin
Str.Range['B'+IntToStr(yach_FIO)].Value:='Итого';
Str.Range['AK'+IntToStr(yach_FIO)].Formula:='=SUM(F'+IntToStr(yach_FIO)+':AJ'+IntToStr(yach_FIO);
for D:=1 to 31 do
begin
if Itog[D]<>0 then
Str.Range[DayExc[D]+IntToStr(yach_FIO)].Value:=Itog[D];
end;
end;
end;
l1:
end;
procedure TForm5.CB1Select(Sender: TObject);
begin
mesac:=CB1.ItemIndex;
end;
procedure TForm5.CB2Select(Sender: TObject);
begin
god:=CB2.Itemindex;
end;
procedure TForm5.DBGrid2CellClick(Column: TColumn);
begin
memo4.Clear;
memo5.Clear;
memo6.Clear;
Memo5.Text:=DM.DS_GR.FBN('WORK_').AsString;
DM.DS_OBJ.First;
while NOT DM.DS_OBJ.Eof do
begin
if DM.DS_GR.FBN('SHIFR_1').AsString=DM.DS_OBJ.FBN('SHIFR_').AsString then
Memo4.Text:=DM.DS_OBJ.FBN('TITUL_').AsString;
DM.DS_OBJ.Next;
end;
Memo6.Text:=DM.DS_GR.FBN('DISCR_').AsString;
end;
procedure TForm5.FormActivate(Sender: TObject);
begin
mesac:=Cb1.ItemIndex;
god:=CB2.ItemIndex;
label1.Caption:=Name1;
DM.DS_GR.Close;
DM.DS_GR.Sqls.SelectSQL.Clear;
DM.DS_GR.Sqls.SelectSQL.Text:='select FIO_,ID_FIO,WORK_,DISCR_,DATE_,TIME_,RABOTA.SHIFR_,STAD_,SOTR_,ZATR_TIME,ID_OBJ,OBJECTS.SHIFR_,TITUL_,ID_STAD,NAME_STAD';
DM.DS_GR.Sqls.SelectSQL.Add(' from FIO,RABOTA,OBJECTS,STADIYA WHERE (SOTR_=ID_FIO) and (ID_OBJ=RABOTA.SHIFR_) and (ID_STAD=STAD_)');
DM.DS_GR.SQLs.SelectSQL.Add(' Order by DATE_ desc,TIME_ DESC');
DM.DS_GR.Open;
end;
procedure TForm5.FormClose(Sender: TObject; var Action: TCloseAction);
begin
DM.DB.Connected:=false;
DM.DT.Active:=false;
Application.Terminate;
end;
end.
Листинг кода программы, отвечающего за работу в окне "Список сотрудников":
unit Unit6;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids, DBGrids;
type
TForm6 = class(TForm)
DBGrid1: TDBGrid;
Label1: TLabel;
Edit1: TEdit;
Label2: TLabel;
Edit2: TEdit;
Button1: TButton;
Button2: TButton;
Button3: TButton;
CB1: TComboBox;
CB2: TComboBox;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
procedure FormActivate(Sender: TObject);
procedure CB1Select(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure CB2Select(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
procedure Button1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure Button1MouseLeave(Sender: TObject);
procedure Button2MouseLeave(Sender: TObject);
procedure Button2MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure Button3MouseLeave(Sender: TObject);
procedure Button3MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure NewSotr(Sender: TObject);
procedure EditSotr(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form6: TForm6;
DOLJN,GROUP:integer;
implementation
uses unit2;
{$R *.dfm}
procedure TForm6.Button1Click(Sender: TObject);
begin
if (Edit1.Text='') or (Edit2.Text='') or (CB1.ItemIndex=-1) then
Messagedlg('Проверьте правильность вводимой информации', mtInformation,[mbOk],1)
else
if ((Edit1.Text<>'') and (Edit2.Text<>'') and (CB1.Text='Начальник отдела')) then
begin
NewSotr(nil);
CB2.Enabled:=true;
end
else
if (Edit1.Text<>'') and (Edit2.Text<>'') and (CB1.Text<>'Начальник отдела') and
(CB1.ItemIndex<>-1) and (Cb2.Text<>'') then NewSotr(nil)
else
Messagedlg('Проверьте правильность вводимой информации', mtInformation,[mbOk],1);
end;
procedure TForm6.NewSotr(Sender: TObject);
Begin
DM.DS_SOTR.Insert;
DM.DS_SOTR.FBN('FIO_').AsString:=Edit1.Text;
DM.DS_SOTR.FBN('PASSWORD_').AsString:=Edit2.Text;
DM.DS_SOTR.FBN('DOLJN_').AsInteger:=DOLJN;
DM.DS_SOTR.FBN('GROUP_').AsInteger:=GROUP;
DM.DS_SOTR.Post;
DM.DB.DefaultTransaction.CommitRetaining;
DM.DS_SOTR.Close;
DM.DS_SOTR.Open;
Edit1.Text:='';
Edit2.Text:='';
CB1.ItemIndex:=-1;
CB2.ItemIndex:=-1;
End;
procedure TForm6.EditSotr(Sender: TObject);
begin
DM.DS_SOTR.Edit;
DM.DS_SOTR.FBN('FIO_').AsString:=Edit1.Text;
DM.DS_SOTR.FBN('PASSWORD_').AsString:=Edit2.Text;
DM.DS_SOTR.FBN('DOLJN_').AsInteger:=DOLJN;
DM.DS_SOTR.FBN('GROUP_').AsInteger:=GROUP;
DM.DS_SOTR.Post;
DM.DB.DefaultTransaction.CommitRetaining;
DM.DS_SOTR.Close;
DM.DS_SOTR.Open;
Edit1.Text:='';
Edit2.Text:='';
CB1.ItemIndex:=-1;
CB2.ItemIndex:=-1;
end;
procedure TForm6.Button1MouseLeave(Sender: TObject);
begin
Label5.Caption:='';
end;
procedure TForm6.Button1MouseMove(Sender: TObject; Shift: TShiftState; X,













