Разработка ИС учета охраняемых объектов ЧОП "Рубеж-М"

Контекстная диаграмма системы обслуживания и диаграмма декомпозиции. Обоснование необходимости внедрения информационной системы. Обзор существующих программных продуктов. ER-диаграмма системы, описание таблиц базы данных. Используемые системы кодирования.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 27.01.2014
Размер файла 577,2 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

5. Рабочее место пользователя ПЭВМ следует оборудовать подставкой для ног, имеющей ширину не менее 300 мм, глубину не менее 400 мм, регулировку по высоте в пределах до 150 мм и по углу наклона опорной поверхности подставки до 20 град. Поверхность подставки должна быть рифленой и иметь по переднему краю бортик высотой 10 мм.

6. Клавиатуру следует располагать на поверхности стола на расстоянии 100 - 300 мм от края, обращенного к пользователю, или на специальной, регулируемой по высоте рабочей поверхности, отделенной от основной столешницы.

Требования к организации медицинского обслуживания пользователей ПЭВМ

1. Лица, работающие с ПЭВМ более 50% рабочего времени (профессионально связанные с эксплуатацией ПЭВМ), должны проходить обязательные предварительные при поступлении на работу и периодические медицинские осмотры в установленном порядке.

2. Женщины со времени установления беременности переводятся на работы, не связанные с использованием ПЭВМ, или для них ограничивается время работы с ПЭВМ (не более 3-х часов за рабочую смену) при условии соблюдения гигиенических требований, установленных настоящими Санитарными правилами. Трудоустройство беременных женщин следует осуществлять в соответствии с законодательством Российской Федерации.

Требования к проведению государственного санитарно-эпидемиологического надзора и производственного контроля

Государственный санитарно-эпидемиологический надзор за производством и эксплуатацией ПЭВМ осуществляется в соответствии с настоящими Санитарными правилами.

Не допускается реализация и эксплуатация на территории Российской Федерации типов ПЭВМ, не имеющих санитарно-эпидемиологического заключения.

3. Инструментальный контроль за соблюдением требований настоящих Санитарных правил осуществляется в соответствии с действующей нормативной документацией.

4. Производственный контроль за соблюдением санитарных правил осуществляется производителем и поставщиком ПЭВМ, а также предприятиями и организациями, эксплуатирующими ПЭВМ в установленном порядке, в соответствии с действующими санитарными правилами и другими нормативными документами.

5.3 Инструкция по охране труда для сотрудника одела телекоммуникационных технологий

1. Общие требования безопасности

1.1. К работам с ПЭВМ и ВДТ допускаются лица:

- не моложе 18 лет, прошедшие обязательный предварительные при приеме на работу и ежегодные медицинские осмотры в порядке и сроки, установленные Минздравмедпромом России и Госкомсанэпиднадзором России, и не имеющие медицинских противопоказаний для работы с ПЭВМ и ВДТ;

- прошедшие курс обучения принципам работы с вычислительной техникой и специальное обучение работе на ПЭВМ с использованием конкретного программного обеспечения;

- прошедшие вводный инструктаж по электробезопасности с присвоением 1-й квалификационной группы;

- ознакомленные с инструкциями по эксплуатации на используемые на рабочем месте средства оргтехники (собственно ПЭВМ и ВДТ, принтеры, сканеры, источники бесперебойного питания и т.п.).

1.2. К работе с ПЭВМ и ВДТ не допускаются женщины со времени установления беременности и в период кормления ребенка грудью.

2. Требования безопасности перед началом работы

2.1. До включения используемого на рабочем месте оборудования сотрудник обязан:

2.1.1. Осмотреть и привести в порядок рабочее место, убрать с рабочего места все посторонние предметы, которые могут отвлекать внимание и затруднять работу.

2.1.2. Проверить правильность установки стола, стула, подставки под ноги, пюпитра, угол наклона экрана монитора, положение клавиатуры и..

2.1.3. Проверить правильность и надежность заземления оборудования:

2.1.4. Проверить правильность расположения оборудования:

2.1.5. Проверить надежность подключения к системному блоку разъемов периферийного оборудования.

2.1.6. Убедиться в отсутствии засветок, отражений и бликов на экране монитора. Убедиться в отсутствии ярко освещенных предметов в поле зрения при переносе взгляда с экрана монитора на документ. Убедиться, что освещенность документов достаточна для четкого различения их содержания. При возможности, отрегулировать освещение и принять меры к исключению бликов и засветок на экране и в поле зрения.

2.1.7. Убедиться в отсутствии пыли на экране монитора и клавиатуре, при необходимости, протереть их специальной салфеткой.

2.2. Включить оборудование рабочего места в последовательности, установленной инструкциями по эксплуатации на оборудование с учетом характера выполняемых на рабочем месте работ.

2.3. После включения оборудования и запуска используемой программы сотрудник обязан:

- убедиться в отсутствии дрожания и мерцания изображения на экране монитора;

- установить яркость, контрастность, цвет и размер символов, фон экрана, обеспечивающие наиболее комфортное и четкое восприятие изображения.

3. Требования безопасности при выполнении работ

3.1. Сотруднику во время работы запрещается:

- прикасаться к задней панели системного блока при включенном питании;

- переключать разъемы интерфейсных кабелей периферийных устройств при включенном питании;

- закрывать оборудование бумагами и посторонними предметами;

- допускать скапливание бумаг на рабочем месте;

- производить отключение питания во время выполнения активной задачи;

- снимать защитный фильтр с экрана монитора;

- допускать попадание влаги на поверхности устройств;

- производить самостоятельно вскрытие и обслуживание оборудования;

- производить вскрытие или заправку на рабочем месте картриджей лазерных принтеров и копировальной техники;

- прикасаться к нагретым элементам принтеров и копировальной техники;

- работать со снятыми кожухами оборудования, являющегося источниками лазерного и ультрафиолетового излучения;

- располагаться при работе на расстоянии менее 50 см. от экрана монитора.

3.2. Режимы труда и отдыха при работе с ПЭВМ и ВДТ должны организовываться в соответствии с требованиями СанПиН в зависимости от вида и категории трудовой деятельности. Виды трудовой деятельности разделяются на 3 группы : группа А - работа по считыванию информации с экрана ВДТ или ПЭВМ с предварительным запросом, группа Б - работа по вводу информации группа, В - творческая информация в режиме диалога с ЭВМ.

3.3. При наличии ионизаторов, их использование допускается только во время перерывов в работе и при отсутствии людей и помещении.

4. Требования безопасности в аварийных ситуациях

4.1. Обо всех неисправностях в работе оборудования и аварийных ситуациях сообщать непосредственному руководителю.

4.2. При обнаружении обрыва проводов питания или нарушения целости их изоляции, неисправности заземления и других повреждений электрооборудования, появления запаха гари, посторонних звуков в работе оборудования и тестовых сигналов, индицирующих о его неисправности, немедленно прекратить работу и отключить питание.

4.3. При поражении работника электрическим током принять меры по его освобождению от действия тока путем отключения электропитания и до прибытия врача оказать потерпевшему первую медицинскую помощь.

4.4. В случае возгорания оборудования отключить питание, сообщить в пожарную охрану и руководителю, после чего приступить к тушению пожара имеющимися средствами.

5. Требования безопасности по окончании работы

5.1. По окончании работы сотрудник обязан соблюдать следующую последовательность отключения оборудования:

- произвести закрытие всех выполняемых на ПЭВМ задач;

- отключить питание в последовательности, установленной инструкциями по эксплуатации на оборудование с учетом характера выполняемых работ.

5.2. Убрать со стола рабочие материалы и привести в порядок рабочее место.

6. Ответственность за невыполнение инструкций

Лица, допустившие невыполнение или нарушение инструкции по охране труда, привлекаются к дисциплинарной ответственности в соответствии с правилами внутреннего трудового распорядка и, при необходимости, подвергаются внеочередной проверке знаний норм и правил охраны труда.

Заключение

В ходе выполнения дипломного проекта была проведена следующая работа:

рассмотрена система учета охраняемых объектов, выполняемая ЧОП «Рубеж-М» проведен анализ деятельности сотрудников ЧОП «Рубеж-М»;

сформулированы основные задачи автоматизации и выделены ключевые направления и функции разработки;

