Разработка АИС (автоматизированная информационная система) торгового предприятия (ООО "Канефуса Инструменты")

Заказать уникальную дипломную работу
Тип работы: Дипломная работа
Предмет: Delphi
  • 135135 страниц
  • 42 + 42 источника
  • Добавлена 11.06.2010
3 000 руб.
  • Содержание
  • Часть работы
  • Список литературы
  • Вопросы/Ответы
Оглавление
Введение.
1. Аналитическая часть.
1.1. Общая характеристика предприятия.
1.2. Анализ конъюнктуры рынка.
1.3. Анализ хозяйственной деятельности предприятия.
1.4. Организационно-экономическая характеристика предметной области.
1.5. Выводы по аналитической части.
2. Обоснование проектных решений по автоматизированному решению экономико-информационных задач.
2.1. Моделирование бизнес-процессов предметной области.
2.2. Обоснование выбора задач, входящих в комплекс.
2.3. Обоснование проектных решений по информационному обеспечению.
2.4. Обоснование проектных решений по технологии сбора, передачи, обработки и выдачи информации.
2.5. Обоснование проектных решений по программному обеспечению.
2.5.1. Обоснование необходимости использования вычислительной техники и создания АРМ для решения данного комплекса задач.
2.5.2. Обоснование проектных решений по программному обеспечению
3. Проектная часть.
3.1. Информационное обеспечение комплекса задач.
3.1.1. Инфологическая (информационная) модель (схема данных) и ее описание.
3.1.2. Используемые классификаторы и системы кодирования.
3.1.3. Характеристика входной информации.
3.1.4. Нормативно-справочная информация.
3.1.5. Характеристика результатной информации.
3.2. Внутримашинная реализация комплекса задач.
3.2.1. Формализация расчетов.
3.2.2. Структурная схема использования комплекса программ (дерево диалога).
3.3. Технологическое обеспечение.
3.3.1. Организация технологии сбора, передачи, обработки и выдачи информации.
3.3.2. Схема технологического процесса сбора, передачи, обработки и выдачи информации.
3.4. Программное обеспечение комплекса задач.
3.4.1. Общие положения.
3.4.2. Структурная схема пакета (дерево вызова процедур и программ).
3.4.3. Описание программных модулей.
3.5. Схема взаимосвязи программных модулей и информационных файлов.
3.6. Выбор и обоснование технических средств.
4. Экономическое обоснование проекта.
4.1. Выбор и обоснование методики расчёта экономической эффективности
4.2. Расчёт показателей экономической эффективности проекта
5. Безопасность жизнедеятельности.
5.1.Анализ потенциальных опасных и вредных факторов, воздействующих на разработчика и пользователя
5.2.Описание рабочего места разработчика и оператора автоматизированной системы
5.3.Разработка инструкции по технике безопасности для пользователя АРМ
Заключение.
Список использованных источников
Приложения.
Приложение 1. Товарная накладная
Приложение 2. Принципиальная схема информационной технологии для реализации функций управления организацией на основе РБнД
Приложение 3. Тексты программных модулей
Графическая часть

Фрагмент для ознакомления

