Главная страница

00.2 Уч-мет пос МПиС d4 (1). Лабораторная работа Формирование статистической таблицы с возможностью сортировки, фильтрации и группировки данных 4


Скачать 2.1 Mb.
НазваниеЛабораторная работа Формирование статистической таблицы с возможностью сортировки, фильтрации и группировки данных 4
Дата09.10.2022
Размер2.1 Mb.
Формат файлаdocx
Имя файла00.2 Уч-мет пос МПиС d4 (1).docx
ТипЛабораторная работа
#722618
страница9 из 9
1   2   3   4   5   6   7   8   9

Лабораторная работа № 8.
Подготовка итогового проекта



Используя материалы лабораторных работ выполнить индивидаульное задание (раздается преподавателем) – разработать приложение, автоматизируещее дятельность диспетчера при работе с одним журналом статистики. Добавить следующие возможности:

  • загрузку и выгрузку данных в БД MSAccess;

  • проработать экспорт данных в MSWord и MSExcel.


Ниже приведены примеры интерфейса проекта и ключевые фрагменты кода.
Пример интерфейса











Пример ключевых фрагментов кода
// выгрузка данных из базы в ячейки таблицы

procedure TForm1.SpeedButton2Click(Sender: TObject);

var i,j :Integer;

begin

ChrtX1:=True;

BDForm1:=TBDForm1.Create(Self);

BDForm1.Caption:='Число инцидентов по категориям объектов';

BDForm1.StringGrid1.RowCount:=8;

BDForm1.StringGrid1.ColWidths[0]:=150;

BDForm1.StringGrid1.Cells[0,0]:='Категорияобъекта';

BDForm1.StringGrid1.Cells[0,1]:='Горныеработы';

BDForm1.StringGrid1.Cells[0,2]:='Обогатительныйкомплекс';

BDForm1.StringGrid1.Cells[0,3]:='Ж/Дтранспорт';

BDForm1.StringGrid1.Cells[0,4]:='Подъемныесооружения';

BDForm1.StringGrid1.Cells[0,5]:='Объектыкотлонадзора';

BDForm1.StringGrid1.Cells[0,6]:='Прочиеобъекты';

BDForm1.StringGrid1.Cells[0,7]:='Всего';

BDForm1.ADOTable1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=inzid.mdb;Persist Security Info=False';

BDForm1.ADOTable1.TableName:='Categor';

BDForm1.ADOTable1.Active:=True;

BDForm1.StringGrid1.ColCount:=BDForm1.ADOTable1.RecordCount+1;

for i:=1 to BDForm1.StringGrid1.ColCount-1 do

begin

BDForm1.StringGrid1.Cells[i,0]:=BDForm1.ADOTable1.FieldByName('year').AsString;

BDForm1.ADOTable1.Next;

end;

BDForm1.ADOTable1.First;

for j:=1 to BDForm1.ADOTable1.RecordCount do

begin

for i:=1 to BDForm1.ADOTable1.FieldCount-1 do

begin

BDForm1.StringGrid1.Cells[j,i]:=BDForm1.ADOTable1.Fields[i].AsString;

end;

BDForm1.ADOTable1.Next;

end;

for j:=1 to BDForm1.StringGrid1.ColCount do

BDForm1.StringGrid1.Cells[j,BDForm1.StringGrid1.RowCount-1]:='0';
for j:=1 to BDForm1.StringGrid1.ColCount-1 do

for i:=1 to BDForm1.StringGrid1.RowCount-2 do

BDForm1.StringGrid1.Cells[j,BDForm1.StringGrid1.RowCount-1]:=IntToStr(StrToInt(BDForm1.StringGrid1.Cells[j,i])+StrToInt(BDForm1.StringGrid1.Cells[j,BDForm1.StringGrid1.RowCount-1]));
BDForm1.StringGrid1.ColCount:=BDForm1.StringGrid1.ColCount+1;

BDForm1.StringGrid1.Cells[BDForm1.StringGrid1.ColCount-1,0]:='Всего';
for i:=1 to BDForm1.StringGrid1.RowCount-2 do

BDForm1.StringGrid1.Cells[BDForm1.StringGrid1.ColCount-1,i]:='0';
for i:=1 to BDForm1.StringGrid1.RowCount-1 do

for j:=1 to BDForm1.StringGrid1.ColCount-2 do

BDForm1.StringGrid1.Cells[BDForm1.StringGrid1.ColCount-1,i]:=IntToStr(StrToInt(BDForm1.StringGrid1.Cells[j,i])+StrToInt(BDForm1.StringGrid1.Cells[BDForm1.StringGrid1.ColCount-1,i]));
BDForm1.SpeedButton7.Click;

BDForm1.Show;

end;
// выгрузка данных в MS Excel

procedure TForm1.SpeedButton11Click(Sender: TObject);

var

xEx,yEx: integer;

i,j,k,k1,l,l1: integer;

b: Boolean;

s: String;

p: Integer;

begin

dt:=''; dt:=DateToStr(Date);

dt1:='Safety'+' ('+dt[1]+dt[2]+'-'+dt[4]+dt[5]+'-'+dt[7]+dt[8]+dt[9]+dt[10]+')'+'.xls';

