Диплом: Автоматизация процесса приема техники на ремонтные работы в ОАО "Samsung Service"

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
95
Filter := Filter + ' and ';
Filter := Filter + 'СостояниеID = ' + IntToStr(dblcbState.KeyValue);
end;
if chbPlace.Checked and (dblcbPlace.KeyValue <> Null) then
begin
if Filter <> '' then
Filter := Filter + ' and ';
Filter := Filter + 'РабМестоID = ' + IntToStr(dblcbPlace.KeyValue);
end;
if chbEmp.Checked and (dblcbEmp.KeyValue <> Null) then
begin
if Filter <> '' then
Filter := Filter + ' and ';
Filter := Filter + 'ИсполнительID = ' + IntToStr(dblcbEmp.KeyValue);
end;
if Filter <> '' then
begin
DM.dstRequest.Filter := Filter;
DM.dstRequest.Filtered := True;
end
else
DM.dstRequest.Filtered := False;
end;
//DBNavigator1 привязывается к выбранному DBGrid'у и соответствующему
набору данных:
procedure TfmRequests.DBGrid1Enter(Sender: TObject);
96
begin
DBNavigator1.DataSource := (Sender as TDBGrid).DataSource;
end;
//Выделение цветом заказов в зависимости от состояния:
procedure TfmRequests.DBGrid1DrawColumnCell(Sender: TObject; const Rect:
TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if DM.dstRequest.FieldByName('Состояние').AsString = 'Выполнен' then
DBGrid1.Canvas.Font.Color := clBlue
else if (DM.dstRequest.FieldByName('Состояние').AsString = 'Передан на
исполнение') or
(DM.dstRequest.FieldByName('Состояние').AsString = 'Повторный') then
DBGrid1.Canvas.Font.Color := clRed;
DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
procedure TfmRequests.FormClose(Sender: TObject; var Action: TCloseAction);
begin
DM.dstRequest.Close;
end;
end.
unit uRep;
//Модуль для формирования отчетов и документов
interface
uses
Windows, SysUtils, Classes, ComObj, DB, Controls, Forms, ADODB, Math,
DBGrids;
97
procedure Rep_Universal(ADBGrid: TDBGrid; NumCol: Integer; ACaption: string);
procedure Rep_Passport(DeviceID: Integer);
procedure Rep_DeviceMove;
procedure Rep_AllPlacesEquipment;
implementation
uses
uDM, DateUtils, Dialogs;
//Формирование отчета по выбранному набору данных (вывод заголовков
видимых
//полей и их значений):
procedure Rep_Universal(ADBGrid: TDBGrid; NumCol: Integer; ACaption: string);
var
Excel: Variant;
i, j, Width: Integer;
begin
Excel := CreateOleObject('Excel.Application');
Screen.Cursor := crHourGlass;
try
try
Excel.Application.EnableEvents := False;
Excel.Workbooks.Add;
for i:=0 to NumCol-1 do
begin
//Вывод в шапку таблицы названий полей из DBGrid'а:
Excel.Cells[5,i+1] := ADBGrid.Columns[i].Title.Caption;
//Форматирование заголовка:
98
Width := Min(30, Trunc(ADBGrid.Columns[i].Width * 0.2));
Excel.Cells[5,i+1].ColumnWidth := Width;
Excel.Cells[5,i+1].Font.Bold := True;
end;
Excel.Cells[1,1] := Date;
Excel.Cells[3,1] := ACaption;
Excel.Cells[3,1].Font.Bold := True;
Excel.Cells[3,1].Font.Size := 12;
i := 5;
//Экспорт данных из таблиц БД:
with ADBGrid.DataSource.DataSet do
begin
DisableControls; //Отключаем сетку на время формирования отчета
First;
while not Eof do
begin
Inc(i);
//Выводятся NumCol первых полей таблицы, отображенных в DBGrid'е:
for j:=0 to NumCol-1 do
Excel.Cells[i,j+1] :=
FieldByName(ADBGrid.Columns[j].FieldName).AsString;
Next;
end;
end; //with
Excel.Application.EnableEvents := True;
Excel.Visible := True;
99
except
Excel.Quit;
end;
finally
ADBGrid.DataSource.DataSet.EnableControls;
Screen.Cursor := crDefault;
ADBGrid.Enabled := True;
end;
end;
//Формирование паспорта устройства:
procedure Rep_Passport(DeviceID: Integer);
var
Excel: Variant;
WorkbookName: string;
PosInc, i: Integer;
begin
//Шаблон хранится в папке Шаблоны:
WorkbookName := GetCurrentDir + '\Шаблоны\' + 'Паспорт устройства.xlt';
Excel := CreateOleObject('Excel.Application');
try
Excel.Workbooks.Open(WorkbookName);
//Экспорт данных из таблицы БД:
with DM do
begin
dstAllDevices.Open;
100
if dstAllDevices.Locate('ИнвN', DeviceID, []) then
begin
Excel.Cells[1,7] := DeviceID;
Excel.Cells[3,4] := dstAllDevices.FieldByName('Тип').AsString;
Excel.Cells[4,4] := dstAllDevices.FieldByName('Наименование').AsString;
Excel.Cells[5,4] := DeviceID;
Excel.Cells[6,4] := dstAllDevices.FieldByName('СерийныйN').AsString;
Excel.Cells[7,4] := dstAllDevices.FieldByName('Профилактика').AsString;
Excel.Cells[8,4] := dstAllDevices.FieldByName('Амортизация').AsString;
Excel.Cells[3,12] := dstAllDevices.FieldByName('Поставщик').AsString;
if not dstAllDevices.FieldByName('Счет').IsNull then
Excel.Cells[4,12] := '№ ' + dstAllDevices.FieldByName('Счет').AsString +
' от ' + dstAllDevices.FieldByName('СчетДата').AsString;
if not dstAllDevices.FieldByName('СчетФактура').IsNull then
Excel.Cells[5,12] := '№ ' +
dstAllDevices.FieldByName('СчетФактура').AsString +
' от ' + dstAllDevices.FieldByName('СчетФактураДата').AsString;
if not dstAllDevices.FieldByName('Накладная').IsNull then
Excel.Cells[6,12] := '№ ' + dstAllDevices.FieldByName('Накладная').AsString
+ ' от ' + dstAllDevices.FieldByName('НакладнаяДата').AsString;
Excel.Cells[7,12] := dstAllDevices.FieldByName('Цена').AsFloat;
i:=0;
PosInc := 11;
//Экспорт данных из таблиц БД:
dstHistoryMove.Parameters.ParamByName('pInvN').Value := DeviceID;
dstHistoryMove.Open;
101
dstHistoryMove.First;
while not dstHistoryMove.Eof do
begin
//Добавление новой строки:
if i <> 0 then
begin
Excel.Rows.Item[PosInc+i].Select;
Excel.Selection.Insert;
Excel.Rows.Item[PosInc].Select;
Excel.Selection.Copy;
Excel.Rows.Item[PosInc+i].Select;
Excel.ActiveSheet.Paste;
Excel.Application.CutCopyMode := False;
end;
Excel.Cells[i+PosInc,1] := dstHistoryMove.FieldByName('Дата').AsString;
Excel.Cells[i+PosInc,3] :=
dstHistoryMove.FieldByName('Подразделение').AsString;
Excel.Cells[i+PosInc,8] :=
dstHistoryMove.FieldByName('РабМесто').AsString;
Excel.Cells[i+PosInc,13] :=
dstHistoryMove.FieldByName('СетевоеИмя').AsString;
dstHistoryMove.Next;
Inc(i);
end; //while
dstHistoryMove.Close;
end; //if Locate
102
dstAllDevices.Close;
end; //with
Excel.Visible := True;
except
Excel.Quit;
end;
end;
//Формирование накладной на внутреннее перемещение:
procedure Rep_DeviceMove;
var Excel: Variant;
WorkbookName: string;
begin
//Шаблон хранится в папке Шаблоны:
WorkbookName := GetCurrentDir + '\Шаблоны\Накладная на перемещение.xlt';
Excel := CreateOleObject('Excel.Application');
try
Excel.Workbooks.Open(WorkbookName);
//Экспорт данных из таблиц БД:
with DM do
begin
Excel.Cells[16,111] := Date;
Excel.Cells[22,11] :=
DM.dstDevicesAtPlace.FieldByName('Устройство').AsString;
Excel.Cells[22,60] :=
DM.dstDevicesAtPlace.FieldByName('ДатаВвода').AsString;
Excel.Cells[22,81] := FormatFloat('0000',
DM.dstDevicesAtPlace.FieldByName('ИнвN').AsInteger);
103
Excel.Cells[22,118] := DM.dstDevicesAtPlace.FieldByName('Цена').AsFloat;
Excel.Cells[22,141] := DM.dstDevicesAtPlace.FieldByName('Цена').AsFloat;
Excel.Cells[56,141] := DM.dstDevicesAtPlace.FieldByName('Цена').AsFloat;
end; //with
Excel.Visible := True;
except
Excel.Quit;
end;
end;
//Формирование отчета "Устройства по рабочим местам":
procedure Rep_AllPlacesEquipment;
var
Excel: Variant;
i: Integer;
Caption: string;
begin
Excel := CreateOleObject('Excel.Application');
Screen.Cursor := crHourGlass;
try
try
Excel.Application.EnableEvents := False;
Excel.Workbooks.Add;
Excel.Cells[1,1] := Date;
Excel.Cells[3,3] := 'Устройства по рабочим местам';
Excel.Cells[3,3].Font.Bold := True;
104
Excel.Cells[3,3].Font.Size := 14;
i := 5;
DM.dstPlaces2.Open;
DM.dstPlaces2.Sort := 'Наименование';
DM.dstPlaces2.First;
//Цикл по раб. местам:
while not DM.dstPlaces2.Eof do
begin
//Определение списка устройств на текущем раб. месте:
DM.dstDevicesAtPlace.Close;
DM.dstDevicesAtPlace.Parameters.ParamByName('pRM').Value :=
DM.dstPlaces2.FieldByName('ID').AsInteger;
DM.dstDevicesAtPlace.Open;
//Данные по раб. месту выводим только если к нему приписаны какие-либо
устройства:
if DM.dstDevicesAtPlace.RecordCount > 0 then
begin
Caption := DM.dstPlaces2.FieldByName('Наименование').AsString;
if DM.dstPlaces2.FieldByName('СетевоеИмя').AsString <> '' then
Caption := Caption + ' (' +
DM.dstPlaces2.FieldByName('СетевоеИмя').AsString + ')';
Excel.Cells[i,1] := Caption;
Excel.Cells[i,1].Font.Bold := True;
Excel.Cells[i,1].Font.Size := 12;
Inc(i);
//Заголовки столбцов:
Excel.Cells[i,2] := 'Инв. №';

Смотрите также:

"Автоматизация обработки заявок ООО "Проектно-Строительная Компания"
"Автоматизация процесса аттестации персонала для ООО "Нэт Бай Нэт Холдинг"
"Анализ интернет-активности конкурентов ( на примере конкурентов "Газпром нефть")
"Бухгалтерский учёт и аудит расчётов с подотчётними лицами в организации на примере ООО "ЛОЦ 10""
«Психологическое сопровождение персонала в организации на примере ООО «Крокус»
Cовершенствование деловой оценки персонала в организации (на примере ООО "Даймонд кейтеринг развитие")
IPO - инструмент финансирования деятельности организации. На примере ПАО «Нефтяная компания «Лукойл»
PR как средство продвижения организации (на примере ПАО "Тамбовский завод "Комсомолец им. Н.С. Артемова")
PR-коммуникации в сфере общественного питания (на примере кафе-кондитерской «Cream Cheese»)
SMM как средство повышения эффективности работы учреждений социокультурной сферы (на примере Малого театра)