произведен выбор прикладного программного обеспечения;

проведено проектирование БД и интерфейса ИС;

разработана автоматизированная информационная система учета обслуживаниеных работ нефтяного оборудования.

Разработанная ИС обеспечивает выполнение следующих основных функций:

учет номенклатуры оборудования;

оформление заказа на обслуживание и обслуживание оборудования;

ведение прайс-листа на запчасти и расходные материалы;

формирование выходных документов:

прайс-лист на запчасти и расходные материалы;

договор на обслуживание и обслуживание оборудования;

наряд на выполнение работ;

акт сдачи-приемки работ;

дефектная ведомость;

счет и счет-фактура, выставляемые клиенту;

выполненные работы за период;

формирование статистических диаграмм:

потребность в МТР (материально-технических ресурсах) за период;

статистика расхода МТР за период;

суммы работ за период;

суммы работ по клиентам за период.

Также произведена оценка экономической эффективности разработки ИС учета обслуживаниеных работ нефтяного оборудования.

В рамках дальнейшего развития проекта можно определить автоматизацию других подразделений компании в рамках единой информационной системы предприятия.

Список использованных источников

1. Абляев С.В., Пушкарев Н.Н. Управление человеческими ресурсами на основе компьютерных технологий / Под ред. Н.Ф. Пушкарева. - М: Финансы и статистика, 2009. - 176с.

2. Барановская Т..П., Лойко В..И. и другие Информационные системы и технологии в экономике: Учебник - М.: Финансы и статистика, 2003. - 416 с.

3. Братищенко В.В. Проектирование информационных систем. Иркутск: Изд-во БГУЭП, 2004. 84 с.

4. Бугорский В.Н., Фомин В.И. Информационные системы в экономике: основы информационного бизнеса. Учебное пособие СПб.: СПБГИЭА, 2004.

5. Вендров А.М. CASEтехнологии. Современные методы и средства проектирования информационных систем. М.: Финансы и статистика, 2000.

6. Вендров А.М. Проектирование программного обеспечения экономических информационных систем. М.: Финансы и статистика, 2000.

7. Гагарина Л.Г., Кокорева Е.В., Виснадул Б.Д. Технология разработки программного обеспечения. М.: ИД «ФОРУМ»; ИНФРА-М, 2008. С. 400.

8. Гарсиа-Молина Г., Ульман Дж., Уидом Дж. Системы баз данных. Полный курс. М.: Вильямс, 2003. 1088 с.

9. Грекул В.И., Денищенко Г.Н., Коровкина Н.Л. Проектирование информационных систем. М.: Интернет-университет информационных технологий ИНТУИТ.ру, 2005.

10. Григорьев Ю.А., Ревунков Г.И., Банки данных. М.: Издательство МГТУ имени Н.Э. Баумана, 2002.

11. Гринберг А.С., Горбачев Н.Н., Бондаренко А.С. Информационные технологии управления. - М.: ЮНИТИ-ДАНА, 2008

12. Журнал «Кадровое дело»

13. Ивасенко А.Г., Гридасов А.Ю., Павленко В.А. Информационные технологии в экономике и управлении. - М.: КНОРУС, 2007

14. Информационные технологии управления: Учебное пособие / Под ред. Ю.М. Черкасова. -- М.: ИНФРА-М, 2001. -- 216 с. -- (Серия «Высшее образование») (скачать)

15. Информационные технологии управления: Учебное пособие для ВУЗов под ред. Г.А. Титоренко - М.:ЮНИТИ-ДАНА, 2003. - 439 с.

16. Кауфельд Д. Microsoft Office Access 2003 для «чайников»: Пер. с англ. - М.: «Диалектика», 2006. 320 стр. с ил.

17. Козырев А.А. Информационные технологии в экономике и управлении: Учебник. - СПб.: Изд-во Михайлова В.А., 2008

18. Коннолли Т., Бегг К. Базы данных. Проектирование, реализация и сопровождение. Теория и практика = Database Systems: A Practical Approach to Design, Implementation, and Management. -- 3-е изд. -- М.: Вильямс, 2003. -- 1436 с.

19. Кузнецов С.Д. Основы баз данных. 2-е изд. М.: Интернет-Университет Информационных Технологий; БИНОМ. Лаборатория знаний, 2007. 484 с.

20. Маклаков С. В. Создание информационных систем с AllFusion Modeling Suite. М.: Диалог-МИФИ, 2005.

21. Меняев М.Ф. Информационные технологии управления: Учебное пособие в 3-х кн. Кн. 3. Системы управления организацией - М.: Омега - Л, 2003. - 464 с.

22. Оскерко В.С., Пунчик З.В. Практикум по технологиям баз данных. - Мн.: «БГЭУ», 2004. - 170 с.

23. Петров В.Н. Информационные системы - СПб: Питер, 2003. - 688 с.

24. Рубенкинг Нил Дж. Язык программирования Delphi для «чайников». Введение в Borland Delphi 2006 М.: Диалектика, 2007. 336 с.

25. Саак А.Э., Пахомов Е.В., Тюшняков В.Н. Информационные технологии управления: Учебник для вузов. - СПб.: Питер, 2005. - 320 с.

26. СанПиН 2.2.2/2.4.1340-03. Санитарно-эпидемиологические правила и нормативы. Гигиенические требования к персональным электронно-вычислительным машинам и организации работы. - М: Издательство стандартов, 2003.

27. Семенов М.И. и другие Автоматизированные информационные технологии в экономике: Учебник - М.: Финансы и статистика, 2003. - 416 с.

28. Смирнова, Г.Н. Проектирование экономических информационных систем: Учеб. для вузов / Г.Н. Смирнова, А.А. Сорокин, Ю.Ф. Тельнов; Под ред. Ю.Ф. Тельнова. -М. : Финансы и статистика, 2002. - 512 с. : ил.

29. Советов Б.Я., Цехановский В.В. Информационные технологии: Учебник для ВУЗов - М.: Высшая школа, 2003. - 263 с.

30. Соммервилл Иан. Инженерия программного обеспечения / Пер. с англ. 6-е издание. М.: Вильямс, 2002. 624 с.

31. Уткин В.Б. Информационные системы и технологии в экономике: Учебник - М.: ЮНИТИ-ДАНА, 2003. - 355 с.

32. Хавьер Пашеку. Программирование в Borland Delphi 2006 для профессионалов М.: Вильямс, 2006. 944 с.

33. Хотинская Г.И. Информационные технологии управления: Учебное пособие. - М.: Дело и Сервис, 2003. - 128 с.

34. Хотяшов Э.Н. Проектирование машинной обработки экономической информации. М.:Финансы и статистика, 2001.-246 с.

Приложение 1

Текст программы

program Repair;

uses

Forms,

uMain in 'uMain.pas' {fmMain},

uDM in 'uDM.pas' {DM: TDataModule},

uOrgs in 'uOrgs.pas' {fmOrgs},

uDiapason in 'uDiapason.pas' {fmDiapason},

uCateg in 'uCateg.pas' {fmCateg},

uParts in 'uParts.pas' {fmParts},

uPersonal in 'uPersonal.pas' {fmPersonal},

uProf in 'uProf.pas' {fmProf},

uRep in 'uRep.pas',

uStatistics in 'uStatistics.pas' {fmStatistics},

uStr in 'uStr.pas',

uInfo in 'uInfo.pas' {fmInfo};

{$R *.res}

begin

Application.Initialize;

Application.CreateForm(TfmMain, fmMain);

Application.CreateForm(TDM, DM);

Application.CreateForm(TfmOrgs, fmOrgs);

Application.CreateForm(TfmDiapason, fmDiapason);

Application.CreateForm(TfmCateg, fmCateg);

Application.CreateForm(TfmParts, fmParts);

Application.CreateForm(TfmPersonal, fmPersonal);

Application.CreateForm(TfmProf, fmProf);

Application.CreateForm(TfmStatistics, fmStatistics);

Application.CreateForm(TfmInfo, fmInfo);

Application.Run;

end.

unit uCateg;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, ExtCtrls, Grids, DBGrids, DBCtrls, StdCtrls, Buttons;

type

TfmCateg = class(TForm)

DBGrid1: TDBGrid;

