Информационная система по учету охраняемых объектов
Характеристика классификаторов и систем кодирования. Обоснование выбора системы управления базами данных и языка программирования. Описание назначения программы и условий ее применения. Расчет экономического и социального эффекта от внедрения проекта.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 14.03.2017 |
Размер файла | 354,3 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Требования к уровням электромагнитных полей на рабочих местах, оборудованных ПЭВМ
Временные допустимые уровни ЭМП, создаваемых ПЭВМ на рабочих местах пользователей, представлены в таблице 6.2.
Таблица 5.2 Временные допустимые уровни ЭМП, создаваемых ПЭВМ
Наименование параметров |
ВДУ ЭМП |
||
Напряженность электрического поля |
в диапазоне частот 5 Гц - 2 кГц |
25 В/м |
|
в диапазоне частот 2 кГц - 400 кГц |
2,5 В/м |
||
Плотность магнитного потока |
в диапазоне частот 5Гц - 2 кГц |
250 н'Гл |
|
в диапазоне частот 2 кГц - 400 кГц |
25 нТл |
||
Напряженность электростатического поля |
15 кВ/м |
Требования к средствам измерений
Инструментальный контроль уровней ЭМП должен осуществляться приборами с допускаемой основной относительной погрешностью измерений +/- 20%, включенными в Государственный реестр средств измерения и имеющими действующие свидетельства о прохождении Государственной поверки.
Следует отдавать предпочтение измерителям с изотропными антеннами-преобразователями.
Требования к организации и оборудованию рабочих мест с ПЭВМ для пользователей
1. Высота рабочей поверхности стола для взрослых пользователей должна регулироваться в пределах 680 - 800 мм; при отсутствии такой возможности высота рабочей поверхности стола должна составлять 725 мм.
2. Модульными размерами рабочей поверхности стола для ПЭВМ, на основании которых должны рассчитываться конструктивные размеры, следует считать: ширину 800, 1000, 1200 и 1400 мм, глубину 80U и 1000 мм при нерегулируемой его высоте, равной 725 мм.
3. Рабочий стол должен иметь пространство для ног высотой не менее 600 мм, шириной - не менее 500 мм, глубиной на уровне колен - не менее 450 мм и на уровне вытянутых ног - не менее 650 мм.
4. Конструкция рабочего стула должна обеспечивать:
- ширину и глубину поверхности сиденья не менее 400 мм;
- поверхность сиденья с закругленным передним краем;
- регулировку высоты поверхности сиденья в пределах 400 - 550 мм и углам наклона вперед до 15 град, и назад до 5 град.;
- высоту опорной поверхности синяки 300 +/- 20 мм, ширину - не менее 380 мм и радиус кривизны горизонтальной плоскости -400 мм;
- угол наклона спинки в вертикальной плоскости в пределах +/- 30 градусов;
- регулировку расстояния спинки от переднего края сиденья в пределах 260 - 400 мм;
- стационарные или съемные подлокотники длиной не менее 250 Мм и шириной - 50 - 70 мм;
- регулировку подлокотников по высоте над сиденьем в пределах 230 +/-30 мм и внутреннего расстояния между подлокотниками в пределах 350 - 500 мм.
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 с.
Приложение А
Текст программы
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<...
Подобные документы
Иерархические, сетевые и реляционные модели данных. Различия между OLTP и OLAP системами. Обзор существующих систем управления базами данных. Основные приемы работы с MS Access. Система защиты базы данных, иерархия объектов. Язык программирования SQL.
курс лекций [1,3 M], добавлен 16.12.2010Контекстная диаграмма системы обслуживания и диаграмма декомпозиции. Обоснование необходимости внедрения информационной системы. Обзор существующих программных продуктов. ER-диаграмма системы, описание таблиц базы данных. Используемые системы кодирования.
дипломная работа [577,2 K], добавлен 27.01.2014Основные классифицирующие признаки системы управления базами данных. Модель данных, вид программы и характер ее использования. Средства программирования для профессиональных разработчиков. Организация центров обработки данных в компьютерных сетях.
презентация [6,8 K], добавлен 14.10.2013Главные составные части среды программирования. Требование к надежности, к составу и параметрам технических средств. Табличные базы данных. Выбор и обоснование выбора системы управления базами данных. Высокопроизводительный компилятор в машинный код.
курсовая работа [793,5 K], добавлен 31.01.2016Обзор медицинских информационных систем. Анализ и моделирование автоматизированной системы "Регистратура". Требования к составу и параметрам вычислительной системы. Обоснование выбора системы управления базами данных. Разработка инструкции пользователя.
дипломная работа [1,2 M], добавлен 14.10.2012Обоснование выбора системы управления базы данных. Delphi и его основные компоненты. Обоснование среды программирования. Создание базы данных и ее связь со средой программирования. Анализ и описание предметной области. Описание процедур программы.
курсовая работа [1,3 M], добавлен 25.05.2015Особенности управления информацией в экономике. Понятие и функции системы управления базами данных, использование стандартного реляционного языка запросов. Средства организации баз данных и работа с ними. Системы управления базами данных в экономике.
контрольная работа [19,9 K], добавлен 16.11.2010Разработка программы для учета услуг на предприятии и хранения данных о сотрудниках и заказчиках. Анализ и состав входящей и исходящей информации. Структура базы данных, выполнение запросов. Система управления базами данных, принципы их организации.
курсовая работа [1,7 M], добавлен 06.12.2012Среды передачи данных, топологии локальных сетей. Сравнение средств разработки Microsoft, выбор системы управления базами данных. Описание серверной и клиентской части приложения. Внедрение системы оперативного документооборота на данное предприятие.
дипломная работа [3,5 M], добавлен 12.01.2012Определение назначения, описание функций и изучение классификации складов. Анализ предметной области и проектирование системы базы данных управления складом. Разработка руководства пользователя для оператора базы данных, расчет сметной стоимости проекта.
дипломная работа [2,2 M], добавлен 24.07.2014Классификация систем управления базами данных. Выбор операционной системы, языка программирования, среды разработки (IDE) и дополнительных компонент. Разработка интерфейса и функций программы по управлению складом, её тестирование и исходный код файлов.
курсовая работа [487,3 K], добавлен 25.12.2015Обоснование необходимости разработки виртуального магазина. Описание форм программы. Требования к аппаратному и программному обеспечению. Тестирование и выявление ошибок. Область применения программы. Расчет экономического эффекта проекта. Охрана труда.
дипломная работа [1,7 M], добавлен 20.12.2012Характеристика структурированного языка программирования С, его основных структурных компонентов, области памяти, библиотеки. Методы поиска в массивах данных. Описание программы, функции сортировки и меню выбора, последовательного и бинарного поиска.
курсовая работа [1,7 M], добавлен 19.05.2014Исследоввание деятельности магазина "Комплектация компьютерной техники". Анализ данных, обоснование проекта программы продажи/покупки товаров. Правила выбора языка программирования. Описание интерфейса программы. Составление руководства пользователя.
курсовая работа [512,4 K], добавлен 11.12.2014Обзор программных средств разработки приложений и обоснование выбора языка программирования. Классификация приложений для работы с базами данных. Функциональная структура базы данных с указанием назначения программных модулей, руководство пользователя.
дипломная работа [645,3 K], добавлен 21.11.2010Обоснование выбора языка программирования. Описание разработки структуры программы. Спецификация переменных и процедур. Руководство оператора, словесный алгоритм. Состав информационной системы поиска квартир и характеристика её программных интерфейсов.
отчет по практике [2,2 M], добавлен 15.09.2014Устройства внешней памяти. Система управления базами данных. Создание, ведение и совместное использование баз данных многими пользователями. Понятие системы программирования. Страницы доступа к данным. Макросы и модули. Монопольный режим работы.
реферат [27,5 K], добавлен 10.01.2011Разработка информационной системы, выбор языка программирования, физическое описание базы данных, выбор типа и описание таблиц базы данных. Техническое проектирование, ограничения и значения по умолчанию, представления, хранимые процедуры и триггеры.
курсовая работа [519,8 K], добавлен 25.05.2010Система управления базами данных как составная часть автоматизированного банка данных. Структура и функции системы управления базами данных. Классификация СУБД по способу доступа к базе данных. Язык SQL в системах управления базами данных, СУБД Microsoft.
реферат [46,4 K], добавлен 01.11.2009Базы данных как составная часть информационных систем. Изучение взаимосвязи понятий информация и данные. Система управления базами данных. Пример структурированных данных. Обеспечение логической независимости. Безопасность операционной системы.
контрольная работа [44,6 K], добавлен 15.06.2009