if not CopyFile(pchar('Statistics.xls'),pchar(dt1),true) then ShowMessage('Файлнесоздан!'+#13+'Такойфайлужесуществует,'+#13+'попробуйтеизменитьназвание!') else

begin

Panel1.Align:=AlClient; Panel1.Visible:=True; Panel1.SetFocus; Panel1.Refresh; Panel1.Update; Panel1.Repaint;

Panel1.Refresh; Panel1.Update; Panel1.Repaint;

VarEx:=CreateOleObject('Excel.Application');

VarEx.WorkBooks.Open(extractfilepath(application.ExeName)+dt1,,false,,);

//Числоинцидентов

ADOTable1.Active:=False;

ADOTable1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=inzid.mdb;Persist Security Info=False';

ADOTable1.TableName:='ChisloInzid';

ADOTable1.Active:=True; l:=0;

for j:=1 to ADOTable1.RecordCount do

begin

VarEx.WorkSheets['Лист №1'].Select;

VarEx.Cells.Find(' ').Activate;

VarEx.Cells.FindNext.Activate;

yEx:=VarEx.ActiveCell.Column;

xEx:=VarEx.ActiveCell.Row;

for i:=0 to ADOTable1.FieldCount-1 do VarEx.Cells[xEx,yEx+i].Value:=ADOTable1.Fields[i].AsString;

k:=0; for i:=1 to ADOTable1.FieldCount-1 do k:=k+StrToInt(ADOTable1.Fields[i].AsString);

VarEx.Cells[xEx,yEx+i].Value:=k; l:=l+k;

VarEx.Cells[xEx+1,yEx].Value:=' ';

ADOTable1.Next;

end;

VarEx.Cells[xEx+1,yEx+i].Value:=l;

VarEx.Cells.Find(' ').Activate;

VarEx.Cells.FindNext.Activate;

yEx:=VarEx.ActiveCell.Column;

xEx:=VarEx.ActiveCell.Row;

VarEx.Cells[xEx,yEx]:='Всего';

for i:=1 to ADOTable1.FieldCount-1 do

begin

ADOTable1.First; k:=0; j:=1;

repeat k:=k+StrToInt(ADOTable1.Fields[i].AsString); j:=j+1; ADOTable1.Next; until j>ADOTable1.RecordCount;

VarEx.Cells[xEx,yEx+i]:=IntToStr(k);

end;

VarEx.Cells[xEx+1,yEx].Value:=' ';
//Число инцидентов по категориям объектов

ADOTable1.Active:=False;

ADOTable1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=inzid.mdb;Persist Security Info=False';

ADOTable1.TableName:='Categor';

ADOTable1.Active:=True; l:=0;

for j:=1 to ADOTable1.RecordCount do

begin

VarEx.WorkSheets['Лист №2'].Select;

VarEx.Cells.Find(' ').Activate;

VarEx.Cells.FindNext.Activate;

yEx:=VarEx.ActiveCell.Column;

xEx:=VarEx.ActiveCell.Row;

for i:=0 to ADOTable1.FieldCount-1 do VarEx.Cells[xEx,yEx+i].Value:=ADOTable1.Fields[i].AsString;

k:=0; for i:=1 to ADOTable1.FieldCount-1 do k:=k+StrToInt(ADOTable1.Fields[i].AsString);

VarEx.Cells[xEx,yEx+i].Value:=k; l:=l+k;

VarEx.Cells[xEx+1,yEx].Value:=' ';

ADOTable1.Next;

end;

VarEx.Cells[xEx+1,yEx+i].Value:=l;

VarEx.Cells.Find(' ').Activate;

VarEx.Cells.FindNext.Activate;

yEx:=VarEx.ActiveCell.Column;

xEx:=VarEx.ActiveCell.Row;

VarEx.Cells[xEx,yEx]:='Всего';

for i:=1 to ADOTable1.FieldCount-1 do

begin

ADOTable1.First; k:=0; j:=1;

repeat k:=k+StrToInt(ADOTable1.Fields[i].AsString); j:=j+1; ADOTable1.Next; until j>ADOTable1.RecordCount;

VarEx.Cells[xEx,yEx+i]:=IntToStr(k);

end;

VarEx.Cells[xEx+1,yEx].Value:=' ';

SaveDialog1.Title := 'Файлыотчетов Excel';

SaveDialog1.Filter := 'MSExcel files (*.xls)|*.xls';

if SaveDialog1.Execute then

begin

s:=SaveDialog1.FileName;

repeat

p:=Pos('\', s);

Delete(s,1,p);

until p=0;

s:=s+'.xls';

ChDir(extractfilepath(SaveDialog1.FileName));

CopyFile(pchar(extractfilepath(application.ExeName)+dt1),pchar(s),true);

end;

DeleteFile(extractfilepath(application.ExeName)+dt1);

Panel1.Visible:=False;

ChDir(extractfilepath(Application.ExeName));

ShowMessage('Данные удачно перенесены в Excel файл');

end;

end;
// выгрузка из памяти при закрытии

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);

begin

try

// Если Word уже запущен

MsWord := GetActiveOleObject('Word.Application');

// Взять ссылку на запущенный OLE объект

except

try

// Word незапущен, запустить

MsWord := CreateOleObject('Word.Application');

// Создать ссылку на зарегистрированный OLE объект

MsWord.Visible := True;

except

ShowMessage('Немогузапустить Microsoft Word');

Exit;

end;

end;

end;
// открыть книгу MS Excel

procedure TForm1.SpeedButton14Click(Sender: TObject);

begin

OpenDialog1.Title := 'Файлыотчетов Excel';

OpenDialog1.Filter := 'MSExcel files (*.xls)|*.xls';

if OpenDialog1.Execute then

begin

VarEx_1:=CreateOleObject('Excel.Application');

VarEx_1.WorkBooks.Open(OpenDialog1.FileName,,false,,);

VarEx_1.Visible:=True;

end;

{VarEx_1:=CreateOleObject('excel.application');

if dt='' then VarEx_1.WorkBooks.Open(extractfilepath(application.ExeName)+'Statistics.xls',,false,,)

else

VarEx_1.WorkBooks.Open(extractfilepath(application.ExeName)+dt1,,false,,);

VarEx_1.Visible:=True;}
end;
// выгрузить данные в MS Word

procedure TForm1.SpeedButton12Click(Sender: TObject);

var

i,j,k,k1,l,l1: integer;

b: Boolean;

s: String;

p: Integer;

begin

Wrd:=True;

VarWrd:=CreateOleObject('Word.Application');

VarWrd.Documents.Add(extractfilepath(application.ExeName)+'Statistics.doc',EmptyParam);

VarWrd.Visible:=False;

Panel1.Align:=AlClient; Panel1.Visible:=True; Panel1.SetFocus; Panel1.Refresh; Panel1.Update; Panel1.Repaint;

//Число инцидентов

ADOTable1.Active:=False;

ADOTable1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=inzid.mdb;Persist Security Info=False';

ADOTable1.TableName:='ChisloInzid';

ADOTable1.Active:=True; l:=0;

VarWrd.Selection.GoTo(-1,unAssigned,unAssigned,'Lbl1');

for j:=1 to ADOTable1.RecordCount do

begin

for i:=0 to ADOTable1.FieldCount-1 do

begin

VarWrd.Selection.TypeText(ADOTable1.Fields[i].AsString);

VarWrd.Run('NextCell');

end;

k:=0;

for i:=1 to ADOTable1.FieldCount-1 do k:=k+StrToInt(ADOTable1.Fields[i].AsString);

VarWrd.Selection.TypeText(IntToStr(k)); l:=l+k;

VarWrd.Run('NextCell');

ADOTable1.Next;

end;

VarWrd.Selection.TypeText('Всего');

VarWrd.Run('NextCell');

for i:=1 to ADOTable1.FieldCount-1 do

begin

ADOTable1.First; k:=0; j:=1;

repeat k:=k+StrToInt(ADOTable1.Fields[i].AsString); j:=j+1; ADOTable1.Next; until j>ADOTable1.RecordCount;

VarWrd.Selection.TypeText(IntToStr(k));

VarWrd.Run('NextCell');

end;

VarWrd.Selection.TypeText(IntToStr(l));

SaveDialog1.Title := 'Файлыотчетов Word';

SaveDialog1.Filter := 'MSWord files (*.doc)|*.doc';

if SaveDialog1.Execute then

begin

s:=SaveDialog1.FileName;

repeat

p:=Pos('\', s);

Delete(s,1,p);

until p=0;

s:=s+'.doc';

ChDir(extractfilepath(SaveDialog1.FileName));

VarWrd.ActiveDocument.SaveAs(SaveDialog1.FileName);

end;

VarWrd.ActiveDocument.SaveAs(extractfilepath(application.ExeName)+'Temp.doc');

VarWrd.Quit;

DeleteFile(extractfilepath(application.ExeName)+'Temp.doc');

Panel1.Visible:=False;

ChDir(extractfilepath(Application.ExeName));

ShowMessage('Данныеудачноперенесеныв Word файл');

end;

// открыть книгу MS Word

procedure TForm1.SpeedButton15Click(Sender: TObject);

begin

OpenDialog1.Title := 'Файлыотчетов Word';

OpenDialog1.Filter := 'MSWord files (*.doc)|*.doc';

if OpenDialog1.Execute then

begin

VarWrd_1:=CreateOleObject('Word.Application');

VarWrd_1.Documents.Open(OpenDialog1.FileName,,false,,);

VarWrd_1.Visible:=True;

end;

VarWrd_1:=CreateOleObject('Word.Application');

if Wrd then VarWrd_1.Documents.Open(extractfilepath(application.ExeName)+'Stat.doc',,false,,)

else VarWrd_1.Documents.Open(extractfilepath(application.ExeName)+'Statistics.doc',,false,,);

VarWrd_1.Visible:=True;

end;


1 http://devdelphi.ru/

2 http://www.delphikingdom.com/asp/viewitem.asp?catalogID=407

1   2   3   4   5   6   7   8   9


написать администратору сайта