Дипломная работа: Автоматизация регистрации и обработки заявок на комплектующие для ПК на ООО "Samsung Electronics"

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
101
if chbState.Checked and (dblcbState.KeyValue <> Null) then
begin
if Filter <> '' then
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;
102
end;
//DBNavigator1 привязывается к выбранному DBGrid'у и соответствующему
набору данных:
procedure TfmRequests.DBGrid1Enter(Sender: TObject);
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;
103
//Модуль для формирования отчетов и документов
interface
uses
Windows, SysUtils, Classes, ComObj, DB, Controls, Forms, ADODB, Math,
DBGrids;
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;
104
for i:=0 to NumCol-1 do
begin
//Вывод в шапку таблицы названий полей из DBGrid'а:
Excel.Cells[5,i+1] := ADBGrid.Columns[i].Title.Caption;
//Форматирование заголовка:
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
105
Excel.Cells[i,j+1] :=
FieldByName(ADBGrid.Columns[j].FieldName).AsString;
Next;
end;
end; //with
Excel.Application.EnableEvents := True;
Excel.Visible := True;
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';
Источник: https://baza.diplomsite.ru/previewfile/2210