Экономия трудозатрат при внедрении АИС составит 1900-300=1600 человеко-часов.
Тогда индекс трудозатрат или производительности труда по варианту АИС относительно варианта ручного труда составит
Iп.т = 300 : 1900 = 0,16
Это означает, что обработка бухгалтерских учетных документов с использованием АС требует только 16% времени ручной обработки, а 84% трудозатрат сэкономлено. Работники могут быть не сокращены и экономия трудозатрат условна. Зная часовую расценку работника определенной квалификации, можно сосчитать и косвенный экономический эффект.
Например, Счас. = 120 руб.; Э = 120 руб. ×1600 час. =192000 руб.
Эффект – это абсолютный показатель стоимости. В рассматриваемом случае он составляет 1600 человеко-часов (трудовой натуральный показатель) или 192000 руб. – показатель в денежном выражении.
Эк = Т0 – Т1;
Можно определить индекс стоимости затрат
С0 = 1900 час. × 120 руб. = 228000 руб. – стоимость затрат по базисному варианту;
С1 = 300 час. × 120 руб. = 36000 руб. – стоимость затрат по сравниваемому варианту;
Iст.затрат = == 0,16
При оценке эффективности затрат на разработку и внедрение программного продукта в ИТ определяется такой показатель, как срок окупаемости капиталовложений. Он представляет собой величину, обратную коэффициенту эффективности.
Ток = ;
Если нормативный коэффициент эффективности затрат при внедрении ИТ составляет 0,32, то нормативный срок окупаемости затрат должен составлять
Ток. норм = ( 3года.
Поскольку при внедрении информационных технологий затраты необходимы на техническое обеспечение и на программное обеспечение, то
Ток = (лет),
где З0 – затраты на техническое обеспечение;
П0 – затраты на программное обеспечение;
(С0 – С1) – годовая экономия текущих расходов за счет внедрения АС;
З0+ П0= 203700,76 руб. равняются стоимости разработки.
Ток фак = = 1,06 года
Ток. фак. = 1,06 года < Ток. норм. = 3 года,
Следовательно, внедрение проекта АИС целесообразно.
Еэф. = = = 0,94
Таким образом, Еэф при внедрении программного продукта равно 0,94 > Еэф норм = 0,32.
Структуризация целей и задач «сверху вниз» позволяет выявить качественные выгоды, а затем и количественные факторы экономической эффективности, т.е. те направления изменения экономических показателей, которые при достижении соответствующей цели или решении задачи изменяются в благоприятном направлении. Процесс оценки эффектов от внедрения АИС представляет из себя согласованное единство двух процессов: структуризации целей «сверху вниз» и агрегации отдельных экономических выгод «снизу вверх», а затем соответствующей верификации полученных оценок. Пример структуризации «сверху вниз» и агрегации «снизу вверх» приведен на рис.4.1.
































Рис. 4.1. Структуризация «сверху вниз» и агрегация экономических выгод «снизу вверх»

5. Безопасность жизнедеятельности.
5.1. Анализ потенциальных опасных и вредных факторов, воздействующих на разработчика и пользователя
Компьютерная техника является источником излучений и электромагнитных полей, а также местом накопления статического электричества, потенциально опасных для человека. Пока эти излучения и поля не превосходят установленный медициной предельно допустимый уровень (ПДУ), они не наносят ощутимого урона здоровью человека.
Из всех устройств, связанных с компьютером, для здоровья наибольшую потенциальную опасность представляет монитор. Именно он сочетает относительно высокий уровень излучения и достаточно малое расстояние до человека. Строго говоря, клавиатура, находящаяся в непосредственном контакте с пальцами пользователя, тоже является источником излучения, но оно практически неотличимо от естественного фона и не идет ни в какое сравнение с излучением монитора.
Электромагнитное излучение нельзя увидеть, услышать, понюхать, попробовать на вкус или потрогать, но тем не менее оно присутствует повсюду. Хотя вредное влияние обычных уровней электромагнитного излучения на здоровье никем пока не доказано, но многих эта проблема волнует.
Каждый, кто знаком с принципом действия монитора компьютера на базе электронно-лучевой трубки (ЭЛТ), называемого также видеотерминалом или дисплеем, согласится с тем, что нет смысла говорить о рентгеновском излучении: незначительное количество ионизирующего излучения, создаваемого катодно-лучевой трубкой внутри монитора, эффективно экранируется стеклом трубки.
Излучение монитора на базе электронно-лучевой трубки непосредственно в сторону пользователя резко падает пропорционально удаленности от экрана, а вот электромагнитное поле распространяется во все стороны. Причем непосредственно перед экраном оно несколько ослаблено теневой маской и арматурой кинескопа, а от боковых и задних стенок монитора оно распространяется беспрепятственно.
Стандарты безопасности определяют максимально допустимые значения электромагнитных полей, создаваемых монитором при работе. В каждой экономически развитой стране действуют и собственные стандарты, но особую популярность завоевали те, что были разработаны в Швеции. Все современные модели мониторов, как правило, соответствуют и самым современным стандартам.
В настоящее время в России действуют согласованные с международными нормативами законодательные акты, гарантирующие потребителю соответствие прошедших сертификацию мониторов общепринятым нормам безопасности. Такими законодательными актами являются Государственный стандарт Российской Федерации ГОСТ Р 50948—96 «Дисплеи. Средства отображения информации индивидуального пользования. Общие эргономические требования и требования безопасности» и санитарные нормы СанГТиН 2.2.2.542—96 «Гигиенические требования к видеодисплейным терминалам, персональным электронно-вычислительным машинам и организации работы».
Принятые на сегодня санитарные нормы устанавливают минимальное расстояние от экрана до пользователя 50—70 см, примерно на длину вытянутой руки, в то время как это расстояние от боковой и задней стенки до рабочих мест должно быть не менее 1,5 м. Для каждого оснащенного компьютером рабочего места определена минимальная площадь — не менее 6 квадратных метров. Клавиатура и руки пользователя должны находиться на максимально возможном удалении от компьютера.
Плоскопанельный жидкокристаллический монитор обладает несколькими неоспоримыми преимуществами, причем два из них весьма существенны: малые габариты и полное отсутствие вредных излучений.
Использование жидкокристаллических мониторов, практически не имеющих вредных излучений, в портативных компьютерах — ноутбуках создало распространенное мнение об их безвредности по сравнению со стационарными компьютерами. Однако не следует забывать, что переменные электромагнитные поля, создаваемые импульсными преобразователями системы питания, у некоторых типов ноутбуков ничуть не меньше полей устаревших типов мониторов с ЭЛТ. Кроме того, вследствие размещения клавиатуры в едином блоке с процессором портативный компьютер находится намного ближе к пользователю, чем стационарный, а уровень электромагнитного поля, как мы уже говорили, усиливается по мере приближения к компьютеру.
В помещениях, где находятся ПК, имеет место быть шум механического происхождения — это шум, возникающий вследствие вибрации поверхностей машин и оборудования, а также одиночных или периодических ударов в сочленениях деталей, сборочных единиц или конструкций в целом.
Средства и методы защиты от шума по отношению к защищаемому объекту подразделяются на:
средства и методы коллективной защиты;
средства индивидуальной защиты.
Средства, снижающие шум в источнике его возникновения, в зависимости от характера воздействия подразделяются на:
средства, снижающие возбуждение шума;
средства, снижающие звукоизлучающую способность источника шума.
Средства, снижающие шум в источнике его возникновения, в зависимости от характера шумообразования подразделяются на:
средства, снижающие шум вибрационного (механического) происхождения;
средства, снижающие шум аэродинамического происхождения;
средства, снижающие шум электромагнитного происхождения;
средства, снижающие шум гидродинамического происхождения.
Средства, снижающие шум на пути его распространения, в зависимости от среды подразделяются на:
средства, снижающие передачу воздушного шума;
средства, снижающие передачу структурного шума.
Средства и методы коллективной защиты от шума в зависимости от способа реализации подразделяются на:
акустические;
архитектурно-планировочные;
организационно-технические.
Организационно-технические методы защиты от шума включают в себя:
применение малошумных технологических процессов (изменение технологии производства, способа обработки и транспортирования материала и др.);
оснащение шумных машин средствами дистанционного управления и автоматического контроля;
применение малошумных машин, изменение конструктивных элементов машин, их сборочных единиц;
совершенствование технологии ремонта и обслуживания машин;
использование рациональных режимов труда и отдыха работников на шумных предприятиях [4, с. 295-304].
Чтобы работа была комфортной и эффективной, необходимо позаботиться о внешних условиях. Основное — это освещение. Оно должно быть достаточно ярким (300—500 люкс), но рассеянным. Стол надо располагать боком к окну, окно должно иметь жалюзи или плотные шторы (в случае попадания прямого солнечного света).
При работе в темное время суток необходимо включить верхний свет. Монитор нужно расположить так, чтобы исключить появление бликов от искусственного или естественного освещения.
Исследователи считают, что в помещении оптимальной является температура 22—24 °С зимой и 23—25 °С летом. Нужно остерегаться сквозняков. Их на рабочем месте не должно быть, как и разного рода вентиляторов. Влажность воздуха в помещении должна быть в пределах 40—60%.

5.2. Описание рабочего места разработчика и оператора автоматизированной системы
Рациональную организацию рабочего места обычно связывают с понятием эргономики. При правильной работе возрастет не только скорость, но и качество работы.
Основной параметр, влияющий на удобство работы, — высота стола. Наука говорит о том, что оптимальное значение этой цифры — 72,5 см. Но лучше, конечно, покупать стол с регулируемой высотой. Тогда вы сможете более точно установить удобную для конкретного человека высоту. Но это еще не все. Под столом должно быть достаточно места для ног. Выбирая стол, обратите внимание, что под ним должны помещаться как вытянутые ноги (глубина — не менее 65 см), так и закинутые одна на другую (высота пространства под столом — не менее 60 см).
Стол должен быть достаточным для размещения монитора, клавиатуры и документов.
Кресло (стул) должно быть удобным и должно обеспечивать физиологически рациональную рабочую позу, при которой не нарушается циркуляция крови и не происходит других вредных воздействий.
Физиологи нарисовали портрет «идеального» кресла, обеспечивающего комфортную продолжительную и безопасную работу. Итак, кресло обязательно должно быть с подлокотниками и иметь возможность поворота, изменения высоты и угла наклона сиденья и спинки. Желательно иметь возможность регулировки высоты и расстояния между подлокотниками, расстояния от спинки до переднего края сиденья. Важно, чтобы все регулировки были независимыми, легко осуществимыми и имели надежную фиксацию.
Теперь о размерах. Размер сиденья — не менее 40 х 40 см. Угол его наклона варьируется от 15° вперед до 5° назад. Оптимальная высота сиденья — 40—55 см. Особые требования к спинке кресла: высота опорной поверхности — 30 ± 2 см, ширина — не менее 38 см, радиус кривизны в горизонтальной плоскости — 40 см, угол наклона — 0—30°, расстояние до переднего края сиденья — 26—40 см. Подлокотники должны быть не менее 25 см в длину, 5—7 см в ширину, находиться над сиденьем на высоте 25 ± 3 см и на расстоянии 35—50 см друг от друга.
Требования к эргономичности клавиатуры заключаются исключительно в том, что располагаться она должна на расстоянии 10—30 см от края стола или на специальной регулируемой по высоте подставке. В любом случае, если вы набираете много текстов, стоит позаботиться о том, чтобы запястья не висели в воздухе.
Монитор должен стоять на столе так, чтобы изображение было четко видно без необходимости поднимать или опускать голову. Монитор обязательно должен быть расположен ниже уровня глаз. При взгляде вверх быстро устает шея. Подставка монитора должна быть как можно ниже. Угол наблюдения должен лежать в пределах 0—60°. Расстояние до монитора — не менее 40 см [26, с.427-433].

5.3. Разработка инструкции по технике безопасности для пользователя АРМ
Для работающих на ПК разработана типовая инструкция по охране труда ТОН Р-45-084-01 и утверждена приказом Министерства Российской Федерации по связи и информатизации от 2 июля 2001 г. № 162.
1.1. К работе на персональном компьютере допускаются лица, прошедшие обучение безопасным методам труда, вводный инструктаж, первичный инструктаж на рабочем месте.
1.2. При эксплуатации персонального компьютера на работника могут оказывать действие следующие опасные и вредные производственные факторы:
повышенный уровень электромагнитных излучений;
повышенный уровень статического электричества;
пониженная ионизация воздуха;
статические физические перегрузки;
перенапряжение зрительных анализаторов.
1.3. Работник обязан:
Выполнять только ту работу, которая определена его должностной инструкцией.
Содержать в чистоте рабочее место.
Соблюдать режим труда и отдыха в зависимости от продолжительности, вида и категории трудовой деятельности.
Соблюдать меры пожарной безопасности.
Рабочие места с компьютерами должны размещаться таким образом, чтобы расстояние от экрана одного видеомонитора до тыла другого было не менее 2,0 м, а расстояние между боковыми поверхностями видеомониторов — не менее 1,2 м.
Рабочие места с персональными компьютерами по отношению к световым проемам должны располагаться так, чтобы естественный свет падал сбоку, преимущественно слева.
Оконные проемы в помещениях, где используются персональные компьютеры, должны быть оборудованы регулируемыми устройствами типа жалюзи, занавесей, внешних козырьков и др.
Рабочая мебель для пользователей компьютерной техникой должна отвечать следующим требованиям:
высота рабочей поверхности стола должна регулироваться в пределах 680—800 мм; при отсутствии такой возможности высота рабочей поверхности стола должна составлять 725 мм;
рабочий стол должен иметь пространство для ног высотой не менее 600 мм, глубиной на уровне колен не менее 450 мм и на уровне вытянутых ног не менее 650 мм;
рабочий стул (кресло) должен быть подъемно-поворотным и регулируемым по высоте и углам наклона сиденья и спинки, а также расстоянию спинки от переднего края сиденья;
рабочее место должно быть оборудовано подставкой для ног, имеющей ширину не менее 300 мм, глубину не менее 400 мм, регулировку по высоте в пределах до 150 мм и по углу наклона опорной поверхности подставки до 20 градусов; поверхность подставки должна быть рифленой и иметь по переднему краю бортик высотой 10 мм;
рабочее место с персональным компьютером должно быть оснащено легко перемещаемым пюпитром для документов.
Для нормализации аэроионного фактора помещений с компьютерами необходимо использовать устройства автоматического регулирования ионного режима воздушной среды (например, аэроионизатор стабилизирующий «Москва-СА1»).
Женщины со времени установления беременности и в период кормления грудью к выполнению всех видов работ, связанных с использованием компьютеров, не допускаются.
1.10. За невыполнение данной Инструкции виновные привлекаются к ответственности согласно правилам внутреннего трудового рас порядка или взысканиям, определенным Кодексом законов о труде Российской Федерации.
2.. Требования безопасности перед началом работы
2.1. Подготовить рабочее место.
2.2. Отрегулировать освещение на рабочем месте, убедиться в отсутствии бликов на экране.
2.3. Проверить правильность подключения оборудования к электросети.
Проверить исправность проводов питания и отсутствие оголенных участков проводов.
Убедиться в наличии заземления системного блока, монитора и защитного экрана.
Протереть антистатической салфеткой поверхность экрана монитора и защитного экрана.
Проверить правильность установки стола, стула, подставки для ног, пюпитра, угла наклона экрана, положение клавиатуры, положение "мыши" на специальном коврике, при необходимости произвести регулировку рабочего стола и кресла, а также расположение элементов компьютера в соответствии с требованиями эргономики и в целях исключения неудобных поз и длительных напряжений тела.
3. Требования безопасности во время работы
3.1. Работнику при работе на ПК запрещается:
прикасаться к задней панели системного блока (процессора) при включенном питании;
переключать разъемы интерфейсных кабелей периферийных устройств при включенном питании;
допускать попадание влаги на поверхность системного блока (процессора), монитора, рабочую поверхность клавиатуры, дисководов, принтеров и других устройств;
производить самостоятельное вскрытие и ремонт оборудования;
работать на компьютере при снятых кожухах;
отключать оборудование от электросети и выдергивать электровилку, держась за шнур.
Продолжительность непрерывной работы с компьютером без регламентированного перерыва не должна превышать 2 часов.
Во время регламентированных перерывов с целью снижения нервно-эмоционального напряжения, утомления зрительного анализатора, устранения влияния гиподинамии и гипокинезии, предотвращения развития познотонического утомления выполнять комплексы упражнений.
Заключение.
Целью дипломного проекта было создание АИС торгового предприятия ООО «Канефуса Инструменты», которое было образовано в 2006 году и занимается продажей высококачественных промышленных инструментов из Японии. По организационно-правовой форме предприятие является обществом с ограниченной ответственностью (ООО). ООО – это учрежденное одним или несколькими лицами общество, уставный капитал которого разделен на доли определенных учредительными документами размеров. Участники ООО не отвечают по его обязательствам и несут риск убытков, связанных с деятельностью общества, в пределах стоимости внесенных ими вкладов. Уставный капитал ООО составляется из стоимости вкладов его участников. Данная правовая форма наиболее распространена среди мелких и средних предприятий.
В ходе дипломного проектирования было проведено сравнение конкурентов. Данный анализ очень важен для предприятия, так как изучение стратегически сильных и слабых сторон актуального соперника может помочь выявить требующие оперативного вмешательства возможности и угрозы. От способности предсказать вероятные реакции главных соперников может зависеть само решение о выборе стратегической альтернативы. Основным преимуществом ООО «Канефуса Инструменты» является наличие WEB-ресурса, а также большой ассортимент инструментов японского производства, отличающихся качеством и удобством в применении. Ни один из конкурентов не занимается продажей японской продукции для мебельных и деревообрабатывающих производств.
В дипломном проекте рассмотрены основные показатели деятельности ООО «Канефуса Инструменты» за 2008 – 2009 гг. и проведен анализ хозяйственной деятельности. Несмотря на увеличение объема продаж было выявлено снижение прибыльности на 0,01 коп. на 1 руб. продукции, что означает, что необходимо предпринимать определенные меры для улучшения финансового состояния предприятия.
В дипломном проекте изучены функциональные области предприятия и процессы, в них протекающие. В ходе рассмотрения предметной области был выявлен бизнес-процесс, подлежащий автоматизации. Этот бизнес-процесс связан с поступлением и выдачей (отпуском) инструментов, так как именно этот процесс напрямую связан с получением прибыли предприятия.
Под АИС понимается аппаратно-программный комплекс, обеспечивающий выполнение следующих функций:
ввод данных об объектах некоторой предметной области;
надежное хранение и защита данных во внешней памяти вычислительной системы;
дополнение, удаление, изменение данных;
сортировка, выборка данных по запросам пользователей;
выполнение специфических для данной предметной области преобразований информации;
предоставление пользователям удобного интерфейса;
обобщение данных и составление отчетов.
Назначением АИС является автоматизация деятельности персонала как информационного субъекта, входящего в ее состав.
В ходе дипломного проектирования было принято решение об использовании Borland Delphi 7 в качестве среды разработки.
Основу любой информационной системы составляет БД, т.е. набор данных, организованных специальным образом. База данных — это объективная форма представления и организации совокупности данных, систематизированных таким образом, чтобы эти данные могли быть найдены и обработаны с помощью ЭВМ. Таблицы в БД АИС были созданы с использованием Microsoft Acces. К основным достоинствам БД Access можно отнести полную русификацию СУБД Access, включая имена полей и свойств; большую простоту в работе; хранение всех объектов в одном файле; возможность отладки SQL-запросов для получения, обновления и удаления в среде Microsoft Acces. SQL (Structured Query Language - язык структурированных запросов) — универсальный компьютерный язык, применяемый для создания, модификации и управления данными в реляционных базах данных. В разработанной АИС БД состоит из 9 таблиц, имеющих названия и имена полей на русском языке.
В ходе дипломного проектирования было создано приложение, реализующее функции по учету движения инструментов с получением сведений в виде табличных форм и диаграмм и формированием товарной накладной в виде файла формата Microsoft Excel. Для работоспособности приложения необходимо в один каталог скопировать БД с именем канефуса.mdb, файл шаблона документа Накладная.xls и загрузочный модуль Kanefusa.exe.
Для проверки работоспособности приложения проведено его тестирование. Пользователю на русском языке выдаются понятные сообщения об ошибках в случае некорректного ввода данных. Тестирование программы показало отсутствие ошибок на тестовых данных.
В дипломном проекте сделан расчет эффективности разработки АИС, рассчитана общая продолжительности ее разработки и сумма затрат на создание системы. Затраты составят немногим более двухсот тысяч рублей. Срок окупаемости при вводе системы в эксплуатацию будет не более 2 месяцев.
В дипломном проекте сделан анализ потенциальных опасных и вредных факторов, воздействующих на разработчика и пользователя, дано описание рабочего места разработчика и оператора автоматизированной, приведены основные положения типовой инструкции по охране труда ТОН Р-45-084-01, утвержденной приказом Министерства Российской Федерации по связи и информатизации от 2 июля 2001 г. № 162.
Цель дипломного проектирования достигнута, так как созданная система позволят автоматизировать функции по движению инструментов и получению выходных форм в табличном и графическом виде. Кроме того, в случае необходимости система может быть дополнена функциональными возможностями.

Список использованных источников
Аакер Д. Стратегическое рыночное управление. 7-е изд. / Пер. с англ. Под ред. С. Г. Божук. — СПб.: Питер, 2007. — 496 с: ил. — ISBN 978-5-469-01301-3, 5-469-01301-4.
Автоматизированные информационные технологии в экономике. Учебник под ред. проф. Титоренко Г.А. – М.: «Юнити», 2003. – 399 с. – ISBN 5-238-00040-5.
Андерсен, В. Базы данных Microsoft Access. Проблемы и решения: Практ. пособ., пер. с англ. / В. Андерсен — М.: Издательство ЭКОМ, 2001.—384 с.: ил. – ISBN 5-7163-0082-0
Арустамов, Э.А. Охрана труда: Справочник / Э. А. Арустамов. — М.: Издательско-торговая корпорация «Дашков и К», 2008.— 588 с. ISBN 978-5-91131-551-1.
Архангельский, А.Я. Программирование в Delphi 7 / А.Я. Архангельский – Бином-Пресс, 2003. – 1152 с. - ISBN   5-9518-0042-0.
Архангельский, А.Я. Delphi 2006. Справочное пособие. Язык Delphi, классы, функции Win32 и .NET / А.Я. Архангельский – Бином-Пресс, 2003. – 1152 с. - ISBN   5-9518-0138-9.
Бакнелл, Д. Фундаментальные алгоритмы и структуры данных в Delphi / Д. Бакнелл – СПб.: Питер, 2006. – 560 с. - ISBN 5-469-01495-9, 5-93772-087-3.
Бекаревич, Ю. Самоучитель Microsoft Access 2002 / Ю.Бекаревич, Н.Пушкина – СПб.: «БХВ-Петербург», 2002. – 720 с. – ISBN: 5-8206-0033-9
Бобровский, С.И. Delphi 7. Учебный курс / С.И. Бобровский – СПб.: Питер, 2008. – 736 с.: ил. - ISBN 978-5-8046-0086-1.
Борисов, Е.Ф. Экономическая теория: Учебник. —М.: Юрайт-Издат, 2005. — 399 с. —ISBN 5-94879-217-Х.
Веснин, В. Р. Менеджмент: учеб. / В.Р. Веснин — М.: ТК Велби, Изд-во Проспект, 2006. — 504 с. — ISBN 5-482-00517-8.
Гандерлой, Майк, Харкинз, Сьюзан Сейлз. Автоматизация Microsoft Access с помощью VBA / Майк Гандерлой, Сьюзан Сейлз Харкинз –М.: Издательский дом «Вильямс», 2006. – 416 с. : ил. – ISBN 5-8459-0959-7 (рус.)
Гончаров, А. Ю. ACCESS 2003. Самоучитель с примерами / А.Ю. Гончаров — М.: КУДИЦ-ОБРАЗ, 2004. — 272 с: ил. ISBN 5-9579-0021-4.
Гохберг, Г.С. Информационные технологии: Учебник для сред. проф. образования / Г.С. Гохберг, А.В. Зафиевский, А.А. Короткин – М.: Издательский центр «Академия», 2004. – 206 с. ISBN 5-7695-1643-7.
Грабауров, В. А. Информационные технологии для менеджеров / В.А. Грабауров – М.: Финансы и статистика, 2001.– 368 с.: ил. ISBN 5-279-02299-3
Грабер, М. Введение в SQL / Пер. с англ. В. Ястребов – Издательство «Лори», 1996. – 380 с. – ISBN: 5-85582-010-6.
Дженнингс, Р. Использование Microsoft Office Access 2003 / Пер. с англ. Р.Дженнингс: пер. с англ. И. Тараброва – «Вильямс», 2005. – 1300 с. – ISBN 5-8459-0691-1.
Зуб, А. Т. Стратегический менеджмент: Теория и практика: Учебное пособие для вузов / А.Т. Зуб. — M.: Аспект Пресс, 2002. — 415 с. —ISBN 5-7567-0164-8.
Ильин, А.И. Планирование на предприятии: Учебник / А.И. Ильин. —Мн.: Новое знание, 2001. —635 с. — ISBN 985-6516-59-5.
Информатика: Учебник / Под общ. ред. А.Н. Данчула. — М.: Изд-во РАГС, 2004. – 528 с. – ISBN 5-7729-0147-8.
Информатика: учебник / Б.В. Соболь и др. — Изд. 3-е, дополн. и перераб. — Ростов н/Д: Феникс, 2007. — 446 с. — ISBN 978-5-222-12081-1.
Карпов, Б. Delphi: специальный справочник / Б. Карпов – СПб.: Питер, 2002. – 688 с.: ил. – ISBN 5-272-00353-5.
Кузин, А. В. Базы данных: учеб. пособие для студ. высш. учеб. заведений / А.В. Кузин, С.В. Левонисова. — 2-е изд., стер. — М.: Издательский центр «Академия», 2008. — 320 с. – ISВN 978-5-7695-4833-8.
Кэнту, М. Delphi 7 для профессионалов / Марко Кэнту – СПб.: Питер, 2004. – 1076 с.: ил. - ISBN 5-94723-593-5.
Марков А.С., Лисовский К.Ю. Базы данных. Введение в теорию и методологию: Учебник / А.С. Марков, К.Ю. Лисовский — М.: Финансы и статистика, 2006. - 512 с: ил. — ISBN 5-279-02298-5.
Михеева, Е.В. Информационные технологии в профессиональной деятельности: учеб. пособие. – М.: ТК Велби, Изд-во Проспект, 2007. – 448 с. – ISBN: 978-5-482-01569-8.
Проектирование баз данных. СУБД Microsoft Access: Учебное пособие для вузов / Н. Н. Гринченко, Е. В. Гусев, Н. П. Макаров, А. Н. Пылькин, Н. И. Цуканова. - М.: Горячая линия-Телеком, 2004. — 240с.: ил. — ISBN 5-93517-193-7.
Румянцева З.П.Общее управление организацией. Теория и практика: Учебник. — М.: ИНФРА-М, 2007. — 304 с. — ISBN 978-5-16-002276-5.
Симонович, С.В. Информатика. Базовый курс. 2-е издание / Под ред. С.В.Симоновича. — СПб.: Питер, 2004. — 640 с.: ил. – ISBN 5-94723-752-0.
Степанов, А.Н. Информатика. Учебник для вузов. 4-е издание / А.Н.Степанов. — СПб.: Питер, 2005. — 684 с.: ил. – ISBN 5-94723-898-5.
Стратегический менеджмент / Под ред. Петрова А. Н. — СПб.: Питер, 2005. — 496 с: ил. — ISBN 5-469-00163-6.
Фленов, М.Е. Программирование в Delphi глазами хакера. / М.Е. Фленов – СПб.: БХВ-Петербург, 2005. – 368 с.: ил. - ISBN 5-94157-351-0.
Шеремет А.Д. Комплексный анализ хозяйственной деятельности. — М.: ИНФРА-М,2006. — 415 с. — ISBN 5-16-002687-8.
Шумаков, П.В. Delphi 3 и разработка приложений баз данных / П.В. Шумаков. – М.: Нолидж, 1999. – 704 с.: ил. - ISBN 5-89251-022-0.
Шпак, Ю. А. Delphi 7 на примерах / Ю. А. Шпак. – М.: Юниор, 2003. – 344 с. ISBN: 966-7323-28-5.
Экономика / Учебник под ред. доц. А.С. Булатова. — М.: БЕК, 2005. — 511 с. — ISBN 5-85639-070-9, ISBN 3-40638-861-2.
Экономика организаций (предприятий) / Учебник для вузов под ред. проф. В.Я. Горфинкеля, проф. В.А. Швандара. — М.: ЮНИТИ-ДАНА, 2003. - 608 с. — ISBN 5-238-00517-2.
Экономика предприятия / Под ред. доктора эконом. наук Покропивного С.Ф. — Киев, КНЕУ, 2003 . — 608 с. — ISBN 966-574-413-5.
ГОСТ Р 50948—96 «Дисплеи. Средства отображения информации индивидуального пользования. Общие эргономические требования и требования безопасности».
ГОСТ 34.003-90 «Информационная технология. Термины и определения».
РД 50-680-88 «Методические указания. Автоматизированные системы. Основные положения»
Санитарные нормы СанГТиН 2.2.2.542—96 «Гигиенические требования к видеодисплейным терминалам, персональным электронно-вычислительным машинам и организации работы».




Приложения.
Приложение 1. Товарная накладная
















Приложение 2. Принципиальная схема информационной технологии для реализации функций управления организацией на основе РБнД



Приложение 3. Тексты программных модулей
unit Kanef;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, ComCtrls, DB, ADODB, Grids, DBGrids, ExtCtrls, dbcgrids,
DBCtrls, StdCtrls, CheckLst, Spin, ComObj, TeEngine, Series, TeeProcs,
Chart;

type
TForm1 = class(TForm)
PageControl1: TPageControl;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
TabSheet3: TTabSheet;
TabSheet4: TTabSheet;
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
ADOConnection1: TADOConnection;
Panel1: TPanel;
DataSource1: TDataSource;
ADOQuery1: TADOQuery;
ADODataSet1: TADODataSet;
DBCtrlGrid1: TDBCtrlGrid;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
StatusBar1: TStatusBar;
DBText1: TDBText;
DBText2: TDBText;
DBText3: TDBText;
DBText4: TDBText;
DBText5: TDBText;
N7: TMenuItem;
Panel3: TPanel;
Label11: TLabel;
Edit6: TEdit;
DBCtrlGrid2: TDBCtrlGrid;
Label16: TLabel;
DBText6: TDBText;
DBText7: TDBText;
Label12: TLabel;
DataSource2: TDataSource;
ADODataSet2: TADODataSet;
N8: TMenuItem;
N9: TMenuItem;
N10: TMenuItem;
N11: TMenuItem;
N12: TMenuItem;
N13: TMenuItem;
CheckListBox1: TCheckListBox;
N14: TMenuItem;
N15: TMenuItem;
N16: TMenuItem;
N17: TMenuItem;
N18: TMenuItem;
N19: TMenuItem;
Label6: TLabel;
Edit1: TEdit;
N20: TMenuItem;
N21: TMenuItem;
N22: TMenuItem;
N23: TMenuItem;
Panel2: TPanel;
Label13: TLabel;
Edit7: TEdit;
ComboBox1: TComboBox;
Label14: TLabel;
DBCtrlGrid3: TDBCtrlGrid;
Label15: TLabel;
DBText8: TDBText;
DBText9: TDBText;
Label17: TLabel;
Label18: TLabel;
DBText10: TDBText;
DataSource3: TDataSource;
ADODataSet3: TADODataSet;
Panel4: TPanel;
Label21: TLabel;
Label22: TLabel;
SpinEdit3: TSpinEdit;
Label23: TLabel;
SpinEdit4: TSpinEdit;
DataSource4: TDataSource;
ADODataSet4: TADODataSet;
N24: TMenuItem;
StringGrid1: TStringGrid;
DateTimePicker1: TDateTimePicker;
Label19: TLabel;
Label24: TLabel;
Label20: TLabel;
N25: TMenuItem;
N26: TMenuItem;
N27: TMenuItem;
N28: TMenuItem;
TabSheet5: TTabSheet;
N29: TMenuItem;
Panel5: TPanel;
Label28: TLabel;
DateTimePicker2: TDateTimePicker;
DateTimePicker3: TDateTimePicker;
DBGrid4: TDBGrid;
DBGrid5: TDBGrid;
Splitter1: TSplitter;
DataSource5: TDataSource;
ADODataSet5: TADODataSet;
StatusBar2: TStatusBar;
StatusBar4: TStatusBar;
StatusBar3: TStatusBar;
N30: TMenuItem;
TabSheet6: TTabSheet;
Panel6: TPanel;
Label25: TLabel;
DateTimePicker4: TDateTimePicker;
DateTimePicker5: TDateTimePicker;
N31: TMenuItem;
DBGrid6: TDBGrid;
DataSource6: TDataSource;
ADODataSet6: TADODataSet;
N32: TMenuItem;
Chart1: TChart;
Series1: TPieSeries;
Chart2: TChart;
PieSeries1: TBarSeries;
N33: TMenuItem;
Series2: TBarSeries;
procedure Vvod_inf(name_nakladn,name_instrum:String);
procedure FormCreate(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure DataSource1DataChange(Sender: TObject; Field: TField);
procedure N4Click(Sender: TObject);
procedure N5Click(Sender: TObject);
procedure N6Click(Sender: TObject);
procedure N7Click(Sender: TObject);
procedure N9Click(Sender: TObject);
procedure N10Click(Sender: TObject);
procedure N11Click(Sender: TObject);
procedure N12Click(Sender: TObject);
procedure N13Click(Sender: TObject);
procedure DataSource2DataChange(Sender: TObject; Field: TField);
procedure N15Click(Sender: TObject);
procedure N16Click(Sender: TObject);
procedure N17Click(Sender: TObject);
procedure N18Click(Sender: TObject);
procedure N19Click(Sender: TObject);
procedure N24Click(Sender: TObject);
procedure N22Click(Sender: TObject);
procedure N23Click(Sender: TObject);
procedure N27Click(Sender: TObject);
procedure N28Click(Sender: TObject);
procedure DataSource4DataChange(Sender: TObject; Field: TField);
procedure N29Click(Sender: TObject);
procedure DataSource3DataChange(Sender: TObject; Field: TField);
procedure N30Click(Sender: TObject);
procedure N21Click(Sender: TObject);
procedure N31Click(Sender: TObject);
procedure N32Click(Sender: TObject);
procedure N33Click(Sender: TObject);
procedure N25Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var Layout: array[0.. KL_NAMELENGTH] of char;
i : Integer;
begin
//Процедура установки начальных значений при создании формы
//БД формата ACCESS
ADOConnection1.LoginPrompt:=False;
//строка для соединения с БД
ADOConnection1.Close;
ADOConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=канефуса.mdb;Persist Security Info=False';
PageControl1.Align:=AlClient;
TabSheet1.TabVisible:=False;
TabSheet2.TabVisible:=False;
TabSheet3.TabVisible:=False;
TabSheet4.TabVisible:=False;
ShortDateFormat:='dd.mm.yyyy';
//русская раскладка клавиатуры
LoadKeyBoardLayout(StrCopy(Layout,'00000419'),KLF_ACTIVATE);
for i:=0 to PageControl1.PageCount-1 do
PageControl1.Pages[i].TabVisible:=False;
PageControl1.Align:=AlClient;
StringGrid1.Cells[0,0]:='Инструмент';
StringGrid1.Cells[1,0]:='Код';
StringGrid1.Cells[2,0]:='Количество';
StringGrid1.Cells[3,0]:='Цена ед.';
DateTimePicker2.Date:=date;
DateTimePicker3.Date:=date;
DateTimePicker4.Date:=date;
DateTimePicker5.Date:=date;

end;

procedure TForm1.N3Click(Sender: TObject);
var i : Integer;
begin
//Процедура для просмотр справочника Контрагенты
for i:=0 to PageControl1.PageCount-1 do
PageControl1.Pages[i].TabVisible:=False;
//просмотр справочника Контрагенты
ADODataSet1.Close;
ADODataSet1.CommandText:='select * from Контрагенты ';
ADODataSet1.Open;
PageControl1.Pages[0].TabVisible:=True;
end;

procedure TForm1.DataSource1DataChange(Sender: TObject; Field: TField);
begin
//Процедура при переходе по записям таблицы Контрагенты
if (not ADODataSet1.Active) then exit;
Edit1.Text:=ADODataSet1.Fields[0].AsString;
Edit2.Text:=ADODataSet1.Fields[1].AsString;
Edit3.Text:=ADODataSet1.Fields[2].AsString;
Edit4.Text:=ADODataSet1.Fields[3].AsString;
Edit5.Text:=ADODataSet1.Fields[4].AsString;
StatusBar1.Panels[0].Text:='Запись '+IntToStr(DataSource1.DataSet.Recno);
StatusBar1.Panels[1].Text:='Всего '+IntToStr(DataSource1.DataSet.RecordCount);
end;

procedure TForm1.N4Click(Sender: TObject);
begin
//Процедура для добавления нового контрагента
if ((trim(Edit2.Text)='') or (trim(Edit3.Text)='')
or (trim(Edit4.Text)='') or (trim(Edit5.Text)='')) then
begin
Application.MessageBox('Не допускаются пустые значения для полей о контрагенте!','Сообщение',mb_Ok+mb_ICONINFORMATION);
exit;
end;
ADODataSet1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('insert into Контрагенты (Контрагент,[ИНН контрагента],');
ADOQuery1.SQL.Add('[Адрес контрагента],[Телефон контрагента]) values (');
ADOQuery1.SQL.Add(QuotedStr(trim(Edit2.Text))+',');
ADOQuery1.SQL.Add(QuotedStr(trim(Edit3.Text))+',');
ADOQuery1.SQL.Add(QuotedStr(trim(Edit4.Text))+',');
ADOQuery1.SQL.Add(QuotedStr(trim(Edit5.Text))+')');
try
ADOQuery1.ExecSQL;
Edit2.Text:='';
Edit3.Text:='';
Edit4.Text:='';
Edit5.Text:='';
Application.MessageBox('Запись о новом контрагенте добавлена!','Сообщение',mb_Ok+mb_ICONINFORMATION);
ADODataSet1.IndexFieldNames:='[Код контрагента]';
ADODataSet1.Open;
ADODataSet1.Last;
StatusBar1.Panels[1].Text:='Всего '+IntToStr(DataSource1.DataSet.RecordCount);
except
Application.MessageBox('Ошибка при добавлении записи о новом контрагенте!','Сообщение',mb_Ok+mb_ICONINFORMATION);
end;

end;

procedure TForm1.N5Click(Sender: TObject);
begin
//Процедура для удаления контрагента
if (not ADODataSet1.Active) then exit;
if Application.MessageBox(Pchar('Удалить контрагента <'+trim(ADODataSet1.FieldByName('Контрагент').AsString)+'> ?'),'Вопрос ',mb_YESNO+mb_ICONEXCLAMATION)=IDNO then
exit;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('delete from Контрагенты ');
ADOQuery1.SQL.Add('where [Код контрагента]='+ADODataSet1.FieldByName('Код контрагента').AsString);
try
ADOQuery1.ExecSQL;
ADODataSet1.Close;
Edit2.Text:='';
Edit3.Text:='';
Edit4.Text:='';
Edit5.Text:='';
Application.MessageBox('Запись о контрагенте удалена!','Сообщение',mb_Ok+mb_ICONINFORMATION);
ADODataSet1.IndexFieldNames:='[Код контрагента]';
ADODataSet1.Open;
StatusBar1.Panels[1].Text:='Всего '+IntToStr(DataSource1.DataSet.RecordCount);
except
Application.MessageBox('Ошибка при удалении записи о контрагенте!','Сообщение',mb_Ok+mb_ICONINFORMATION);
end;
end;

procedure TForm1.N6Click(Sender: TObject);
begin
//Процедура для изменения данных контрагента
if (not ADODataSet1.Active) then exit;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('update Контрагенты ');
ADOQuery1.SQL.Add('set Контрагент='+QuotedStr(trim(Edit2.Text))+',');
ADOQuery1.SQL.Add('[ИНН контрагента]='+QuotedStr(trim(Edit3.Text))+',');
ADOQuery1.SQL.Add('[Адрес контрагента]='+QuotedStr(trim(Edit4.Text))+',');
ADOQuery1.SQL.Add('[Телефон контрагента]='+QuotedStr(trim(Edit5.Text)));
ADOQuery1.SQL.Add('where [Код контрагента]='+ADODataSet1.FieldByName('Код контрагента').AsString);
try
ADOQuery1.ExecSQL;
ADODataSet1.Close;
Edit2.Text:='';
Edit3.Text:='';
Edit4.Text:='';
Edit5.Text:='';
Application.MessageBox('Запись о контрагенте изменена!','Сообщение',mb_Ok+mb_ICONINFORMATION);
ADODataSet1.IndexFieldNames:='[Код контрагента]';
ADODataSet1.Open;
except
Application.MessageBox('Ошибка при изменении записи о контрагенте!','Сообщение',mb_Ok+mb_ICONINFORMATION);
end;
end;



procedure TForm1.N7Click(Sender: TObject);
begin
//Процедура для поиска контрагента
if (not ADODataSet1.Active) then exit;
if (trim(Edit1.Text)<>'') then
ADODataSet1.Locate('Код контрагента',trim(Edit1.Text),[loCaseInsensitive,loPartialKey])
else
if (trim(Edit2.Text)<>'') then
ADODataSet1.Locate('Контрагент',trim(Edit2.Text),[loCaseInsensitive,loPartialKey])
else
if (trim(Edit3.Text)<>'') then
ADODataSet1.Locate('ИНН контрагента',trim(Edit3.Text),[loCaseInsensitive,loPartialKey])
else
if (trim(Edit4.Text)<>'') then
ADODataSet1.Locate('Адрес контрагента',trim(Edit4.Text),[loCaseInsensitive,loPartialKey])
else
if (trim(Edit5.Text)<>'') then
ADODataSet1.Locate('Телефон контрагента',trim(Edit5.Text),[loCaseInsensitive,loPartialKey]);
end;

procedure TForm1.N9Click(Sender: TObject);
var i : Integer;
begin
//Процедура для просмотра справочника Виды инструмента
for i:=0 to PageControl1.PageCount-1 do
PageControl1.Pages[i].TabVisible:=False;
ADODataSet2.Close;
ADODataSet2.CommandText:='SELECT [Виды инструмента].* FROM [Виды инструмента] ';
ADODataSet2.Open;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select * from [Тип инструмента] ');
ADOQuery1.Open;
CheckListBox1.Items.Clear;
while not ADOQuery1.Eof do
begin
CheckListBox1.Items.Add(ADOQuery1.FieldByName('Тип инструмента').AsString);
ADOQuery1.Next;
end;
ADOQuery1.Close;
//DataSource2DataChange(DataSource2,ADODataSet2.DataSource.DataSet.Fields[0]);
PageControl1.Pages[1].TabVisible:=True;
end;

procedure TForm1.N10Click(Sender: TObject);
var i,j,k : Integer;
begin
//Процедура для добавления вида инструмента и его отношения к типу
if (trim(Edit6.Text)='') then
begin
Application.MessageBox('Не указан вид инструмента!','Сообщение',mb_Ok+mb_ICONINFORMATION);
exit;
end;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('insert into [Виды инструмента] ([Вид инструмента]) ');
ADOQuery1.SQL.Add('values (');
ADOQuery1.SQL.Add(QuotedStr(trim(Edit6.Text))+')');
try
ADOQuery1.ExecSQL;
ADODataSet2.Close;
ADODataSet2.IndexFieldNames:='[Код вида инструмента]';
ADODataSet2.Open;
ADODataSet2.Last;
k:=ADODataSet2.FieldByName('Код вида инструмента').AsInteger;
for i:=0 to CheckListBox1.Items.Count-1 do
begin
if (CheckListBox1.Checked[i]) then
begin
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select [Код типа инструмента] from [Тип инструмента] ');
ADOQuery1.SQL.Add('where [Тип инструмента]='+QuotedStr(CheckListBox1.Items[i]));
ADOQuery1.Open;
j:=ADOQuery1.FieldByName('Код типа инструмента').AsInteger;
ADOQuery1.Close;

ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('insert into [Типы видов инструментов] ([Код вида инструмента],[Код типа инструмента]) ');
ADOQuery1.SQL.Add('values (');
ADOQuery1.SQL.Add(IntToStr(k)+',');
ADOQuery1.SQL.Add(IntToStr(j)+')');
ADOQuery1.ExecSQL;
end;
end;
Edit6.Text:='';
Application.MessageBox('Запись о новом виде инструмента добавлена!','Сообщение',mb_Ok+mb_ICONINFORMATION);
StatusBar1.Panels[1].Text:='Всего '+IntToStr(DataSource2.DataSet.RecordCount);
except
Application.MessageBox('Ошибка при добавлении записи о новом виде инструмента!','Сообщение',mb_Ok+mb_ICONINFORMATION);
end;
end;

procedure TForm1.N11Click(Sender: TObject);
begin
//Процедура для удаления вида инструмента и его отношения к типу
if (not ADODataSet2.Active) then exit;
if Application.MessageBox(Pchar('Удалить вид инструмента <'+trim(ADODataSet2.FieldByName('Вид инструмента').AsString)+'> ?'),'Вопрос ',mb_YESNO+mb_ICONEXCLAMATION)=IDNO then
exit;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('delete from [Типы видов инструментов] ');
ADOQuery1.SQL.Add('where [Код вида инструмента]='+ADODataSet2.FieldByName('Код вида инструмента').AsString);
try
ADOQuery1.ExecSQL;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('delete from [Виды инструмента] ');
ADOQuery1.SQL.Add('where [Код вида инструмента]='+ADODataSet2.FieldByName('Код вида инструмента').AsString);
ADOQuery1.ExecSQL;

ADODataSet2.Close;
Edit6.Text:='';
Application.MessageBox('Запись о виде инструмента удалена!','Сообщение',mb_Ok+mb_ICONINFORMATION);
ADODataSet2.IndexFieldNames:='[Код вида инструмента]';
ADODataSet2.Open;
StatusBar1.Panels[1].Text:='Всего '+IntToStr(DataSource2.DataSet.RecordCount);
except
Application.MessageBox('Ошибка при удалении записи о виде инструмента!','Сообщение',mb_Ok+mb_ICONINFORMATION);
end;
end;

procedure TForm1.N12Click(Sender: TObject);
var i,j,k : Integer;
begin
//Процедура для изменения вида инструмента
if (trim(Edit6.Text)='') then
begin
Application.MessageBox('Не указан вид инструмента!','Сообщение',mb_Ok+mb_ICONINFORMATION);
exit;
end;
if (not ADODataSet2.Active) then exit;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('update [Виды инструмента] ');
ADOQuery1.SQL.Add('set [Вид инструмента]='+QuotedStr(trim(Edit6.Text)));
ADOQuery1.SQL.Add('where [Код вида инструмента]='+ADODataSet2.FieldByName('Код вида инструмента').AsString);
try
ADOQuery1.ExecSQL;

ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('delete from [Типы видов инструментов] ');
ADOQuery1.SQL.Add('where [Код вида инструмента]='+ADODataSet2.FieldByName('Код вида инструмента').AsString);
ADOQuery1.ExecSQL;
k:=ADODataSet2.FieldByName('Код вида инструмента').AsInteger;
for i:=0 to CheckListBox1.Items.Count-1 do
begin
if (CheckListBox1.Checked[i]) then
begin
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select [Код типа инструмента] from [Тип инструмента] ');
ADOQuery1.SQL.Add('where [Тип инструмента]='+QuotedStr(CheckListBox1.Items[i]));
ADOQuery1.Open;
j:=ADOQuery1.FieldByName('Код типа инструмента').AsInteger;
ADOQuery1.Close;

ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('insert into [Типы видов инструментов] ([Код вида инструмента],[Код типа инструмента]) ');
ADOQuery1.SQL.Add('values (');
ADOQuery1.SQL.Add(IntToStr(k)+',');
ADOQuery1.SQL.Add(IntToStr(j)+')');
ADOQuery1.ExecSQL;
end;
end;
ADODataSet2.Close;
Edit6.Text:='';
Application.MessageBox('Запись о виде инструмента изменена!','Сообщение',mb_Ok+mb_ICONINFORMATION);
ADODataSet2.IndexFieldNames:='[Код вида инструмента]';
ADODataSet2.Open;
except
Application.MessageBox('Ошибка при изменении записи о виде инструмента!','Сообщение',mb_Ok+mb_ICONINFORMATION);
end;
end;

procedure TForm1.N13Click(Sender: TObject);
begin
//Процедура для поиска вида инструмента
if (not ADODataSet2.Active) then exit;
if (trim(Edit6.Text)<>'') then
ADODataSet2.Locate('Вид инструмента',trim(Edit6.Text),[loCaseInsensitive,loPartialKey]);

end;

procedure TForm1.DataSource2DataChange(Sender: TObject; Field: TField);
var i : Integer;
begin
//Процедура при переходе по записям таблицы Тип инструмента
for i:=0 to CheckListBox1.Items.Count-1 do
CheckListBox1.Checked[i]:=False;

ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select * from [Тип инструмента] ');
ADOQuery1.SQL.Add('where [Код типа инструмента] in (');
ADOQuery1.SQL.Add('select [Код типа инструмента] from [Типы видов инструментов] ');
ADOQuery1.SQL.Add('where [Код вида инструмента]='+ADODataSet2.FieldByName('Код вида инструмента').AsString+')');
ADOQuery1.Open;
while not ADOQuery1.Eof do
begin
for i:=0 to CheckListBox1.Items.Count-1 do
if (CheckListBox1.Items[i]=ADOQuery1.FieldByName('Тип инструмента').AsString) then
CheckListBox1.Checked[i]:=True;
ADOQuery1.Next;
end;
ADOQuery1.Close;
StatusBar2.Panels[0].Text:='Запись '+IntToStr(DataSource2.DataSet.Recno);
StatusBar2.Panels[1].Text:='Всего '+IntToStr(DataSource2.DataSet.RecordCount);
end;

procedure TForm1.N15Click(Sender: TObject);
var i : Integer;
begin
//Процедура для просмотра справочника Инструмент
for i:=0 to PageControl1.PageCount-1 do
PageControl1.Pages[i].TabVisible:=False;
//просмотр справочника инструментов
ADODataSet3.Close;
ADODataSet3.CommandText:='SELECT Инструмент.[Код инструмента], Инструмент.Инструмент, '+
'[Виды инструмента].[Вид инструмента] '+
'FROM Инструмент INNER JOIN [Виды инструмента] ON Инструмент.[Код вида инструмента] = [Виды инструмента].[Код вида инструмента] ';

ADODataSet3.Open;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select * from [Виды инструмента] ');
ADOQuery1.Open;
ComboBox1.Items.Clear;
while not ADOQuery1.Eof do
begin
ComboBox1.Items.Add(ADOQuery1.FieldByName('Вид инструмента').AsString);
ADOQuery1.Next;
end;
ADOQuery1.Close;
PageControl1.Pages[2].TabVisible:=True;
end;

procedure TForm1.N16Click(Sender: TObject);
var i,j : Integer;
begin
//Процедура для добавления инструмента
if (trim(Edit7.Text)='') then
begin
Application.MessageBox('Не указан инструмент!','Сообщение',mb_Ok+mb_ICONINFORMATION);
exit;
end;
if (ComboBox1.ItemIndex=-1) then
begin
Application.MessageBox('Не указан вид инструмент!','Сообщение',mb_Ok+mb_ICONINFORMATION);
exit;
end;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select [Код вида инструмента] from [Виды инструмента] ');
ADOQuery1.SQL.Add('where [Вид инструмента]='+QuotedStr(ComboBox1.Items[ComboBox1.ItemIndex]));
ADOQuery1.Open;
j:=ADOQuery1.FieldByName('Код вида инструмента').AsInteger;
ADOQuery1.Close;

ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('insert into [Инструмент] (Инструмент, [Код вида инструмента]) ');
ADOQuery1.SQL.Add('values (');
ADOQuery1.SQL.Add(QuotedStr(trim(Edit7.Text))+',');
ADOQuery1.SQL.Add(IntToStr(j)+')');
try
ADOQuery1.ExecSQL;
ADODataSet3.Close;
ADODataSet3.IndexFieldNames:='[Код инструмента]';
ADODataSet3.Open;
ADODataSet3.Last;
Edit7.Text:='';
Application.MessageBox('Запись о новом инструменте добавлена!','Сообщение',mb_Ok+mb_ICONINFORMATION);
StatusBar1.Panels[1].Text:='Всего '+IntToStr(DataSource3.DataSet.RecordCount);
except
Application.MessageBox('Ошибка при добавлении записи о новом инструменте!','Сообщение',mb_Ok+mb_ICONINFORMATION);
end;

end;

procedure TForm1.N17Click(Sender: TObject);
begin
//Процедура для удаления инструмента
if (not ADODataSet3.Active) then exit;
if Application.MessageBox(Pchar('Удалить инструмент <'+trim(ADODataSet3.FieldByName('Инструмент').AsString)+'> ?'),'Вопрос ',mb_YESNO+mb_ICONEXCLAMATION)=IDNO then
exit;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('delete from Инструмент ');
ADOQuery1.SQL.Add('where [Код инструмента]='+ADODataSet3.FieldByName('Код инструмента').AsString);
try
ADOQuery1.ExecSQL;
ADODataSet3.Close;
Edit7.Text:='';
ComboBox1.ItemIndex:=-1;
Application.MessageBox('Запись об инструменте удалена!','Сообщение',mb_Ok+mb_ICONINFORMATION);
ADODataSet3.IndexFieldNames:='[Код инструмента]';
ADODataSet3.Open;
StatusBar1.Panels[1].Text:='Всего '+IntToStr(DataSource3.DataSet.RecordCount);
except
Application.MessageBox('Ошибка при удалении записи об инструменте!','Сообщение',mb_Ok+mb_ICONINFORMATION);
end;
end;

procedure TForm1.N18Click(Sender: TObject);
var i,j : Integer;
begin
//Процедура для изменения инструмента
if (trim(Edit7.Text)='') then
begin
Application.MessageBox('Не указан инструмент!','Сообщение',mb_Ok+mb_ICONINFORMATION);
exit;
end;
if (ComboBox1.ItemIndex=-1) then
begin
Application.MessageBox('Не указан вид инструмент!','Сообщение',mb_Ok+mb_ICONINFORMATION);
exit;
end;
if (not ADODataSet3.Active) then exit;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select [Код вида инструмента] from [Виды инструмента] ');
ADOQuery1.SQL.Add('where [Вид инструмента]='+QuotedStr(ComboBox1.Items[ComboBox1.ItemIndex]));
ADOQuery1.Open;
j:=ADOQuery1.FieldByName('Код вида инструмента').AsInteger;
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('update Инструмент ');
ADOQuery1.SQL.Add('set Инструмент='+QuotedStr(trim(Edit7.Text))+',');
ADOQuery1.SQL.Add('[Код вида инструмента]='+IntToStr(j));
ADOQuery1.SQL.Add('where [Код инструмента]='+ADODataSet3.FieldByName('Код инструмента').AsString);
try
ADOQuery1.ExecSQL;
ADODataSet3.Close;
Edit7.Text:='';
ComboBox1.ItemIndex:=-1;
Application.MessageBox('Запись об инструменте изменена!','Сообщение',mb_Ok+mb_ICONINFORMATION);
ADODataSet3.IndexFieldNames:='[Код инструмента]';
ADODataSet3.Open;
except
Application.MessageBox('Ошибка при изменении записи об инструменте!','Сообщение',mb_Ok+mb_ICONINFORMATION);
end;
end;

procedure TForm1.N19Click(Sender: TObject);
begin
//Процедура для поиска инструмента
if (not ADODataSet3.Active) then exit;
if (trim(Edit7.Text)<>'') then
ADODataSet3.Locate('Инструмент',trim(Edit7.Text),[loCaseInsensitive,loPartialKey]);
end;

procedure TForm1.N24Click(Sender: TObject);
var i : Integer;
//Процедура формирования новой накладной
begin
if ADODataSet1.Active then
begin
Label21.Caption:=ADODataSet1.FieldByName('Контрагент').AsString;
end;
if ADODataSet3.Active then
begin
Label20.Caption:=ADODataSet3.FieldByName('Инструмент').AsString;
end;
for i:=0 to PageControl1.PageCount-1 do
PageControl1.Pages[i].TabVisible:=False;
DateTimePicker1.Date:=date;
PageControl1.Pages[3].TabVisible:=True;
end;

procedure TForm1.N22Click(Sender: TObject);
begin
//Процедура добавления инструмента в накладную
if (StringGrid1.Cells[0,StringGrid1.RowCount-1]<>'') then
StringGrid1.RowCount:=StringGrid1.RowCount+1;
StringGrid1.Cells[0,StringGrid1.RowCount-1]:=ADODataSet3.FieldByName('Инструмент').AsString;
StringGrid1.Cells[1,StringGrid1.RowCount-1]:=ADODataSet3.FieldByName('Код инструмента').AsString;
StringGrid1.Cells[2,StringGrid1.RowCount-1]:=IntToStr(SpinEdit3.Value);
StringGrid1.Cells[3,StringGrid1.RowCount-1]:=IntToStr(SpinEdit4.Value);
SpinEdit3.Value:=SpinEdit3.MinValue;
SpinEdit4.Value:=SpinEdit4.MinValue;
end;

procedure TForm1.N23Click(Sender: TObject);
begin
//Процедура сохранения накладной на приход
Vvod_inf('[Накладные на приход]','[Приход инструментов]');
end;


procedure TForm1.N25Click(Sender: TObject);
begin
//Процедура сохранения накладной на выдачу
Vvod_inf('[Накладные на выдачу]','[Выдача инструментов]');
end;


procedure TForm1.Vvod_inf(name_nakladn,name_instrum:String);
var i,id : Integer;
begin
//Процедура записи накладной в таблицу
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('insert into '+name_nakladn+'([Дата накладной],[Код контрагента]) ');
ADOQuery1.SQL.Add('values (');
ADOQuery1.SQL.Add(QuotedStr(FormatDateTime('dd.mm.yyyy',DateTimePicker1.Date))+',');
ADOQuery1.SQL.Add(ADODataSet1.FieldByName('Код контрагента').AsString+')');
try
ADOQuery1.ExecSQL;
//id-номер последней накладной
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select @@Identity as id');
ADOQuery1.Open;
id:=ADOQuery1.FieldByname('id').AsInteger;
ADOQuery1.Close;

for i:=1 to StringGrid1.RowCount-1 do
begin
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('insert into '+name_instrum);
ADOQuery1.SQL.Add(' values (');
ADOQuery1.SQL.Add(IntToStr(id)+',');
ADOQuery1.SQL.Add(StringGrid1.Cells[1,i]+',');
ADOQuery1.SQL.Add(StringGrid1.Cells[2,i]+',');
ADOQuery1.SQL.Add(StringGrid1.Cells[3,i]+')');
ShowMessage(ADOQuery1.SQL.Text);
ADOQuery1.ExecSQL;
StringGrid1.Cells[0,i]:='';
StringGrid1.Cells[1,i]:='';
StringGrid1.Cells[2,i]:='';
StringGrid1.Cells[3,i]:='';
StringGrid1.Cells[4,i]:='';
end;
StringGrid1.RowCount:=2;
Application.MessageBox('Новая накладная добавлена!','Сообщение',mb_Ok+mb_ICONINFORMATION);
except
Application.MessageBox('Ошибка при добавлении новой накладной!','Сообщение',mb_Ok+mb_ICONINFORMATION);
end;
end;

procedure TForm1.N27Click(Sender: TObject);
var i : Integer;
begin
//Процедура просмотра накладных на приход
StatusBar4.Panels[0].Text:='';
StatusBar4.Panels[1].Text:='';
ADODataSet4.Close;
ADODataSet4.CommandText:='SELECT [Накладные на приход].[Номер накладной], '+
'[Накладные на приход].[Дата накладной], '+
'trim(Контрагенты.Контрагент) as Контрагент, Контрагенты.[ИНН контрагента] '+
'FROM [Накладные на приход] INNER JOIN Контрагенты '+
'ON [Накладные на приход].[Код контрагента] = Контрагенты.[Код контрагента] '+
'WHERE ((([Накладные на приход].[Дата накладной]) Between #'+
FormatDateTime('yyyy-mm-dd',DateTimePicker2.Date)+'#'+' and #'+
FormatDateTime('yyyy-mm-dd',DateTimePicker3.Date)+'#))';
ADODataSet4.Open;
for i:=0 to PageControl1.PageCount-1 do
PageControl1.Pages[i].TabVisible:=False;
PageControl1.Pages[4].TabVisible:=True;
TabSheet5.Caption:='Накладные на приход';
StatusBar4.Panels[0].Text:='Запись '+IntToStr(DataSource4.DataSet.Recno);
StatusBar4.Panels[1].Text:='Всего '+IntToStr(DataSource4.DataSet.RecordCount);
end;

procedure TForm1.N28Click(Sender: TObject);
var i : Integer;
begin
//Процедура просмотра накладных на выдачу
StatusBar4.Panels[0].Text:='';
StatusBar4.Panels[1].Text:='';
ADODataSet4.Close;
ADODataSet4.CommandText:='SELECT [Накладные на выдачу].[Номер накладной], '+
'[Накладные на выдачу].[Дата накладной], '+
'trim(Контрагенты.Контрагент) as Контрагент, Контрагенты.[ИНН контрагента] '+
'FROM [Накладные на выдачу] INNER JOIN Контрагенты '+
'ON [Накладные на выдачу].[Код контрагента] = Контрагенты.[Код контрагента] '+
'WHERE ((([Накладные на выдачу].[Дата накладной]) Between #'+
FormatDateTime('yyyy-mm-dd',DateTimePicker2.Date)+'# and #'+
FormatDateTime('yyyy-mm-dd',DateTimePicker3.Date)+'#))';
ADODataSet4.Open;
for i:=0 to PageControl1.PageCount-1 do
PageControl1.Pages[i].TabVisible:=False;
PageControl1.Pages[4].TabVisible:=True;
TabSheet5.Caption:='Накладные на выдачу';
StatusBar4.Panels[0].Text:='Запись '+IntToStr(DataSource4.DataSet.Recno);
StatusBar4.Panels[1].Text:='Всего '+IntToStr(DataSource4.DataSet.RecordCount);
end;

procedure TForm1.DataSource4DataChange(Sender: TObject; Field: TField);
var name_table : String;
begin
//Процедура показа инструментов при изменении номера накладной
ADODataSet5.Close;
if not ADODataSet4.Active then exit;
if ADODataSet4.RecordCount=0 then exit;
//Процедура просмотра накладных на выдачу
if (TabSheet5.Caption='Накладные на приход') then
name_table:='[Приход инструментов]'
else
name_table:='[Выдача инструментов]';

ADODataSet5.CommandText:='SELECT Инструмент.Инструмент, '+name_table+'.Количество, '+
name_table+'.[Цена единицы] '+
'FROM '+name_table+' INNER JOIN Инструмент '+
'ON '+name_table+'.[Код инструмента] = Инструмент.[Код инструмента] '+
'WHERE ((('+name_table+'.[Номер накладной])='+ADODataSet4.FieldByName('Номер накладной').AsString+'));';
ADODataSet5.Open;
StatusBar4.Panels[0].Text:='Запись '+IntToStr(DataSource4.DataSet.Recno);
StatusBar4.Panels[1].Text:='Всего '+IntToStr(DataSource4.DataSet.RecordCount);
end;

procedure TForm1.N29Click(Sender: TObject);
var name_table : String;
begin
//Процедура для удаления накладной и инструментов по ней
if (not ADODataSet4.Active) then exit;
if ADODataSet4.RecordCount=0 then exit;
if Application.MessageBox(Pchar('Удалить накладную <'+trim(ADODataSet4.FieldByName('Номер накладной').AsString)+'> ?'),'Вопрос ',mb_YESNO+mb_ICONEXCLAMATION)=IDNO then
exit;
if (TabSheet5.Caption='Накладные на приход') then
name_table:='[Приход инструментов]'
else
name_table:='[Выдача инструментов]';

ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('delete from '+name_table);
ADOQuery1.SQL.Add('where [Номер накладной]='+ADODataSet4.FieldByName('Номер накладной').AsString);
try
ADOQuery1.ExecSQL;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('delete from ['+TabSheet5.Caption+']');
ADOQuery1.SQL.Add('where [Номер накладной]='+ADODataSet4.FieldByName('Номер накладной').AsString);
ADOQuery1.ExecSQL;
ADODataSet4.Close;

Application.MessageBox('Накладная удалена!','Сообщение',mb_Ok+mb_ICONINFORMATION);
ADODataSet4.IndexFieldNames:='[Номер накладной]';
ADODataSet4.Open;
StatusBar4.Panels[1].Text:='Всего '+IntToStr(DataSource4.DataSet.RecordCount);
except
Application.MessageBox('Ошибка при удалении накладной!','Сообщение',mb_Ok+mb_ICONINFORMATION);
end;
end;

procedure TForm1.DataSource3DataChange(Sender: TObject; Field: TField);
begin
//Процедура показа номера записи при просмотре инструментов
StatusBar3.Panels[0].Text:='Запись '+IntToStr(DataSource3.DataSet.Recno);
StatusBar3.Panels[1].Text:='Всего '+IntToStr(DataSource3.DataSet.RecordCount);
end;

procedure TForm1.N30Click(Sender: TObject);
var i,j : Integer;
MSExcel,WorkBook,Sheet : Variant;
varr : String;
begin
//Процедура для вывода накладной в Excel
try
MSExcel := CreateOleObject('Excel.Application');
except
Application.MessageBox('Невозможна работа с Microsoft Excel!','Сообщение',mb_Ok+mb_ICONINFORMATION);
exit;
end;
Screen.Cursor:=crHourGlass;
if MSExcel.Workbooks.Count=0 then
WorkBook := MSExcel.WorkBooks.Add
else
WorkBook := MSExcel.WorkBooks[1] ;
MSExcel.WorkBooks.Open(FileName:=ExtractFilePath(Application.ExeName)+'Накладная.xls');
MSExcel.Cells.Select;
MSExcel.Selection.Copy;
Sheet:= WorkBook.WorkSheets.Add;
Sheet.Paste;
MSExcel.Application.CutCopyMode:=False;
MSExcel.ActiveWorkbook.Close;
if (TabSheet5.Caption='Накладные на приход') then
MSExcel.range['C11'].Select
else
MSExcel.range['C13'].Select;
MSExcel.ActiveCell.FormulaR1C1:=ADODataSet4.FieldByName('Контрагент').AsString;
MSExcel.range['G21'].Select;
MSExcel.ActiveCell.FormulaR1C1:=ADODataSet4.FieldByName('Номер накладной').AsInteger;
MSExcel.range['H21'].Select;
MSExcel.ActiveCell.FormulaR1C1:=ADODataSet4.FieldByName('Дата накладной').AsString;
ADODataSet5.First;
i:=25;
while not ADODataSet5.Eof do
begin
MSExcel.Workbooks[1].WorkSheets[1].range['B'+IntToStr(i)].Select;
MSExcel.ActiveCell.FormulaR1C1:=ADODataSet5.FieldByName('Инструмент').AsString;
MSExcel.Workbooks[1].WorkSheets[1].range['J'+IntToStr(i)].Select;
MSExcel.ActiveCell.FormulaR1C1:=ADODataSet5.FieldByName('Количество').AsInteger;
MSExcel.Workbooks[1].WorkSheets[1].range['K'+IntToStr(i)].Select;
MSExcel.ActiveCell.FormulaR1C1:=FormatFloat('0.00',ADODataSet5.FieldByName('Цена единицы').AsFloat);
MSExcel.Workbooks[1].WorkSheets[1].range['L'+IntToStr(i)].Select;
MSExcel.ActiveCell.FormulaR1C1:=FormatFloat('0.00',
ADODataSet5.FieldByName('Цена единицы').AsFloat*ADODataSet5.FieldByName('Количество').AsInteger);
i:=i+1;
ADODataSet5.Next;
end;
//очистка буфера
MSExcel.Application.CutCopyMode:=False;
MSExcel.ActiveSheet.PageSetup.Orientation:=2;
try
MSExcel.ActiveSheet.PageSetup.LeftMargin:=0;
MSExcel.ActiveSheet.PageSetup.RightMargin:=0;
MSExcel.ActiveSheet.PageSetup.TopMargin:=0.1;
MSExcel.ActiveSheet.PageSetup.BottomMargin:=0.1;
except
end;
Screen.Cursor:=crDefault;
MSExcel.DisplayAlerts:=False;
MSExcel.Visible:=True;
end;

procedure TForm1.N21Click(Sender: TObject);
var i : Integer;
begin
//Процедура для ввода периода для аналитики
for i:=0 to PageControl1.PageCount-1 do
PageControl1.Pages[i].TabVisible:=False;
PageControl1.Pages[5].TabVisible:=True;

end;

procedure TForm1.N31Click(Sender: TObject);
begin
//Процедура для формирования количества имеющихся инструментов (остатка)
DBGrid6.Visible:=True;
ADODataSet6.Close;
ADODataSet6.CommandText:='SELECT Инструмент.Инструмент, CC.Приход, CC.Выдача, '+
' IIf(IsNull( CC.Выдача),CC.Приход,CC.Приход-CC.Выдача) AS Остаток '+
'FROM ( '+
'SELECT AA.[Код инструмента], AA.Приход, BB.Выдача '+
' FROM ( '+
'SELECT [Приход инструментов].[Код инструмента], Sum([Приход инструментов].Количество) AS Приход '+
'FROM [Приход инструментов] INNER JOIN [Накладные на приход] ON [Приход инструментов].[Номер накладной] = [Накладные на приход].[Номер накладной] '+
'WHERE ((([Накладные на приход].[Дата накладной])<=#'+FormatDateTime('yyyy-mm-dd',DateTimePicker5.Date)+'#)) '+
'GROUP BY [Приход инструментов].[Код инструмента] ) AA '+
'LEFT JOIN '+
'(SELECT [Выдача инструментов].[Код инструмента], Sum([Выдача инструментов].Количество) AS Выдача '+
'FROM [Накладные на выдачу] INNER JOIN [Выдача инструментов] ON [Накладные на выдачу].[Номер накладной] = [Выдача инструментов].[Номер накладной] '+
'WHERE ((([Накладные на выдачу].[Дата накладной])<=#'+FormatDateTime('yyyy-mm-dd',DateTimePicker5.Date)+'#)) '+
'GROUP BY [Выдача инструментов].[Код инструмента]) BB '+
'on AA.[Код инструмента]=BB.[Код инструмента]) CC '+
'LEFT JOIN Инструмент ON CC.[Код инструмента]=Инструмент.[Код инструмента]';
ADODataSet6.Open;
end;

procedure TForm1.N32Click(Sender: TObject);
var i : Integer;
TC : TColor;
r,g,b : Integer;
begin
//Процедура для формирования поступлений инструментов по видам инструментов и рисования круговой диаграммы
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('SELECT [Виды инструмента].[Вид инструмента], Sum([Приход инструментов].Количество*[Приход инструментов].[Цена единицы]) AS Стоимость ');
ADOQuery1.SQL.Add('FROM ([Приход инструментов] INNER JOIN [Накладные на приход] ON [Приход инструментов].[Номер накладной] = [Накладные на приход].[Номер накладной]) ');
ADOQuery1.SQL.Add('INNER JOIN (Инструмент INNER JOIN [Виды инструмента] ON Инструмент.[Код вида инструмента] = [Виды инструмента].[Код вида инструмента]) ');
ADOQuery1.SQL.Add('ON [Приход инструментов].[Код инструмента] = Инструмент.[Код инструмента] ');
ADOQuery1.SQL.Add('WHERE ((([Накладные на приход].[Дата накладной]) between #');
ADOQuery1.SQL.Add(FormatDateTime('yyyy-mm-dd',DateTimePicker4.Date)+'# and #'+
FormatDateTime('yyyy-mm-dd',DateTimePicker5.Date)+'# ))');
ADOQuery1.SQL.Add('GROUP BY [Виды инструмента].[Вид инструмента];');
ADOQuery1.Open;
Chart1.Align:=AlClient;
Chart1.Title.Text.Clear;
Chart1.Title.Text.Add('Поступление по видам инструментов (руб.) с '+DateToStr(DateTimePicker4.Date)+' по '+DateToStr(DateTimePicker5.Date));
Chart1.Series[0].Clear;
r:=150;g:=0;b:=0;
while not ADOQuery1.Eof do
begin
TC:=RGB(r,g,b);
Chart1.Series[0].Add(ADOQuery1.FieldByName('Стоимость').AsInteger,
ADOQuery1.FieldByName('Вид инструмента').AsString, TC);
ADOQuery1.Next;
r:=r+20;
g:=g+30;
b:=b+30;
end;
ADOQuery1.Close;
Chart1.Visible:=True;

end;

procedure TForm1.N33Click(Sender: TObject);
begin
//Процедура для вывода графика по дням
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('SELECT AA.[Дата накладной],Приход, Выдача ');
ADOQuery1.SQL.Add('FROM (SELECT [Накладные на приход].[Дата накладной], Sum([Приход инструментов].Количество*[Приход инструментов].[Цена единицы]) AS Приход ');
ADOQuery1.SQL.Add('FROM [Приход инструментов] INNER JOIN [Накладные на приход] ON [Приход инструментов].[Номер накладной] = [Накладные на приход].[Номер накладной] ');
ADOQuery1.SQL.Add('WHERE ((([Накладные на приход].[Дата накладной]) between #');
ADOQuery1.SQL.Add(FormatDateTime('yyyy-mm-dd',DateTimePicker4.Date)+'# and #'+
FormatDateTime('yyyy-mm-dd',DateTimePicker5.Date)+'# ))');
ADOQuery1.SQL.Add('GROUP BY [Накладные на приход].[Дата накладной]) AA ');
ADOQuery1.SQL.Add('LEFT JOIN (SELECT [Накладные на выдачу].[Дата накладной], Sum([Выдача инструментов].Количество*[Выдача инструментов].[Цена единицы]) AS Выдача ');
ADOQuery1.SQL.Add('FROM [Выдача инструментов] INNER JOIN [Накладные на выдачу] ON [Выдача инструментов].[Номер накладной] = [Накладные на выдачу].[Номер накладной] ');
ADOQuery1.SQL.Add('WHERE ((([Накладные на выдачу].[Дата накладной]) between #');
ADOQuery1.SQL.Add(FormatDateTime('yyyy-mm-dd',DateTimePicker4.Date)+'# and #'+
FormatDateTime('yyyy-mm-dd',DateTimePicker5.Date)+'# ))');
ADOQuery1.SQL.Add('GROUP BY [Накладные на выдачу].[Дата накладной]) BB ON AA.[Дата накладной]=BB.[Дата накладной]; ');
ADOQuery1.SQL.SavetoFile('c:\1.txt');
ADOQuery1.Open;
Chart2.Align:=AlClient;
Chart2.Title.Text.Clear;
Chart2.Title.Text.Add('Доход по дням (руб.) с '+DateToStr(DateTimePicker4.Date)+' по '+DateToStr(DateTimePicker5.Date));
Chart2.Series[0].Clear;

while not ADOQuery1.Eof do
begin
Chart2.Series[0].AddXY(StrToInt(copy(ADOQuery1.FieldByName('Дата накладной').AsString,1,2)),
ADOQuery1.FieldByName('Приход').AsInteger,
'',clRed);
Chart2.Series[1].AddXY(StrToInt(copy(ADOQuery1.FieldByName('Дата накладной').AsString,1,2)),
ADOQuery1.FieldByName('Выдача').AsInteger,
'',clYellow);
ADOQuery1.Next;
end;
ADOQuery1.Close;
Chart2.Visible:=True;
end;
end.



Графическая часть































93



Юридический отдел

Отдел рекламы

Отдел закупок

Бухгалтерия

Главный бухгалтер

Работники склада

Сотрудники магазинов

Заведующий складом

Начальник отдела кадров

Директоры магазинов

Менеджеры предприятия

Зам. директора по общим вопросам

Зам. директора по развитию

Руководитель предприятия

БД управления системой производства





БД управления нижним звеном

БД управления средним звеном

БД управления организацией

БД управления нижним звеном

БД управления средним звеном

БД управления организацией

СУБД

Пользователь

Оперативное управление

Общее экономическое управление

Технологическое управление

Остаток на складе

Доход по дням

По видам инструментов

Печать накладной

Удаление

Просмотр накладных на выдачу


Просмотр накладных на приход


Сохранение накладной на выдачу


Сохранение накладной на приход

Добавление инструмента в накладную

Новая накладная

Поиск

Изменение

Удаление

Добавление

Просмотр

Поиск

Изменение

Удаление

Добавление

Просмотр

Поиск

Изменение

Удаление

Добавление

Просмотр

Работа с накладными

Аналитические формы

Ввод накладных

Справочники

Вид инструмента

Бизнес-стратегия

Уровни «ДЕРЕВА»


Инструмент

Контрагенты

АИС ООО «Канефуса Инструменты»

Цель


Задача


Функция


Бизнес-процесс


Бизнес-решение


Автоматизация бизнес-процессов

Обеспечение устойчивого конкурентного преимущества фирмы

Уменьшение затрат ручного труда

Исключение дублирования данных

Повышение достоверности информации

Актуализация справочной и оперативной информации

Получение выходных документов

АИС по вводу и изменению информации

АИС по получению отчетных форм

Получение информации о количестве имеющихся инструментов

Анализ отчетных форм в экранном и графическом виде

Принятие решения о закупке инструментов необходимого количества и ассортимента

Увеличение оперативности принятия решений по закупке инструментов


Сокращение ошибок при принятии решений по закупке инструментов


Уменьшение затрат времени на формирование отчетности

Увеличение прибыли фирмы


Увеличение производительности труда

Уменьшение количества непроданных инструментов


Увеличение продаж инструментов

Список использованных источников
1.Аакер Д. Стратегическое рыночное управление. 7-е изд. / Пер. с англ. Под ред. С. Г. Божук. — СПб.: Питер, 2007. — 496 с: ил. — ISBN 978-5-469-01301-3, 5-469-01301-4.
2.Автоматизированные информационные технологии в экономике. Учебник под ред. проф. Титоренко Г.А. – М.: «Юнити», 2003. – 399 с. – ISBN 5-238-00040-5.
3.Андерсен, В. Базы данных Microsoft Access. Проблемы и решения: Практ. пособ., пер. с англ. / В. Андерсен — М.: Издательство ЭКОМ, 2001.—384 с.: ил. – ISBN 5-7163-0082-0
4.Арустамов, Э.А. Охрана труда: Справочник / Э. А. Арустамов. — М.: Издательско-торговая корпорация «Дашков и К», 2008.— 588 с. ISBN 978-5-91131-551-1.
5.Архангельский, А.Я. Программирование в Delphi 7 / А.Я. Архангельский – Бином-Пресс, 2003. – 1152 с. - ISBN 5-9518-0042-0.
6.Архангельский, А.Я. Delphi 2006. Справочное пособие. Язык Delphi, классы, функции Win32 и .NET / А.Я. Архангельский – Бином-Пресс, 2003. – 1152 с. - ISBN 5-9518-0138-9.
7.Бакнелл, Д. Фундаментальные алгоритмы и структуры данных в Delphi / Д. Бакнелл – СПб.: Питер, 2006. – 560 с. - ISBN 5-469-01495-9, 5-93772-087-3.
8.Бекаревич, Ю. Самоучитель Microsoft Access 2002 / Ю.Бекаревич, Н.Пушкина – СПб.: «БХВ-Петербург», 2002. – 720 с. – ISBN: 5-8206-0033-9
9.Бобровский, С.И. Delphi 7. Учебный курс / С.И. Бобровский – СПб.: Питер, 2008. – 736 с.: ил. - ISBN 978-5-8046-0086-1.
10.Борисов, Е.Ф. Экономическая теория: Учебник. —М.: Юрайт-Издат, 2005. — 399 с. —ISBN 5-94879-217-Х.
11.Веснин, В. Р. Менеджмент: учеб. / В.Р. Веснин — М.: ТК Велби, Изд-во Проспект, 2006. — 504 с. — ISBN 5-482-00517-8.
12.Гандерлой, Майк, Харкинз, Сьюзан Сейлз. Автоматизация Microsoft Access с помощью VBA / Майк Гандерлой, Сьюзан Сейлз Харкинз –М.: Издательский дом «Вильямс», 2006. – 416 с. : ил. – ISBN 5-8459-0959-7 (рус.)
13.Гончаров, А. Ю. ACCESS 2003. Самоучитель с примерами / А.Ю. Гончаров — М.: КУДИЦ-ОБРАЗ, 2004. — 272 с: ил. ISBN 5-9579-0021-4.
14.Гохберг, Г.С. Информационные технологии: Учебник для сред. проф. образования / Г.С. Гохберг, А.В. Зафиевский, А.А. Короткин – М.: Издательский центр «Академия», 2004. – 206 с. ISBN 5-7695-1643-7.
15.Грабауров, В. А. Информационные технологии для менеджеров / В.А. Грабауров – М.: Финансы и статистика, 2001.– 368 с.: ил. ISBN 5-279-02299-3
16.Грабер, М. Введение в SQL / Пер. с англ. В. Ястребов – Издательство «Лори», 1996. – 380 с. – ISBN: 5-85582-010-6.
17.Дженнингс, Р. Использование Microsoft Office Access 2003 / Пер. с англ. Р.Дженнингс: пер. с англ. И. Тараброва – «Вильямс», 2005. – 1300 с. – ISBN 5-8459-0691-1.
18.Зуб, А. Т. Стратегический менеджмент: Теория и практика: Учебное пособие для вузов / А.Т. Зуб. — M.: Аспект Пресс, 2002. — 415 с. —ISBN 5-7567-0164-8.
19.Ильин, А.И. Планирование на предприятии: Учебник / А.И. Ильин. —Мн.: Новое знание, 2001. —635 с. — ISBN 985-6516-59-5.
20.Информатика: Учебник / Под общ. ред. А.Н. Данчула. — М.: Изд-во РАГС, 2004. – 528 с. – ISBN 5-7729-0147-8.
21.Информатика: учебник / Б.В. Соболь и др. — Изд. 3-е, дополн. и перераб. — Ростов н/Д: Феникс, 2007. — 446 с. — ISBN 978-5-222-12081-1.
22.Карпов, Б. Delphi: специальный справочник / Б. Карпов – СПб.: Питер, 2002. – 688 с.: ил. – ISBN 5-272-00353-5.
23.Кузин, А. В. Базы данных: учеб. пособие для студ. высш. учеб. заведений / А.В. Кузин, С.В. Левонисова. — 2-е изд., стер. — М.: Изда¬тельский центр «Академия», 2008. — 320 с. – ISВN 978-5-7695-4833-8.
24.Кэнту, М. Delphi 7 для профессионалов / Марко Кэнту – СПб.: Питер, 2004. – 1076 с.: ил. - ISBN 5-94723-593-5.
25.Марков А.С., Лисовский К.Ю. Базы данных. Введение в теорию и методологию: Учебник / А.С. Марков, К.Ю. Лисовский — М.: Финансы и статистика, 2006. - 512 с: ил. — ISBN 5-279-02298-5.
26.Михеева, Е.В. Информационные технологии в профессиональной деятельности: учеб. пособие. – М.: ТК Велби, Изд-во Проспект, 2007. – 448 с. – ISBN: 978-5-482-01569-8.
27.Проектирование баз данных. СУБД Microsoft Access: Учебное пособие для вузов / Н. Н. Гринченко, Е. В. Гусев, Н. П. Макаров, А. Н. Пылькин, Н. И. Цуканова. - М.: Горячая линия-Телеком, 2004. — 240с.: ил. — ISBN 5-93517-193-7.
28.Румянцева З.П.Общее управление организацией. Теория и практика: Учебник. — М.: ИНФРА-М, 2007. — 304 с. — ISBN 978-5-16-002276-5.
29.Симонович, С.В. Информатика. Базовый курс. 2-е издание / Под ред. С.В.Симоновича. — СПб.: Питер, 2004. — 640 с.: ил. – ISBN 5-94723-752-0.
30.Степанов, А.Н. Информатика. Учебник для вузов. 4-е издание / А.Н.Степанов. — СПб.: Питер, 2005. — 684 с.: ил. – ISBN 5-94723-898-5.
31.Стратегический менеджмент / Под ред. Петрова А. Н. — СПб.: Питер, 2005. — 496 с: ил. — ISBN 5-469-00163-6.
32.Фленов, М.Е. Программирование в Delphi глазами хакера. / М.Е. Фленов – СПб.: БХВ-Петербург, 2005. – 368 с.: ил. - ISBN 5-94157-351-0.
33.Шеремет А.Д. Комплексный анализ хозяйственной деятельности. — М.: ИНФРА-М,2006. — 415 с. — ISBN 5-16-002687-8.
34.Шумаков, П.В. Delphi 3 и разработка приложений баз данных / П.В. Шумаков. – М.: Нолидж, 1999. – 704 с.: ил. - ISBN 5-89251-022-0.
35.Шпак, Ю. А. Delphi 7 на примерах / Ю. А. Шпак. – М.: Юниор, 2003. – 344 с. ISBN: 966-7323-28-5.
36.Экономика / Учебник под ред. доц. А.С. Булатова. — М.: БЕК, 2005. — 511 с. — ISBN 5-85639-070-9, ISBN 3-40638-861-2.
37.Экономика организаций (предприятий) / Учебник для вузов под ред. проф. В.Я. Горфинкеля, проф. В.А. Швандара. — М.: ЮНИТИ-ДАНА, 2003. - 608 с. — ISBN 5-238-00517-2.
38.Экономика предприятия / Под ред. доктора эконом. наук Покропивного С.Ф. — Киев, КНЕУ, 2003 . — 608 с. — ISBN 966-574-413-5.
39.ГОСТ Р 50948—96 «Дисплеи. Средства ото¬бражения информации индивидуального пользования. Общие эргономические требования и требования безопасности».
40.ГОСТ 34.003-90 «Информационная технология. Термины и определения».
41.РД 50-680-88 «Методические указания. Ав¬томатизированные системы. Основные положения»
42.Сани¬тарные нормы СанГТиН 2.2.2.542—96 «Гигиенические требова¬ния к видеодисплейным терминалам, персональным электронно-вычислительным машинам и организации работы».

Вопрос-ответ:

Какие основные характеристики предприятия описываются в аналитической части?

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

Какие выводы могут быть сделаны по аналитической части разработки АИС торгового предприятия ООО Канефуса Инструменты?

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

Какие проектные решения по автоматизации экономико-информационных задач предлагаются в разработке АИС торгового предприятия ООО Канефуса Инструменты?

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

Какие модели бизнес-процессов используются в разработке АИС торгового предприятия ООО Канефуса Инструменты?

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

Какие данные исследуются при проведении анализа конъюнктуры рынка в разработке АИС торгового предприятия ООО Канефуса Инструменты?

При анализе конъюнктуры рынка исследуются данные о ситуации на рынке, показатели спроса и предложения, конкуренция и другие факторы, которые влияют на деятельность предприятия.

Какие функции выполняет разработка АИС торгового предприятия?

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

Какие задачи решает разработка АИС торгового предприятия?

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

Какие преимущества имеет разработка АИС торгового предприятия для бизнеса?

Разработка АИС торгового предприятия позволяет снизить трудозатраты на учет и административные процессы, повысить эффективность работы предприятия, обеспечить точность и актуальность информации, оптимизировать управленческие решения, улучшить обслуживание клиентов и другие преимущества.

Какие требования предъявляются к разработке АИС торгового предприятия?

К разработке АИС торгового предприятия предъявляются требования к надежности и безопасности системы, удобству использования, масштабируемости, поддержке различных видов деятельности предприятия, интеграции с другими информационными системами и другим параметрам.

Какие результаты можно ожидать от внедрения разработки АИС торгового предприятия?

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