Panel1: TPanel;

bbtIns: TBitBtn;

bbtDel: TBitBtn;

bbtSave: TBitBtn;

bbtExit: TBitBtn;

procedure FormShow(Sender: TObject);

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

procedure bbtInsClick(Sender: TObject);

procedure bbtDelClick(Sender: TObject);

procedure bbtSaveClick(Sender: TObject);

procedure bbtExitClick(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

fmCateg: TfmCateg;

implementation

uses uDM, uParts, DB;

{$R *.dfm}

procedure TfmCateg.FormShow(Sender: TObject);

begin

DM.tbCateg.Open;

DM.tbCateg.Sort := 'Группа';

end;

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

begin

//Набор данных закрывается, если он не используется в других формах:

if not fmParts.Showing then

DM.tbCateg.Close;

end;

procedure TfmCateg.bbtInsClick(Sender: TObject);

begin

DM.tbCateg.Insert;

end;

procedure TfmCateg.bbtDelClick(Sender: TObject);

begin

DM.tbCateg.Delete;

end;

procedure TfmCateg.bbtSaveClick(Sender: TObject);

begin

if DM.tbCateg.State in [dsEdit, dsInsert] then

DM.tbCateg.Post;

end;

procedure TfmCateg.bbtExitClick(Sender: TObject);

begin

Close;

end;

end.

unit uDiapason;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, ComCtrls, Buttons, ExtCtrls;

type

TfmDiapason = class(TForm)

Label1: TLabel;

Label2: TLabel;

dtpDateFrom: TDateTimePicker;

dtpDateTo: TDateTimePicker;

bbtCancel: TBitBtn;

bbtOK: TBitBtn;

Bevel1: TBevel;

private

{ Private declarations }

public

{ Public declarations }

end;

function GetDiapason(var DateFrom, DateTo: TDate): Boolean;

var

fmDiapason: TfmDiapason;

implementation

{$R *.dfm}

//Функция возвращает диапазон дат, заданный пользователем:

function GetDiapason(var DateFrom, DateTo: TDate): Boolean;

begin

fmDiapason.dtpDateFrom.Date := DateFrom;

fmDiapason.dtpDateTo.Date := DateTo;

if fmDiapason.ShowModal = mrOK then begin

DateFrom := fmDiapason.dtpDateFrom.Date;

DateTo := fmDiapason.dtpDateTo.Date;

Result := True;

end

else

Result := False;

end;

end.

unit uDM;

interface

uses

SysUtils, Classes, DB, ADODB;

type

TDM = class(TDataModule)

ADOConnection1: TADOConnection;

tbProf: TADOTable;

dsProf: TDataSource;

tbProfID: TAutoIncField;

tbProfDSDesigner: TWideStringField;

tbOrgs: TADOTable;

dsOrgs: TDataSource;

tbOrgsID: TAutoIncField;

tbOrgsDSDesigner2: TWideStringField;

tbOrgsDSDesigner4: TWideStringField;

tbOrgsDSDesigner5: TWideStringField;

tbOrgsDSDesigner6: TWideStringField;

tbOrgsDSDesigner7: TWideStringField;

tbOrgsDSDesigner8: TWideStringField;

tbInfo: TADOTable;

dsInfo: TDataSource;

tbInfoDSDesigner: TWideStringField;

tbInfoDSDesigner2: TWideStringField;

tbInfoDSDesigner3: TWideStringField;

tbInfoDSDesigner4: TWideStringField;

tbInfoDSDesigner5: TWideStringField;

tbInfoDSDesigner6: TWideStringField;

tbInfoDSDesigner7: TWideStringField;

tbInfoDSDesigner8: TWideStringField;

tbParts: TADOTable;

dsParts: TDataSource;

tbPartsDSDesigner: TAutoIncField;

tbPartsDSDesigner2: TWideStringField;

tbPartsDSDesigner3: TWideStringField;

tbPartsDSDesigner4: TWideStringField;

tbPartsDSDesigner6: TBCDField;

tbPersonal: TADOTable;

dsPersonal: TDataSource;

tbPersonalN: TAutoIncField;

tbPersonalDSDesigner: TWideStringField;

tbPersonalID: TIntegerField;

tbPersonalIntegerField: TStringField;

tbPartsField: TCurrencyField;

dsOrders: TDataSource;

dstOrders: TADODataSet;

dstOrdersN: TAutoIncField;

dstOrdersDSDesigner: TDateTimeField;

dstOrdersDSDesigner2: TDateTimeField;

dstOrdersID: TIntegerField;

dstOrdersID3: TIntegerField;

dstOrdersDSDesigner3: TBCDField;

dstOrdersField: TStringField;

dstOrdersIntegerField: TStringField;

dsJobs: TDataSource;

dstJobs: TADODataSet;

dstJobsN: TIntegerField;

dstJobsStringField: TStringField;

dstJobsField2: TCurrencyField;

dstJobsDSDesigner2: TFloatField;

dsOrderParts: TDataSource;

dstOrderParts: TADODataSet;

dstOrderPartsN: TIntegerField;

dstOrderParts_ID: TIntegerField;

dstOrderPartsDSDesigner2: TBCDField;

dstOrderPartsCurrencyField: TCurrencyField;

dstOrderPartsStringField: TStringField;

dstStatPartsCateg: TADODataSet;

dstStatOrderSum: TADODataSet;

BCDField2: TBCDField;

StringField2: TStringField;

dstStatPartsSum: TADODataSet;

BCDField3: TBCDField;

dstStatClientSum: TADODataSet;

dstEmpJobList: TADODataSet;

dstEmpJobListDSDesigner: TWideStringField;

dstEmpJobListDSDesigner3: TFloatField;

tbCateg: TADOTable;

dsCateg: TDataSource;

tbCategID: TAutoIncField;

tbCategDSDesigner: TWideStringField;

tbOrgsDSDesigner: TWideStringField;

dstJobsID: TAutoIncField;

dstJobsDSDesigner: TDateTimeField;

dstJobsDSDesigner4: TDateTimeField;

dstJobsDSDesigner5: TWideStringField;

dstJobsDSDesigner6: TBCDField;

dstJobsID2: TIntegerField;

tbPartsID: TIntegerField;

tbPartsDSDesigner5: TFloatField;

tbCateg2: TADOTable;

AutoIncField1: TAutoIncField;

WideStringField1: TWideStringField;

dsCateg2: TDataSource;

tbPartsField2: TStringField;

dstOrderPartsDSDesigner: TFloatField;

dstMTRList: TADODataSet;

dstMTRListDSDesigner: TWideStringField;

dstMTRListDSDesigner2: TWideStringField;

dstMTRListDSDesigner3: TWideStringField;

dstMTRListDSDesigner4: TFloatField;

dstMTRListDSDesigner5: TBCDField;

dstMTRListDSDesigner6: TFloatField;

dstMTRList_ID: TIntegerField;

dstEmpJobListDSDesigner2: TBCDField;

dstEmpJobListDSDesigner4: TFloatField;

dstEmpJobListDSDesigner5: TDateTimeField;

dstEmpJobListDSDesigner6: TDateTimeField;

dstStatPartsCategDSDesigner2: TFloatField;

dstStatPartsCategField: TStringField;

dstStatClientSumDSDesigner2: TFloatField;

dstStatClientSumField: TStringField;

dstStatPartsSumField: TStringField;

procedure tbPartsCalcFields(DataSet: TDataSet);

procedure dstJobsCalcFields(DataSet: TDataSet);

procedure dstOrderPartsCalcFields(DataSet: TDataSet);

procedure DataModuleDestroy(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

DM: TDM;

implementation

{$R *.dfm}

//Расчет суммы каждой позиции аксессуаров на складе:

procedure TDM.tbPartsCalcFields(DataSet: TDataSet);

begin

DataSet.FieldByName('Сумма').Value :=

DataSet.FieldByName('Количество').Value * DataSet.FieldByName('Цена').Value;

end;

//Расчет суммы по каждой позиции продукции по заказу:

procedure TDM.dstJobsCalcFields(DataSet: TDataSet);

begin

DataSet.FieldByName('Сумма').Value :=

DataSet.FieldByName('Количество').Value * DataSet.FieldByName('Стоимость').Value;

end;

//Расчет суммы по каждой позиции затраченной аксессуара по заказу:

procedure TDM.dstOrderPartsCalcFields(DataSet: TDataSet);

begin

DataSet.FieldByName('Сумма').Value :=

DataSet.FieldByName('Количество').Value * DataSet.FieldByName('Цена').Value;

end;

procedure TDM.DataModuleDestroy(Sender: TObject);

begin

ADOConnection1.Close;

end;

end.

unit uInfo;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Mask, DBCtrls, Buttons, ExtCtrls;

type

TfmInfo = class(TForm)

Label1: TLabel;

Label2: TLabel;

DBEdit2: TDBEdit;

Label3: TLabel;

DBEdit3: TDBEdit;

Label4: TLabel;

DBEdit4: TDBEdit;

Label6: TLabel;

DBEdit6: TDBEdit;

Label7: TLabel;

DBEdit7: TDBEdit;

Label8: TLabel;

DBEdit8: TDBEdit;

Label9: TLabel;

DBEdit9: TDBEdit;

BitBtn1: TBitBtn;

BitBtn2: TBitBtn;

DBMemo1: TDBMemo;

Bevel1: TBevel;

procedure FormShow(Sender: TObject);

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

procedure BitBtn1Click(Sender: TObject);

procedure BitBtn2Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

fmInfo: TfmInfo;

implementation

uses uDM, DB;

{$R *.dfm}

procedure TfmInfo.FormShow(Sender: TObject);

begin

DM.tbInfo.Open;

end;

procedure TfmInfo.FormClose(Sender: TObject;

var Action: TCloseAction);

begin

DM.tbInfo.Close;

end;

procedure TfmInfo.BitBtn1Click(Sender: TObject);

begin

if DM.tbInfo.State = dsEdit then

DM.tbInfo.Post;

Close;

end;

procedure TfmInfo.BitBtn2Click(Sender: TObject);

begin

DM.tbInfo.Cancel;

Close;

end;

end.

unit uMain;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Buttons, XPMan, ImgList, ActnList, StdActns,

XPStyleActnCtrls, ActnMan, ToolWin, ActnCtrls, ActnMenus, jpeg, ExtCtrls,

DBCtrls, ComCtrls, Grids, DBGrids;

type

TfmMain = class(TForm)

XPManifest1: TXPManifest;

ActionManager1: TActionManager;

ImageList1: TImageList;

FileExit1: TFileExit;

acSpravReq: TAction;

acSpravSpec: TAction;

acSpravClients: TAction;

acSpravStaff: TAction;

acSpravStore: TAction;

acRepStat: TAction;

acSpravGroup: TAction;

Panel2: TPanel;

Panel3: TPanel;

DBGrid2: TDBGrid;

DBGrid1: TDBGrid;

Splitter2: TSplitter;

Panel4: TPanel;

bbtIns: TBitBtn;

bbtDel: TBitBtn;

bbtSave: TBitBtn;

GroupBox1: TGroupBox;

chbDate1: TCheckBox;

chbDate2: TCheckBox;

dtpDate1: TDateTimePicker;

dtpDate2: TDateTimePicker;

chbClient: TCheckBox;

dblcbClient: TDBLookupComboBox;

DBGrid3: TDBGrid;

Splitter1: TSplitter;

acRepMTRList: TAction;

bbtContract: TBitBtn;

bbtAppendix: TBitBtn;

bbtAct: TBitBtn;

bbtBill: TBitBtn;

bbtFact: TBitBtn;

acRepJobs: TAction;

acRepDefect: TAction;

ActionMainMenuBar1: TActionMainMenuBar;

procedure acSpravReqExecute(Sender: TObject);

procedure acSpravSpecExecute(Sender: TObject);

procedure acSpravClientsExecute(Sender: TObject);

procedure acSpravStaffExecute(Sender: TObject);

procedure acSpravStoreExecute(Sender: TObject);

procedure acRepStatExecute(Sender: TObject);

procedure acSpravGroupExecute(Sender: TObject);

procedure FormShow(Sender: TObject);

procedure bbtPrintClick(Sender: TObject);

procedure DBGrid1TitleClick(Column: TColumn);

procedure chbDate1Click(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure bbtInsClick(Sender: TObject);

procedure bbtSaveClick(Sender: TObject);

procedure bbtDelClick(Sender: TObject);

procedure DBGrid3EditButtonClick(Sender: TObject);

procedure DBGrid1Exit(Sender: TObject);

procedure DBGrid2Exit(Sender: TObject);

procedure DBGrid3Exit(Sender: TObject);

procedure acRepMTRListExecute(Sender: TObject);

procedure bbtContractClick(Sender: TObject);

procedure bbtAppendixClick(Sender: TObject);

procedure bbtActClick(Sender: TObject);

procedure bbtBillClick(Sender: TObject);

procedure bbtFactClick(Sender: TObject);

procedure acRepJobsExecute(Sender: TObject);

procedure acRepDefectExecute(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

fmMain: TfmMain;

implementation

uses FileCtrl, uInfo, uProf, uOrgs, uDM, uPersonal, uParts, uStatistics,

uDiapason, uRep, uCateg, ADODB, DB;

var

GridID: 1..3; //Хранит номер таблицы-Грида на форме

{$R *.dfm}

procedure TfmMain.acSpravReqExecute(Sender: TObject);

begin

fmInfo.Show;

end;

procedure TfmMain.acSpravSpecExecute(Sender: TObject);

begin

fmProf.Show;

end;

procedure TfmMain.acSpravClientsExecute(Sender: TObject);

begin

fmOrgs.Show;

end;

procedure TfmMain.acSpravStaffExecute(Sender: TObject);

begin

fmPersonal.Show;

end;

procedure TfmMain.acSpravStoreExecute(Sender: TObject);

begin

fmParts.Show;

end;

procedure TfmMain.acRepStatExecute(Sender: TObject);

begin

fmStatistics.Show;

end;

procedure TfmMain.acSpravGroupExecute(Sender: TObject);

begin

fmCateg.Show;

end;

procedure TfmMain.FormShow(Sender: TObject);

begin

DM.dstOrders.Open;

DM.dstJobs.Open;

DM.dstOrderParts.Open;

dtpDate1.Date := Date;

dtpDate2.Date := Date;

chbDate1Click(Self);

DBGrid1.SetFocus;

end;

procedure TfmMain.bbtPrintClick(Sender: TObject);

begin

Rep_Universal(DBGrid1, 7, 'Журнал заказов');

end;

//Сортировка данных по выбранному полю:

procedure TfmMain.DBGrid1TitleClick(Column: TColumn);

begin

try

(DBGrid1.DataSource.DataSet as TADODataset).Sort := Column.FieldName;

except

Application.MessageBox('Сортировка по данному полю невозможна', 'Информация', MB_OK+MB_ICONINFORMATION)

end;

end;

procedure TfmMain.chbDate1Click(Sender: TObject);

var

Filter: string;

begin

Filter := '';

if chbDate1.Checked then

begin

if Filter <> '' then

Filter := Filter + ' and ';

Filter := Filter + 'ДатаПриема >= ' + QuotedStr(DateToStr(dtpDate1.Date));

end;

if chbDate2.Checked then

begin

if Filter <> '' then

Filter := Filter + ' and ';

Filter := Filter + 'ДатаПриема <= ' + QuotedStr(DateToStr(dtpDate2.Date));

end;

if chbClient.Checked and (dblcbClient.KeyValue <> Null) then

begin

if Filter <> '' then

Filter := Filter + ' and ';

Filter := Filter + 'КлиентID = ' + IntToStr(dblcbClient.KeyValue);

end;

if Filter <> '' then

begin

DM.dstOrders.Filter := Filter;

DM.dstOrders.Filtered := True;

end

else

DM.dstOrders.Filtered := False;

end;

procedure TfmMain.FormCreate(Sender: TObject);

begin

dtpDate1.Date := Date;

dtpDate2.Date := Date;

bbtContract.Caption := 'Печать' + Chr(10) + 'договора';

bbtAppendix.Caption := 'Печать' + Chr(10) + 'Приложения';

bbtAct.Caption := 'Печать акта' + Chr(10) + 'сдачи-приемки';

bbtFact.Caption := 'Печать' + Chr(10) + 'счета-фактуры';

end;

//В зависимости от номера Грида, в котором находился курсор до нажатия кнопки,

//выполняется добавление записи в соответствующий набор данных:

procedure TfmMain.bbtInsClick(Sender: TObject);

begin

case GridID of

1: DM.dstOrders.Insert;

2: DM.dstJobs.Insert;

3: DM.dstOrderParts.Insert;

end;

end;

//В зависимости от номера Грида, в котором находился курсор до нажатия кнопки,

//выполняется сохранение записи в соответствующий набор данных:

procedure TfmMain.bbtSaveClick(Sender: TObject);

begin

case GridID of

1: if DM.dstOrders.State in [dsEdit, dsInsert] then

DM.dstOrders.Post;

2: if DM.dstJobs.State in [dsEdit, dsInsert] then

DM.dstJobs.Post;

3: if DM.dstOrderParts.State in [dsEdit, dsInsert] then

DM.dstOrderParts.Post;

end;

end;

//В зависимости от номера Грида, в котором находился курсор до нажатия кнопки,

//выполняется удаление записи в соответствующий набор данных:

procedure TfmMain.bbtDelClick(Sender: TObject);

begin

case GridID of

1: DM.dstOrders.Delete;

2: DM.dstJobs.Delete;

3: DM.dstOrderParts.Delete;

end;

end;

//При щелчке по кнопке "..." в ячейке "Запчасть" в DBGrid1 на экран выводится

//завпчастей для выбора нужного из списка:

procedure TfmMain.DBGrid3EditButtonClick(Sender: TObject);

begin

fmParts.bbtGo.Visible := True;

if fmParts.ShowModal = mrOK then

begin

if not (DM.dstOrderParts.State in [dsEdit, dsInsert]) then

DM.dstOrderParts.Edit;

DM.dstOrderParts.FieldByName('МЦ_ID').Value := DM.tbParts.FieldByName('Шифр').Value;

DM.dstOrderParts.FieldByName('Цена').Value := DM.tbParts.FieldByName('Цена').Value

end;

fmParts.bbtGo.Visible := False;

end;

procedure TfmMain.DBGrid1Exit(Sender: TObject);

begin

GridID := 1;

end;

procedure TfmMain.DBGrid2Exit(Sender: TObject);

begin

GridID := 2;

end;

procedure TfmMain.DBGrid3Exit(Sender: TObject);

begin

GridID := 3;

end;

procedure TfmMain.bbtContractClick(Sender: TObject);

begin

Rep_Contract;

end;

procedure TfmMain.bbtAppendixClick(Sender: TObject);

begin

Rep_Appendix;

end;

procedure TfmMain.bbtActClick(Sender: TObject);

begin

Rep_Act;

end;

procedure TfmMain.bbtBillClick(Sender: TObject);

begin

Rep_Bill;

end;

procedure TfmMain.bbtFactClick(Sender: TObject);

begin

Rep_Fact;

end;

procedure TfmMain.acRepMTRListExecute(Sender: TObject);

var

Date1, Date2: TDate;

begin

Date1 := Date;

Date2 := Date;

if GetDiapason(Date1, Date2) then

Rep_MTR(Date1, Date2);

end;

procedure TfmMain.acRepJobsExecute(Sender: TObject);

var

Date1, Date2: TDate;

begin

Date1 := Date;

Date2 := Date;

if GetDiapason(Date1, Date2) then

Rep_JobList(Date1, Date2);

end;

procedure TfmMain.acRepDefectExecute(Sender: TObject);

begin

Rep_Defect;

end;

end.

unit uOrgs;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, ExtCtrls, Grids, DBGrids, DBCtrls, StdCtrls, Buttons, Mask;

type

TfmOrgs = class(TForm)

Panel1: TPanel;

bbtExit: TBitBtn;

Panel2: TPanel;

DBGrid1: TDBGrid;

bbtPrint: TBitBtn;

GroupBox1: TGroupBox;

DBEdit1: TDBEdit;

Label1: TLabel;

Label5: TLabel;

DBEdit5: TDBEdit;

Label3: TLabel;

DBEdit3: TDBEdit;

DBEdit6: TDBEdit;

Label6: TLabel;

DBMemo1: TDBMemo;

Label7: TLabel;

Label8: TLabel;

DBEdit8: TDBEdit;

Label9: TLabel;

DBEdit9: TDBEdit;

bbtIns: TBitBtn;

bbtDel: TBitBtn;

bbtSave: TBitBtn;

procedure FormShow(Sender: TObject);

procedure bbtPrintClick(Sender: TObject);

procedure DBGrid1TitleClick(Column: TColumn);

procedure bbtInsClick(Sender: TObject);

procedure bbtDelClick(Sender: TObject);

procedure bbtSaveClick(Sender: TObject);

procedure bbtExitClick(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

fmOrgs: TfmOrgs;

implementation

uses uDM, uRep, ADODB, DB;

{$R *.dfm}

procedure TfmOrgs.FormShow(Sender: TObject);

begin

DM.tbOrgs.Open;

end;

procedure TfmOrgs.bbtPrintClick(Sender: TObject);

begin

Rep_Universal(DBGrid1, 7, 'Организации-заказчики');

end;

//Сортировка данных в таблице по выбранному столбцу:

procedure TfmOrgs.DBGrid1TitleClick(Column: TColumn);

begin

try

(DBGrid1.DataSource.DataSet as TADOTable).Sort := Column.FieldName;

except

Application.MessageBox('Сортировка по данному полю невозможна', 'Информация', MB_OK+MB_ICONINFORMATION)

end;

end;

procedure TfmOrgs.bbtInsClick(Sender: TObject);

begin

DM.tbOrgs.Insert;

end;

procedure TfmOrgs.bbtDelClick(Sender: TObject);

begin

DM.tbOrgs.Delete;

end;

procedure TfmOrgs.bbtSaveClick(Sender: TObject);

begin

if DM.tbOrgs.State in [dsEdit, dsInsert] then

DM.tbOrgs.Post;

end;

procedure TfmOrgs.bbtExitClick(Sender: TObject);

begin

Close;

end;

end.

unit uParts;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, ExtCtrls, Grids, DBGrids, DBCtrls, StdCtrls, Buttons;

type

TfmParts = class(TForm)

DBGrid1: TDBGrid;

Panel1: TPanel;

bbtGo: TBitBtn;

bbtIns: TBitBtn;

bbtDel: TBitBtn;

bbtSave: TBitBtn;

bbtPrint: TBitBtn;

bbtExit: TBitBtn;

Panel2: TPanel;

dblcbGroup: TDBLookupComboBox;

CheckBox1: TCheckBox;

GroupBox1: TGroupBox;

edName: TEdit;

procedure bbtPrintClick(Sender: TObject);

procedure bbtExitClick(Sender: TObject);

procedure bbtInsClick(Sender: TObject);

procedure bbtDelClick(Sender: TObject);

procedure bbtSaveClick(Sender: TObject);

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

procedure CheckBox1Click(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure FormShow(Sender: TObject);

procedure edNameChange(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

fmParts: TfmParts;

implementation

uses uDM, uRep, ADODB, DB, uCateg;

{$R *.dfm}

procedure TfmParts.bbtPrintClick(Sender: TObject);

begin

if CheckBox1.Checked then

Rep_Universal(DBGrid1, 7, dblcbGroup.Text + ' на складе')

else

Rep_Universal(DBGrid1, 7, 'МТР на складе');

end;

procedure TfmParts.bbtExitClick(Sender: TObject);

begin

Close;

end;

procedure TfmParts.bbtInsClick(Sender: TObject);

begin

DM.tbParts.Insert;

end;

procedure TfmParts.bbtDelClick(Sender: TObject);

begin

DM.tbParts.Delete;

end;

procedure TfmParts.bbtSaveClick(Sender: TObject);

begin

if DM.tbParts.State in [dsEdit, dsInsert] then

DM.tbParts.Post;

end;

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

begin

//Набор данных закрывается, если он не используется в других формах:

if not fmCateg.Showing then

DM.tbCateg.Close;

end;

//В зависимости от состояния флажка выполняется отбор запчастей по выбранному виду МТР:

procedure TfmParts.CheckBox1Click(Sender: TObject);

begin

if CheckBox1.Checked then

begin

DM.tbCateg.Open;

DBGrid1.Columns[6].Visible := False; //Скрывается поле вида МТР

end

else

begin

DM.tbCateg.Close;

DBGrid1.Columns[6].Visible := True; //Отображается поле вида МТР

end;

DM.tbParts.Requery([]);

end;

procedure TfmParts.FormCreate(Sender: TObject);

begin

DM.tbCateg.Open;

DM.tbCateg.Sort := 'Группа';

DM.tbCateg.First;

DM.tbParts.Open;

DM.tbParts.Sort := 'ГруппаID, Наименование';

dblcbGroup.KeyValue := DM.tbCateg.FieldByName('ID').Value;

end;

procedure TfmParts.FormShow(Sender: TObject);

begin

CheckBox1Click(Self);

end;

//Поиск МТР по наименованию:

procedure TfmParts.edNameChange(Sender: TObject);

begin

DM.tbParts.Locate('Наименование', edName.Text, [loPartialKey, loCaseInsensitive]);

end;

end.

unit uPersonal;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, ExtCtrls, Grids, DBGrids, DBCtrls, StdCtrls, Buttons;

type

TfmPersonal = class(TForm)

DBGrid1: TDBGrid;

Panel1: TPanel;

bbtIns: TBitBtn;

bbtDel: TBitBtn;

bbtSave: TBitBtn;

bbtPrint: TBitBtn;

bbtExit: TBitBtn;

procedure FormShow(Sender: TObject);

procedure DBGrid1TitleClick(Column: TColumn);

procedure bbtPrintClick(Sender: TObject);

procedure bbtExitClick(Sender: TObject);

procedure bbtInsClick(Sender: TObject);

procedure bbtDelClick(Sender: TObject);

procedure bbtSaveClick(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

fmPersonal: TfmPersonal;

implementation

uses uDM, uRep, ADODB, DB;

{$R *.dfm}

procedure TfmPersonal.FormShow(Sender: TObject);

begin

DM.tbPersonal.Open;

end;

//Сортировка данных в таблице по выбранному столбцу:

procedure TfmPersonal.DBGrid1TitleClick(Column: TColumn);

begin

try

(DBGrid1.DataSource.DataSet as TADOTable).Sort := Column.FieldName;

except

Application.MessageBox('Сортировка по данному полю невозможна', 'Информация', MB_OK+MB_ICONINFORMATION)

end;

end;

procedure TfmPersonal.bbtPrintClick(Sender: TObject);

begin

Rep_Universal(DBGrid1, 3, 'Ответственные лица');

end;

procedure TfmPersonal.bbtExitClick(Sender: TObject);

begin

Close;

end;

procedure TfmPersonal.bbtInsClick(Sender: TObject);

begin

DM.tbPersonal.Insert;

end;

procedure TfmPersonal.bbtDelClick(Sender: TObject);

begin

DM.tbPersonal.Delete;

end;

procedure TfmPersonal.bbtSaveClick(Sender: TObject);

begin

if DM.tbPersonal.State in [dsEdit, dsInsert] then

DM.tbPersonal.Post;

end;

end.

unit uProf;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, ExtCtrls, Grids, DBGrids, DBCtrls, StdCtrls, Buttons;

type

TfmProf = class(TForm)

DBGrid1: TDBGrid;

Panel1: TPanel;

bbtIns: TBitBtn;

bbtDel: TBitBtn;

bbtSave: TBitBtn;

bbtExit: TBitBtn;

procedure FormShow(Sender: TObject);

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

procedure bbtInsClick(Sender: TObject);

procedure bbtDelClick(Sender: TObject);

procedure bbtSaveClick(Sender: TObject);

procedure bbtExitClick(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

fmProf: TfmProf;

implementation

uses uDM, uPersonal, DB;

{$R *.dfm}

procedure TfmProf.FormShow(Sender: TObject);

begin

DM.tbProf.Open;

end;

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

begin

//Набор данных закрывается, если он не используется в других формах:

if not fmPersonal.Showing then

DM.tbProf.Close;

end;

procedure TfmProf.bbtInsClick(Sender: TObject);

begin

DM.tbProf.Insert;

end;

procedure TfmProf.bbtDelClick(Sender: TObject);

begin

DM.tbProf.Delete;

end;

procedure TfmProf.bbtSaveClick(Sender: TObject);

begin

if DM.tbProf.State in [dsEdit, dsInsert] then

DM.tbProf.Post;

end;

procedure TfmProf.bbtExitClick(Sender: TObject);

begin

Close;

end;

end.

unit uRep;

//Модуль для формирования отчетов и документов

interface

uses

Windows, SysUtils, Classes, ComObj, DB, Controls, Forms, ADODB, Math, DBGrids;

procedure Rep_Universal(ADBGrid: TDBGrid; NumCol: Integer; ACaption: string);

procedure Rep_MTR(Date1, Date2: TDate);

procedure Rep_JobList(Date1, Date2: TDate);

procedure Rep_Contract;

procedure Rep_Appendix;

procedure Rep_Act;

procedure Rep_Bill;

procedure Rep_Fact;

procedure Rep_Defect;

function GetRightDate(ADate: TDateTime): string;

implementation

uses

uDM, DateUtils, Dialogs, uStr;

//Формирование отчета по выбранному набору данных (вывод заголовков видимых

//полей и их значений):

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;

//Форматирование заголовка:

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

begin

Excel.Cells[i,j+1].NumberFormat := '@';

Excel.Cells[i,j+1] := FieldByName(ADBGrid.Columns[j].FieldName).DisplayText;

end;

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_MTR(Date1, Date2: TDate);

var

WorkbookName, Categ: string;

Excel: Variant;

i, j, PosInc: Integer;

Sum, SumItogo: Currency;

//Добавление новой шапки таблицы для новой категории МТР:

procedure AddHeader;

begin

if DM.dstMTRList.FieldByName('Группа').AsString <> Categ then

begin

Excel.Cells[i+PosInc,7] := Sum;

Sum := 0;

j := 0;

Inc(i,2);

Excel.Rows.Item[PosInc+i].Select;

Excel.Selection.Insert;

Excel.Selection.Insert;

Excel.Selection.Insert;

Excel.Selection.Insert;

Excel.Selection.Insert;

Excel.Rows.Item[3].Select;

Excel.Selection.Copy;

Excel.Rows.Item[PosInc+i].Select;

Excel.ActiveSheet.Paste;

Excel.Rows.Item[4].Select;

Excel.Selection.Copy;

Excel.Rows.Item[PosInc+i+1].Select;

Excel.ActiveSheet.Paste;

Excel.Rows.Item[5].Select;

Excel.Selection.Copy;

Excel.Rows.Item[PosInc+i+2].Select;

Excel.ActiveSheet.Paste;

//Копирование строки "Итого":

Excel.Rows.Item[PosInc+i-2].Select;

Excel.Selection.Copy;

Excel.Rows.Item[PosInc+i+3].Select;

Excel.ActiveSheet.Paste;

Excel.Application.CutCopyMode := False;

Categ := DM.dstMTRList.FieldByName('Группа').AsString;

Excel.Cells[PosInc+i,3] := Categ;

Inc(i,2);

end;

end;

begin

//Шаблон хранится в папке Шаблоны:

WorkbookName := GetCurrentDir + '\Templates\' + 'Потребность МТР.xlt';

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

Screen.Cursor := crHourGlass;

try

try

Excel.Workbooks.Open(WorkbookName);

//Экспорт данных из таблицы БД:

with DM do

begin

i := 0;

SumItogo := 0; //Общая сумма МТР

Sum := 0; //Cумма по виду МТР

PosInc := 5;

Excel.Cells[1,1] := 'Потребность в МТР за период' + Chr(10) +

'с ' + DateToStr(Date1) + ' по ' + DateToStr(Date2);

//Запрос перечня потребности в МТР за заданный период:

dstMTRList.Parameters.ParamByName('pDate1').Value := Date1;

dstMTRList.Parameters.ParamByName('pDate2').Value := Date2;

dstMTRList.Parameters.ParamByName('pDate11').Value := Date1;

dstMTRList.Parameters.ParamByName('pDate22').Value := Date2;

dstMTRList.Open;

dstMTRList.First;

Categ := dstMTRList.FieldByName('Группа').AsString;

Excel.Cells[3,3] := Categ;

//Цикл по МТР:

while not dstMTRList.Eof do

begin

AddHeader;

//Добавление новой строки для МТР:

if j <> 0 then

begin

Excel.Rows.Item[PosInc+i].Select;

Excel.Selection.Insert;

Excel.Rows.Item[5].Select;

Excel.Selection.Copy;

Excel.Rows.Item[PosInc+i].Select;

Excel.ActiveSheet.Paste;

Excel.Application.CutCopyMode := False;

end;

Excel.Cells[i+PosInc,1] := j+1;

Excel.Cells[i+PosInc,2] := FormatFloat('0000', dstMTRList.FieldByName('МЦ_ID').AsInteger);

Excel.Cells[i+PosInc,3] := dstMTRList.FieldByName('Наименование').AsString;

Excel.Cells[i+PosInc,4] := dstMTRList.FieldByName('ЕдИзм').AsString;

Excel.Cells[i+PosInc,5] := dstMTRList.FieldByName('Количество').AsFloat;

Excel.Cells[i+PosInc,6] := dstMTRList.FieldByName('Цена').AsCurrency;

Excel.Cells[i+PosInc,7] := dstMTRList.FieldByName('Сумма').AsCurrency;

Sum := Sum + dstMTRList.FieldByName('Сумма').AsCurrency;

SumItogo := SumItogo + dstMTRList.FieldByName('Сумма').AsCurrency;

Inc(i);

Inc(j);

dstMTRList.Next;

end; //while not dstMTRList.Eof

dstMTRList.Close;

Excel.Cells[i+PosInc,7] := Sum;

Excel.Cells[i+7,7] := SumItogo;

end; //with

Excel.Visible := True;

except

Excel.Quit;

end;

finally

Screen.Cursor := crDefault;

end;

end;

//Формирование списка выполненных работ за указанный диапазон дат:

procedure Rep_JobList(Date1, Date2: TDate);

var

WorkbookName: string;

Excel: Variant;

i, PosInc: Integer;

Sum: Currency;

begin

//Шаблон хранится в папке Шаблоны:

WorkbookName := GetCurrentDir + '\Templates\' + 'Работы.xlt';

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

Screen.Cursor := crHourGlass;

try

try

Excel.Workbooks.Open(WorkbookName);

//Экспорт данных из таблицы БД:

with DM do

begin

i := 0;

PosInc := 4;

Excel.Cells[1,1] := 'Выполненные работы за период' + Chr(10) +

'за период с ' + DateToStr(Date1) + ' по ' + DateToStr(Date2);

//Запрос перечня работ за заданный период:

dstEmpJobList.Parameters.ParamByName('pDate1').Value := Date1;

dstEmpJobList.Parameters.ParamByName('pDate2').Value := Date2;

dstEmpJobList.Parameters.ParamByName('pDate11').Value := Date1;

dstEmpJobList.Parameters.ParamByName('pDate22').Value := Date2;

dstEmpJobList.Open;

Sum := 0; //Сумма работ

dstEmpJobList.First;

//Цикл по работам:

while not dstEmpJobList.Eof do

begin

//Добавление новой строки для работы:

if i <> 0 then

begin

Excel.Rows.Item[PosInc+i].Select;

Excel.Selection.Insert;

Excel.Rows.Item[PosInc+i-1].Select;

Excel.Selection.Copy;

Excel.Rows.Item[PosInc+i].Select;

Excel.ActiveSheet.Paste;

Excel.Application.CutCopyMode := False;

end;

Excel.Cells[i+PosInc,1] := i+1;

Excel.Cells[i+PosInc,2] := dstEmpJobList.FieldByName('ДатаС').AsString;

Excel.Cells[i+PosInc,3] := dstEmpJobList.FieldByName('ДатаПо').AsString;

Excel.Cells[i+PosInc,4] := dstEmpJobList.FieldByName('Работа').AsString;

Excel.Cells[i+PosInc,5] := dstEmpJobList.FieldByName('Количество').AsFloat;

Excel.Cells[i+PosInc,6] := dstEmpJobList.FieldByName('Стоимость').AsCurrency;

Excel.Cells[i+PosInc,7] := dstEmpJobList.FieldByName('Сумма').AsCurrency;

Inc(i);

Sum := Sum + dstEmpJobList.FieldByName('Сумма').AsCurrency;

dstEmpJobList.Next;

end; //while not dstEmpJobList.Eof

Excel.Cells[i+PosInc,7] := Sum;

dstEmpJobList.Close;

end; //with

Excel.Visible := True;

except

Excel.Quit;

end;

finally

Screen.Cursor := crDefault;

end;

end;

//Формирование договора:

procedure Rep_Contract;

var

ObjWord: Variant;

begin

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

Screen.Cursor := crHourGlass;

try

try

ObjWord.Documents.Open(GetCurrentDir + '\Templates\Договор.dot');

//Данные договора и заказа:

ObjWord.Selection.Goto(Name := 'НомерДог');

ObjWord.Selection.TypeText(Text := FormatFloat('0000', DM.dstOrders.FieldByName('NЗаказа').AsFloat));

ObjWord.Selection.Goto(Name := 'ДатаДог');

ObjWord.Selection.TypeText(Text := GetRightDate(DM.dstOrders.FieldByName('ДатаПриема').AsDateTime));

ObjWord.Selection.Goto(Name := 'ДатаЗаказа');

ObjWord.Selection.TypeText(Text := GetRightDate(DM.dstOrders.FieldByName('ДатаПриема').AsDateTime));

ObjWord.Selection.Goto(Name := 'ДатаОконч');

ObjWord.Selection.TypeText(Text := GetRightDate(DM.dstOrders.FieldByName('ДатаСдачи').AsDateTime));

//Данные клиента:

ObjWord.Selection.Goto(Name := 'Заказчик');

ObjWord.Selection.TypeText(Text := DM.tbOrgs.FieldByName('Наименование').AsString);

ObjWord.Selection.Goto(Name := 'Заказчик2');

ObjWord.Selection.TypeText(Text := DM.tbOrgs.FieldByName('Наименование').AsString);

ObjWord.Selection.Goto(Name := 'Адрес');

ObjWord.Selection.TypeText(Text := DM.tbOrgs.FieldByName('Адрес').AsString);

ObjWord.Selection.Goto(Name := 'ИННЗак');

ObjWord.Selection.TypeText(Text := DM.tbOrgs.FieldByName('ИНН').AsString);

ObjWord.Selection.Goto(Name := 'РеквизитыЗак');

ObjWord.Selection.TypeText(Text := DM.tbOrgs.FieldByName('Реквизиты').AsString);

//Реквизиты компании:

DM.tbInfo.Open;

ObjWord.Selection.Goto(Name := 'Орг');

ObjWord.Selection.TypeText(Text := DM.tbInfo.FieldByName('Наименование').AsString);

ObjWord.Selection.Goto(Name := 'Орг2');

ObjWord.Selection.TypeText(Text := DM.tbInfo.FieldByName('Наименование').AsString);

ObjWord.Selection.Goto(Name := 'ЮрАдрес');

ObjWord.Selection.TypeText(Text := DM.tbInfo.FieldByName('Адрес').AsString);

ObjWord.Selection.Goto(Name := 'ПочтАдрес');

ObjWord.Selection.TypeText(Text := DM.tbInfo.FieldByName('Адрес').AsString);

ObjWord.Selection.Goto(Name := 'ИНН');

ObjWord.Selection.TypeText(Text := DM.tbInfo.FieldByName('ИНН').AsString);

ObjWord.Selection.Goto(Name := 'Реквизиты');

ObjWord.Selection.TypeText(Text := DM.tbInfo.FieldByName('Реквизиты').AsString);

ObjWord.Selection.Goto(Name := 'ГенДир');

ObjWord.Selection.TypeText(Text := DM.tbInfo.FieldByName('ГенДиректор').AsString);

ObjWord.Selection.Goto(Name := 'ГенДир2');

ObjWord.Selection.TypeText(Text := DM.tbInfo.FieldByName('ГенДиректор').AsString);

DM.tbInfo.Close;

ObjWord.Visible := True;

except

ObjWord.Quit;

end;

finally

Screen.Cursor := crDefault;

end;

end;

//Формирование списка работ по Договору (приложения к Договору):

procedure Rep_Appendix;

var

WorkbookName: string;

Excel: Variant;

i, j, PosInc: Integer;

Sum, SumItogo: Currency;

begin

//Шаблон хранится в папке Шаблоны:

WorkbookName := GetCurrentDir + '\Templates\' + 'Прил к Договору.xlt';

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

Screen.Cursor := crHourGlass;

try

try

Excel.Workbooks.Open(WorkbookName);

//Экспорт данных из таблицы БД:

with DM do

begin

i := 0;

j := 0;

SumItogo := 0; //Общая сумма работ

PosInc := 7;

Excel.Cells[1,4] := FormatFloat('0000', dstOrders.FieldByName('NЗаказа').AsInteger) +

' от ' + GetRightDate(dstOrders.FieldByName('ДатаПриема').AsDateTime);

Excel.Cells[3,2] := dstOrders.FieldByName('Клиент').AsString;

//Цикл по работам:

dstJobs.First;

Sum := 0; //Сумма работ

while not dstJobs.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] := i+1;

Excel.Cells[i+PosInc,2] := dstJobs.FieldByName('Работа').AsString;

Excel.Cells[i+PosInc,3] := dstJobs.FieldByName('Работник').AsString;

Excel.Cells[i+PosInc,4] := dstJobs.FieldByName('Стоимость').AsCurrency;

Excel.Cells[i+PosInc,5] := FormatFloat('0,00', dstJobs.FieldByName('Количество').AsFloat);

Excel.Cells[i+PosInc,6] := dstJobs.FieldByName('Сумма').AsCurrency;

Inc(i);

Sum := Sum + dstJobs.FieldByName('Сумма').AsCurrency;

dstJobs.Next;

end; //while not dstJobs.Eof

Excel.Cells[i+PosInc,6] := Sum;

Inc(i, 4);

SumItogo := SumItogo + Sum;

//Цикл по МТР:

dstOrderParts.First;

Sum := 0; //Сумма МТР

while not dstOrderParts.Eof do

begin

//Добавление новой строки для МТР:

if j <> 0 then

begin

Excel.Rows.Item[PosInc+i].Select;

Excel.Selection.Insert;

Excel.Rows.Item[PosInc+i-1].Select;

Excel.Selection.Copy;

Excel.Rows.Item[PosInc+i].Select;

Excel.ActiveSheet.Paste;

Excel.Application.CutCopyMode := False;

end;

Excel.Cells[i+PosInc,1] := j+1;

Excel.Cells[i+PosInc,2] := dstOrderParts.FieldByName('Материал').AsString;

Excel.Cells[i+PosInc,3] := tbParts.FieldByName('ЕдИзм').AsString;

Excel.Cells[i+PosInc,4] := dstOrderParts.FieldByName('Цена').AsCurrency;

Excel.Cells[i+PosInc,5] := FormatFloat('0,00', dstOrderParts.FieldByName('Количество').AsFloat);

Excel.Cells[i+PosInc,6] := dstOrderParts.FieldByName('Сумма').AsCurrency;

Inc(j);

Inc(i);

Sum := Sum + dstOrderParts.FieldByName('Сумма').AsCurrency;

dstOrderParts.Next;

end; //while not dstJobs.Eof

Excel.Cells[i+PosInc,6] := Sum;

SumItogo := SumItogo + Sum;

Excel.Cells[i+PosInc+2,6] := SumItogo;

Excel.Cells[i+PosInc+4,2] := SumToTxt(Format('%.2f', [SumItogo]));

Excel.Cells[i+PosInc+5,4] := dstOrders.FieldByName('Работник').AsString;

end; //with

Excel.Visible := True;

except

Excel.Quit;

end;

finally

Screen.Cursor := crDefault;

end;

end;

//Формирование акта сдачи-приемки:

procedure Rep_Act;

var

WorkbookName: string;

Excel: Variant;

i, PosInc: Integer;

Sum: Currency;

begin

//Шаблон хранится в папке Шаблоны:

WorkbookName := GetCurrentDir + '\Templates\' + 'Акт.xlt';

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

Screen.Cursor := crHourGlass;

try

try

Excel.Workbooks.Open(WorkbookName);

//Экспорт данных из таблицы БД:

with DM do

begin

i := 0;

PosInc := 14;

//Вывод реквизитов в шапку:

DM.tbInfo.Open;

Excel.Cells[1,1] := DM.tbInfo.FieldByName('Наименование').AsString;

Excel.Cells[2,1] := DM.tbInfo.FieldByName('Адрес').AsString;

Excel.Cells[3,1] := 'ИНН ' + DM.tbInfo.FieldByName('ИНН').AsString +

', КПП ' + DM.tbInfo.FieldByName('КПП').AsString;

Excel.Cells[7,2] := DM.tbInfo.FieldByName('Наименование').AsString;

DM.tbInfo.Close;

Excel.Cells[8,2] := dstOrders.FieldByName('Клиент').AsString;


Подобные документы

  • Выделение бизнес-процессов, контекстная диаграмма потоков данных. Разработка информационной системы, содержащей сведения о номерах гостиницы: категория, количество мест, стоимость проживания за сутки. Диаграммы декомпозиции в нотации DFD, IDEF3.

    курсовая работа [3,0 M], добавлен 28.06.2011

  • Назначение программы "Учёт пациентов" и её подсистемы. Диаграмма классов предметной области, диаграмма последовательностей, описание автоматизируемых функций и характеристика функциональной структуры. Физическая схема и описание таблиц базы данных.

    дипломная работа [3,3 M], добавлен 15.11.2016

  • Проектирование модели информационной системы "Склад" с помощью AllFusion Process Modeler 4.1 (Bpwin4.1). Диаграмма дерева узлов AS-TO-BE и AS-IS. ER-диаграмма потоков данных "Сущность-связь". Физическо-логическая модель базы данных в нотации IDEF1X.

    курсовая работа [2,4 M], добавлен 25.06.2014

  • Характеристика склада "Skala". Организационная диаграмма, формирование физической диаграммы. Описание бизнес-процессов. Создание модели информационной системы. Диаграмма дерева узлов. Перечень работников, стоимостный анализ. Диаграмма процессов в ERWin.

    курсовая работа [2,8 M], добавлен 02.02.2014

  • Проектирование логической модели системы: контекстная диаграмма и детализация процессов, реализация ссылочной целостности. Описание работоспособного программного обеспечения для проекта. SQL-определения запросов. Описание базы данных контрольного примера.

    курсовая работа [91,4 K], добавлен 01.09.2010

  • Определение прецедентов АИС "Автопарковка". Анализ предметной области. Первоначальная настройка системы администратором. Настройка БД и зеркалирования клиентской базы. Диаграмма последовательности системы. Модель проектирования информационной системы.

    курсовая работа [605,8 K], добавлен 06.05.2015

  • Назначение и цели создания системы. Разработка логической модели данных, выбор хранилища. Диаграмма классов для диспетчера и контент-менеджера, схема взаимодействия объектов системы. Описание программных модулей. Тестирование веб-базированной системы.

    курсовая работа [5,4 M], добавлен 17.09.2013

  • Проектирование информационной системы. Построение диаграммы потоков данных. Описание порядка построения DFD-диаграммы. Создание базы данных с помощью SQL сервера. Описание основных бизнес-правил и их физической реализации. Заполнение таблиц данными.

    курсовая работа [1,5 M], добавлен 13.12.2011

  • Жизненный цикл информационных систем. Создание системы обработки заказов ресторана. Описание деятельности ресторана с целью выявления автоматизируемых процессов. Диаграмма вариантов, классов и последовательности для информационной системы "Ресторан".

    курсовая работа [541,7 K], добавлен 07.01.2015

  • Построение use case диаграммы. Проектирование базы данных. Концептуальная модели 1-уровня (диаграмма последовательности действий). Мапирование реляционной модели в метамодель. Логическая реализация метамодели. Скрипты, заполнение таблиц, создание выборок.

    курсовая работа [1,4 M], добавлен 28.12.2011

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.