Разработка информационной системы воинского учета

Анализ существующей методики воинского учета. Схема архитектуры и программная реализация разрабатываемого АРМ специалиста отдела мобилизационной работы и комплектования. Логическая структура реляционной базы данных. Результаты тестирования программы.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 16.05.2013
Размер файла 1,4 M

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

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

Опасным называется производственный фактор, воздействие которого на работающего в определенных условиях приводит к внезапному ухудшению здоровья. Если производственный фактор вызывает заболевание или снижает работоспособность, то его считают вредным (ГОСТ 12.0.002-80). В зависимости от уровня продолжительности воздействия вредный фактор может стать опасным.

В ГОСТ 12.0.003-74 "ССБТ. Опасные и вредные производственные факторы. Классификация" приводится классификация элементов условий труда, выступающих в роли опасных и вредных производственных факторов. Они подразделяются на четыре группы: физические, химические, биологические, психофизиологические.

При работе с ЭВМ мы сталкиваемся, в основном, с физическими и психофизиологическими - опасными и вредными производственными факторами. Биологические и химические - опасные факторы при этой работе не встречаются.

К физическим - опасным производственным факторам при работе с ЭВМ, можно отнести:

- электромагнитные излучения;

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

- повышенная запыленность воздуха в рабочей зоне;

- повышенная температура воздуха в рабочей зоне;

- повышенный уровень шума на рабочем месте;

- недостаток или отсутствие естественного света;

- неправильное размещение источников искусственного освещения.

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

Рентгеновское излучение генерируется в результате торможения электронов в слое люминофора на поверхности экрана монитора. При ускоряющем анодном напряжении менее 25 кВ энергия рентгеновского излучения полностью поглощается стеклом экрана.

Электростатический потенциал вне монитора появляется вследствие высокого напряжения в электронно-лучевой трубке (ЭЛТ), а его природа аналогична электрическому полю кинескопа обычного телевизора. Напряжение, возникающее на теле человека, может достигать нескольких киловольт; его величина зависит от одежды, от влажности окружающего воздуха. При длительной работе с компьютером под воздействием заряженных частиц на теле человека может появиться аллергическая сыпь.

К опасным психофизиологическим и вредным производственным факторам относятся физические (статические и динамические), нервно-психические перегрузки (умственное перенапряжение, перенапряжение анализаторов, монотонность труда, эмоциональные перегрузки) [10].

4.2 Безопасность, эргономика и техническая эстетика рабочего места инженера-программиста

Эргономическая безопасность персонального компьютера может быть охарактеризована следующими требованиями:

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

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

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

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

Если при работе на ПК необходимо одновременно пользоваться документами, то следует иметь в виду, что зрительная работа с печатным текстом и с изображением на экране имеет принципиального отличия: изображение светится, мелькает, дрожит, состоит из дискретных элементов, менее контрастно. Снизить или устранить утомление можно только правильным выбором режима воспроизведения изображения на экране, источника освещения (местного или общего), расположения материалов (в целях уменьшения длины или частоты перевода взгляда).

Человек должен так организовать свое рабочее место, чтобы условия труда были комфортными и соответствовали требованиям СНиП:

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

- достаточное пространство для выполнения необходимых движений и перемещений (руки при работе с клавиатурой должны находиться перед человеком; пальцы должны обладать наибольшей свободой передвижения; клавиши должны быть достаточно чувствительны к легкому нажатию);

- необходимый обзор (центр экрана монитора должен быть расположен чуть ниже уровня глаз; монитор должен отстоять от глаз человека на расстоянии 45-60 сантиметров; должна регулироваться яркость и контрастность изображения);

- рациональное расположение аппаратуры и ее органов управления и контроля (монитор должен быть расположен на расстоянии 60 сантиметров и более от монитора соседа; человек должен использовать держатель бумаги);

- достаточное освещение (внешнее освещение должно быть достаточным и равномерным; должна быть настольная лампа с регулируемым плафоном для дополнительного подсвета рабочей документации);

- нормальные условия в отношении шума и вибрации;

- нормальный температурный режим;

- нормальная влажность воздуха;

- необходимая вентиляция.

К рабочему месту инженера-программиста предъявляются следующие требования:

Требования к параметрам микроклимата и воздушной среды (ГОСТ 12.1.005-88. Общие санитарно-гигиенические требования к воздуху рабочей зоны).

Оптимальные параметры микроклимата приведены в таблице 4.1.

Таблица 4.1

Оптимальные параметры микроклимата.

Сезон

Температура воздуха,

tєС

Относительная влажность,

%

Скорость движения воздуха,м/с

Холодный и переходный (средне суточная температура меньше 10 єС)

22-24

60-40

0.1

Теплый (среднесуточная температура воздуха 10 єС и выше)

21-23

23-24

60-40

60-40

0.1

0.2

Запылённость воздуха не должна превышать 0.75 мг/м3. На одного инженера - программиста должен приходиться объём помещения 15м3 при площади 4.5 м2 (без учёта проходов и оборудования). В течение трудового дня необходимо обеспечить воздухообмен помещения объёмом 25-50 м3, отвод влаги 350-500 г и тепла 50 кДж на каждый килограмм массы тела работающего.

Требования к уровню шума (ГОСТ 12.1.003-83. Шум).

Уровень шума для инженера - программиста составляет не более 50 дБ.

Требования к освещенности;

Нормативное значение коэффициента естественного освещения (КЕО) при боковом освещении равно 1.3 %, освещённость при работе с экраном дисплея - 200 лк, при работе с экраном дисплея и документом - 300 лк.

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

В стандарт Р 50948-96 и в СНиП включены требования и нормы на параметры излучений дисплеев (они соответствуют шведскому стандарту): напряженность электромагнитного поля в 50 сантиметрах вокруг дисплея по электрической составляющей равна 2.5 В/м.

Плотность магнитного потока в 50 сантиметрах вокруг дисплея составляет 250 нТл в диапазоне частот 5 Гц-2КГц; поверхностный электростатический потенциал составляет 500 В. Время работы за дисплеем не должно превышать 4-х часов в сутки.

Требования эргономики и технической эстетики (ГОСТ 12.2.032-78. Рабочее место при выполнении работ сидя).

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

Рабочее место оператора ЭВМ состоит из монитора, системного блока, клавиатуры, мыши, принтера. Клавиатура должна быть расположена непосредственно перед оператором. Расстояние от глаз оператора до монитора должно составлять 0.5 - 0.7 м. На столе, на котором расположена ПЭВМ, должно оставаться место для наглядного, графического материала, для возможности работать с литературой, делать какие-либо пометки.

К размерам рабочего места предъявляются требования:

- высота рабочей поверхности 655 мм;

- высота сидения 420 мм (желательно регулируемого);

- расстояние от сидения до нижнего края рабочей поверхности 150мм;

- размеры пространства для ног 650x500x600.

Требования к выполнению правил пожарной безопасности.

В случае пожара необходимо:

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

- по возможности вынести легковоспламеняющиеся, взрывоопасные материалы и наиболее ценные предметы;

- приступить к тушению пожара имеющимися средствами (огнетушитель, песок и т.д.);

- для тушения пожара в лаборатории предусмотрен огнетушитель химический воздушно-пенный ОХВП-10, установленный в легко доступном месте.

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

Рассмотрим требования безопасности при работе с ЭВМ. Работа производится в лаборатории, где стоят точные приборы.

Следовательно, это подразделение можно отнести к 1 классу помещений по степени опасности поражения электрическим током. К 1 классу относятся помещения без повышенной опасности: сухие, беспыльные помещения с нормальной температурой воздуха, изолирующими (например, деревянными полами), не имеющими или имеющими очень мало заземленных предметов.

ГОСТ 12.2.007-75 подразделяет электрические изделия по способу защиты человека от поражения электрическим током на пять классов: 0, 01, 1, 2, 3.

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

Опасность поражения человека электрическим током определяется множеством факторов:

- индивидуальные особенности людей;

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

- путь тока в теле человека;

- род и частота тока.

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

Каждому работающему в лаборатории следует помнить:

- включать общий рубильник только после предупреждения всех лиц, работающих в лаборатории;

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

- не загромождать рабочее место посторонними предметами;

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

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

При поражении электрическим током следует:

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

- вызвать врача.

4.3 Создание условий для организации режима труда и отдыха при работе с ЭВМ

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

Виды трудовой деятельности разделяются на 3 категории тяжести и напряженности, каждая из которых подразделяется на 3 группы:

- группа А - работа по считыванию информации с экрана ПЭВМ с предварительным запросом;

- группа Б - работа по вводу информации;

- группа В - творческая работа в режиме диалога с ПЭВМ.

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

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

Для обеспечения оптимальной работоспособности и сохранения здоровья профессиональных пользователей, на протяжении рабочей смены рекомендуется установить регламентированные перерывы.

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

Для 8-часовой рабочей смены при работе с ПЭВМ регламентированные перерывы рекомендуется установить:

- для 1 категории работ - через 2 часа от начала рабочей смены и через 2 часа после обеденного перерыва, каждый продолжительностью 15 минут;

- для 2 категории работ - через 2 часа от начала рабочей смены и через 1.5-2 часа после обеденного перерыва продолжительностью 15 минут каждый или через каждый час работы продолжительностью 10 минут каждый;

- для 1 категории работ через 1.5-2 часа от начала рабочей и через 1.5-2 часа после обеденного перерыва продолжительностью 20 минут каждый или через каждый час работы продолжительностью 15 минут каждый.

При работе с ПЭВМ в ночную смену (с 22 до 6 часов) независимо от вида и категории трудовой деятельности, продолжительность регламентированных перерывов увеличивается на 60 минут.

При 12-часовой рабочей смене регламентированные перерывы рекомендуется установить в первые 8 часов работы аналогично перерывам при 8-часовой рабочей смене, а в течение последних 4 часов, независимо от вида и категории трудовой деятельности, каждый час работы продолжительностью 15 минут.

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

С целью уменьшения отрицательного влияния монотонности работы целесообразно изменять ее содержание.

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

4.4 Экологичность проекта

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

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

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

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

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

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

Экологические проблемы человечества тесно сопряжены с экономическими и социальными проблемами. Региональные экологические проблемы часто становятся прямым источником имущественного неравенства, социальных и геополитических коллизий [13].

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

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

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

- Отказ от природопокорительной идеологии; формирование новой идеологии и методологии экоцентризма, связанной с переходом к постиндустриальной цивилизации и направленной на экологизацию экономики, производства, политики, образования.

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

Формирование такой стратегии поведения человеческого общества, такой экономики и таких технологий, которые приведут масштабы и характер хозяйственной деятельности в соответствие с экологической выносливостью природы и остановят глобальный экологический кризис [13].

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

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

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

- материального стимулирования природоохранной деятельности, стремящегося сделать её экономически выгодной для предприятий;

- инженерной охраны, разрабатывающей природоохранную и ресурсосберегающую технологию и технику.

Охране подлежат следующие объекты:

- естественные экологические системы, озоновый слой атмосферы;

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

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

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

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

- параметрическое загрязнение (параметр окружающей среды - одно из ее свойств, например уровень шума, освещенности, радиации и т.д.), связанное с изменением качественных параметров окружающей среды;

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

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

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

Существует два основных направления природоохранной деятельности предприятий. Первое - очистка вредных выбросов.

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

ЗАКЛЮЧЕНИЕ

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

Разработанное программное средство позволит:

- хранить, обрабатывать и анализировать хранимую информацию о призывных и мобилизационных людских ресурсах;

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

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

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

После аналитического исследования предметной области и информационных объектов была создана база данных в СУБД Access. Обоснована и применена наиболее удобная в данном случае технология обмена данными между приложением и базой данных ActiveX Data Object.

Разработано приложение с удобным интерфейсом пользователя в современной среде программирования Delphi 7. Приложение позволяет вводить справочную и оперативную информацию, делать разносторонние запросы к базе. Кроме этого вся информация базы данных легко просматривается, и необходимые документы выводятся на печать.

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

воинский учет программа база данных

СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ

1 Автоматизированные информационные технологии в экономике: учебник/ под ред. Титоренко Г.А. - М: ЮНИТИ, 2003 г.

2 Антонюк. Информационные системы в управлении. М.: 2006.

3 Ахаян Р. и др., Эффективная работа с СУБД, Санкт-Петербург, «Питер», 2003 г.

4 Бемер С., Фратер Г. Microsoft Access для пользователя. - Киев: Торгово-издательское бюро BHV, 1994, М:Фирма БИНОМ, 2005 г.

5 Бекаревич Ю. Самоучитель Access 2003 - СПб.:БХВ-Петербург, 2003г.

6 Бойко В.В., Савинков В.М. “Проектирование информационной базы автоматизированной системы на основе СУБД.” М.: Финансы и статистика.

7 ГОСТ Р 50377-92. Безопасность оборудования информационной технологии, включая электрическое конторское оборудование.

8 ГОСТ Р 50923-96. Дисплеи. Рабочее место оператора. Общие эргономические требования и требования к производственной среде. Методы измерения.

9 ГОСТ Р 50948-96. Средства отображения информации индивидуального пользования.

10 ГОСТ Р 51141-98 Делопроизводство и архивное дело. Термины и определения. - М., Госстандарт России, 1998.

11 Санитарные нормы и правила для работников вычислительных центров. Микроклимат производственных помещений. /В сб. Санитарные правила и нормы по гигиене труда в промышленности.

12 Замулин А.В., Системы программирования баз данных и знаний.- Новосибирск: Наука, 2006 г.

13 Кобевник В.Ф. “Охрана труда.” - К.: Высшая школа, 2003 г.

14 Когаловский М.Р. Технология баз данных на персональных ЭВМ.-М.: Финансы и статистика, 2005 г.

15 Куправа Т.Д. Создание и программирование баз данных средствами СУБД. - М.: Мир, 2004 г.

16 Ларичев О.И., Петровский А.В. «Системы поддержки принятия решений. Современное состояние и перспективы их развития», 2005.

17 Марков А.С., Лисовский К.Ю. Базы данных. Введение в теорию и методологию. - М.: Финансы и статистика, 2004 г.

18 Мищенин А.И., Теория экономических информационных систем, М.: Финансы и статистика , 2004 г.

Приложение А

Книга алфавитного учета личного состава

№ п/п

Фамилия, имя и отчество. Дата рождения. В каком подразделении проходит службу

Место и время призыва. Из какой части прибыл.

Номер учетно-послужной или личной карточки

Семейное положение. Фамилия, имя и отчество жены (отца, матери или другого родственника). Адрес семьи

Дата и номер приказа о зачислении в списки части, в каком в/звании и должности

В каком в/звании и должности выбыл из части

По какой причине и куда выбыл. Дата и номер приказа об исключении из списков части

1

2

3

4

5

6

Пример заполнения

Капанов Аманбай Шаукенович

Аршалинским УДО Акмолинской области, 25.04.2006 г.

Холост. Отец - Капанов Шаукен Досмаганбетович, г.Аршалы, ул.Богенбай батыра, д. 7, кв. 17

26.04.2006 г., № 159 рядовой, стрелок

Уволен по окончании срока службы. Аршалинский УДО Акмолинской области, 29.04.2007 г. № 177

рядовой, стрелок

Приложение Б

Книга алфавитного учета личного состава

№ п/п

Фамилия, имя и отчество

Личный номер

Воинское звание, чей приказ о присвоении, его номер и дата

Серия и номер удостоверения личности

Дата и номер приказа по части о зачислении в списки

Занимаемая должность, чей приказ о назначении, его номер и дата

Число, месяц и год рождения

Место рождения

Национальность

Образование:

а) гражданское

б) военное (военно-специальное), № ВУС

С какого времени в ВС РК и каким

ОДО (УДО) призван. Из какой части прибыл

Семейное положение, фамилия, имя, отчество и год рождения жены, имена и года рождения детей. Адрес семьи

На какую должность и куда выбыл, номер и дата приказа по личному составу. Дата приказа по части об исключении из списков

1

2

3

4

5

6

7

8

9

10

Приложение В

Книга штатно-должностного учета личного состава

№ п/п

Должность по штату

№ ВУС по штату

Воинское звание

Фамилия, имя и отчество

Время и год призыва (дата окончания контракта)

по штату

фактическое

1

2

3

4

5

6

7

Пример заполнения

Управление

Боевые подразделения

1-й мотострелковый батальон

1

командир батальона

0210023

подполковник

майор

Салимжанов

Батырхан Сеилханович

29.01.2010

1-я мотострелковая рота

1

командир роты

0210023

майор

майор

Батулин Артур Ратмирович

16.11.2010

5

стрелок

100915

рядовой

рядовой

Искаков

Даурен

Аманбаевич

2-2006

Приложение Г

Листинг программы

Главная кнопочная форма

unit Main;

interface

uses

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

Dialogs, ExtCtrls, ScrollView, CustomGridViewControl, CustomGridView,

GridView, ToolWin, ComCtrls, Menus, ImgList, CustomCellSource,

DataCellSource, cxGraphics, cxControls, cxLookAndFeels,

cxLookAndFeelPainters, dxSkinsCore, dxorgchr, StdCtrls;

type

TfMain = class(TForm)

StatusBar1: TStatusBar;

MainMenu1: TMainMenu;

N1: TMenuItem;

ToolBar1: TToolBar;

ToolBarImages: TImageList;

ImageList1: TImageList;

N2: TMenuItem;

N3: TMenuItem;

Panel1: TPanel;

Splitter1: TSplitter;

Panel2: TPanel;

Splitter2: TSplitter;

dxOrgChart1: TdxOrgChart;

Panel3: TPanel;

Splitter3: TSplitter;

Panel4: TPanel;

Panel5: TPanel;

Panel6: TPanel;

Label1: TLabel;

Label2: TLabel;

GridView1: TGridView;

GridView3: TGridView;

TreeView1: TTreeView;

Panel7: TPanel;

Panel8: TPanel;

GridView2: TGridView;

Label3: TLabel;

N4: TMenuItem;

N5: TMenuItem;

N6: TMenuItem;

N7: TMenuItem;

N8: TMenuItem;

N9: TMenuItem;

DataCellSource1: TDataCellSource;

PopupMenu1: TPopupMenu;

N10: TMenuItem;

N11: TMenuItem;

N12: TMenuItem;

DataCellSource2: TDataCellSource;

PopupMenu2: TPopupMenu;

N13: TMenuItem;

PopupMenu3: TPopupMenu;

N14: TMenuItem;

N15: TMenuItem;

N16: TMenuItem;

GridView4: TGridView;

DataCellSource3: TDataCellSource;

N17: TMenuItem;

N18: TMenuItem;

N19: TMenuItem;

N20: TMenuItem;

N21: TMenuItem;

N22: TMenuItem;

N23: TMenuItem;

ToolButton1: TToolButton;

PopupMenu4: TPopupMenu;

N24: TMenuItem;

N25: TMenuItem;

N26: TMenuItem;

N27: TMenuItem;

N28: TMenuItem;

N29: TMenuItem;

N30: TMenuItem;

N31: TMenuItem;

procedure FormCreate(Sender: TObject);

procedure FormShow(Sender: TObject);

procedure N3Click(Sender: TObject);

procedure dxOrgChart1Changing(Sender: TObject; Node: TdxOcNode;

var Allow: Boolean);

procedure TreeView1Change(Sender: TObject; Node: TTreeNode);

procedure N4Click(Sender: TObject);

procedure N6Click(Sender: TObject);

procedure N7Click(Sender: TObject);

procedure N8Click(Sender: TObject);

procedure N9Click(Sender: TObject);

procedure N11Click(Sender: TObject);

procedure N12Click(Sender: TObject);

procedure N16Click(Sender: TObject);

procedure N13Click(Sender: TObject);

procedure GridView1SelectCell(Sender: TObject; ACol, ARow: Integer);

procedure GridView3SelectCell(Sender: TObject; ACol, ARow: Integer);

procedure N14Click(Sender: TObject);

procedure N17Click(Sender: TObject);

procedure N18Click(Sender: TObject);

procedure N21Click(Sender: TObject);

procedure N23Click(Sender: TObject);

procedure N27Click(Sender: TObject);

procedure N28Click(Sender: TObject);

procedure N29Click(Sender: TObject);

procedure N30Click(Sender: TObject);

procedure N26Click(Sender: TObject);

procedure N31Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

fMain: TfMain;

gcExePath, gcDataPath : string;

gnNode, gnDoljn, gnSoldat, gnChel : integer;

implementation

uses DM, Util, Zvan, Obl, Gorod, Ulic, UDO, NewSoldat, NewOficer, NewGorod,

Vibil, Naznach, SmenaZvan, ComObj, DB;

{$R *.dfm}

procedure TfMain.FormCreate(Sender: TObject);

begin

// путь, откуда запущен .exe

gcExePath := ExtractFilePath(Application.ExeName);

// путь до базы

gcDataPath := gcExePath + 'MRK.mdb';

end;

procedure TfMain.FormShow(Sender: TObject);

begin

// соединение с базой

// сначала проверим наличие базы по найденному пути gcDataPath

DecimalSeparator := '.';

if FileExists(gcDataPath) then

begin

// нашли, коннектимся

if not DataConnect(gcDataPath) then

begin

ShowMessage('Ошибка подключения к базе данных. Обратитесь к разработчику.');

StatusBar1.Panels.Items[0].Text := 'Соединение с БД не установлено. Ошибка соединения';

Exit;

end;

StatusBar1.Panels.Items[0].Text := 'Соединение с БД установлено';

end else

begin

ShowMessage('Файл базы данных ['+gcDataPath+'] не найден.');

TreeView1.Enabled := false;

StatusBar1.Panels.Items[0].Text := 'Соединение с БД не установлено. Файл не найден';

end;

end;

procedure TfMain.N3Click(Sender: TObject);

begin

Close;

end;

procedure TfMain.dxOrgChart1Changing(Sender: TObject; Node: TdxOcNode;

var Allow: Boolean);

var i : integer;

begin

for I := 0 to dxOrgChart1.Count-1 do

BEGIN

IF (dxOrgChart1.AbsoluteItems[i]=Node) then

begin

gnNode := i;

getViewSoldat(gnNode);

getViewOficer(gnNode);

end;

END;

end;

procedure TfMain.TreeView1Change(Sender: TObject; Node: TTreeNode);

begin

gnDoljn := node.AbsoluteIndex;

Label3.Caption := 'Активная должность [' + Trim(Node.Text)+']';

getViewDoljn(gnDoljn);

end;

procedure TfMain.N4Click(Sender: TObject);

begin

fZvan.DataCellSource1.Active := True;

fZvan.ShowModal;

end;

procedure TfMain.N6Click(Sender: TObject);

begin

fObl.DataCellSource1.Active := True;

fObl.ShowModal;

end;

procedure TfMain.N7Click(Sender: TObject);

begin

getViewGorod();

fGorod.ShowModal;

end;

procedure TfMain.N8Click(Sender: TObject);

begin

getViewUlic();

fUlic.ShowModal;

end;

procedure TfMain.N9Click(Sender: TObject);

begin

getViewUDO();

fUDO.ShowModal;

end;

procedure TfMain.N11Click(Sender: TObject);

begin

DT.qZvanSoldat.Close;

DT.qZvanSoldat.SQL.Clear;

DT.qZvanSoldat.SQL.Add('select * from s_zvan where numzvan=1');

DT.qZvanSoldat.Open;

fNewSoldat.Edit1.Clear; fNewSoldat.Edit2.Clear; fNewSoldat.Edit3.Clear; fNewSoldat.Edit4.Clear; fNewSoldat.Edit8.Clear;

fNewSoldat.Edit9.Clear; fNewSoldat.Edit10.Clear; fNewSoldat.Edit11.Clear;

fNewSoldat.ComboBox1.ItemIndex:=-1; fNewSoldat.ComboBox2.ItemIndex:=-1; fNewSoldat.ComboBox3.ItemIndex:=-1;

fNewSoldat.ComboBox4.ItemIndex:=-1;

fNewSoldat.DBLookupComboBox4.KeyValue:=-1; fNewSoldat.DBLookupComboBox5.KeyValue:=-1;

fNewSoldat.ShowModal;

end;

procedure TfMain.N12Click(Sender: TObject);

begin

DT.qZvanOficer.Close;

DT.qZvanOficer.SQL.Clear;

DT.qZvanOficer.SQL.Add('select * from s_zvan where numzvan=2');

DT.qZvanOficer.Open;

fNewOficer.Edit1.Clear; fNewOficer.Edit2.Clear; fNewOficer.Edit3.Clear; fNewOficer.Edit4.Clear; fNewOficer.Edit5.Clear;

fNewOficer.Edit6.Clear; fNewOficer.Edit7.Clear; fNewOficer.Edit8.Clear; fNewOficer.Edit9.Clear;

fNewOficer.Edit11.Clear;

fNewOficer.ComboBox1.ItemIndex := -1;fNewOficer.ComboBox2.ItemIndex := -1; fNewOficer.ComboBox4.ItemIndex := -1;

fNewOficer.DBLookupComboBox1.KeyValue := -1; fNewOficer.DBLookupComboBox2.KeyValue := -1;

fNewOficer.ShowModal;

end;

procedure TfMain.N16Click(Sender: TObject);

begin

gnChel := 2;

// сначала проверить, занимает ли должность

dt.qQuery1.Close;

dt.qQuery1.SQL.Clear;

dt.qQuery1.SQL.Add('select kodDoljn from D_Oficer where KodOficer='+IntToStr(gnSoldat));

dt.qQuery1.Open;

if DT.qQuery1.FieldByName('koddoljn').AsInteger <> 666 then

begin

ShowMessage('Выбранный офицер не может быть удален из списков части, так как занимает должность.'+#13+'Необходимо освободить от занимаемой должности.');

exit;

end;

fVibil.Edit1.Clear;

fVibil.DateTimePicker1.Date := Now;

fVibil.ComboBox1.ItemIndex := -1;

fVibil.ShowModal;

end;

procedure TfMain.N13Click(Sender: TObject);

begin

gnChel := 1;

fVibil.Edit1.Clear;

fVibil.DateTimePicker1.Date := Now;

fVibil.ComboBox1.ItemIndex := -1;

fVibil.ShowModal;

end;

procedure TfMain.GridView1SelectCell(Sender: TObject; ACol, ARow: Integer);

begin

gnSoldat := GridView1.Cell[0,GridView1.SelectedRow].AsInteger;

end;

procedure TfMain.GridView3SelectCell(Sender: TObject; ACol, ARow: Integer);

begin

gnSoldat := GridView3.Cell[0,GridView3.SelectedRow].AsInteger;

end;

procedure TfMain.N14Click(Sender: TObject);

begin

// проверка на должность

dt.qQuery1.Close;

dt.qQuery1.SQL.Clear;

dt.qQuery1.SQL.Add('select kodDoljn from D_Oficer where KodOficer='+IntToStr(gnSoldat));

dt.qQuery1.Open;

if DT.qQuery1.FieldByName('koddoljn').AsInteger <> 666 then

begin

ShowMessage('Выбранный офицер занимает должность.');

exit;

end;

fNaznach.DateTimePicker1.Date := Now;

fNaznach.DBLookupComboBox2.KeyValue := -1;

fNaznach.ShowModal;

end;

procedure TfMain.N17Click(Sender: TObject);

begin

// сначала проверить, есть ли должность

dt.qQuery1.Close;

dt.qQuery1.SQL.Clear;

dt.qQuery1.SQL.Add('select kodDoljn from D_Oficer where KodOficer='+IntToStr(gnSoldat));

dt.qQuery1.Open;

if DT.qQuery1.FieldByName('koddoljn').AsInteger = 666 then

begin

ShowMessage('Выбранный офицер не занимает никакую должность.');

exit;

end;

// убрать должность

dt.qQuery1.Close;

dt.qQuery1.SQL.Clear;

dt.qQuery1.SQL.Add('UPDATE D_oficer SET koddoljn=666 where KodOficer='+IntToStr(gnSoldat));

dt.qQuery1.ExecSQL;

// пометить в таблице

dt.qQuery1.Close;

dt.qQuery1.SQL.Clear;

dt.qQuery1.SQL.Add('UPDATE D_Doljn SET dat2='''+DateToStr(Now)+''' where KodOficer='+IntToStr(gnSoldat));

dt.qQuery1.ExecSQL;

ShowMessage('Выбранный офицер освобожден от занимаемой должности.');

getViewOficer(gnNode);

getViewDoljn(gnDoljn);

end;

procedure TfMain.N18Click(Sender: TObject);

begin

fSmenaZvan.DBLookupComboBox2.KeyValue := -1;

fSmenaZvan.ShowModal;

end;

procedure TfMain.N21Click(Sender: TObject);

var oExcel : Variant;

I : Integer;

begin

if gnSoldat = 0 then exit;

DT.qQuery1.Close;

DT.qQuery1.sql.Clear;

DT.qQuery1.SQL.Add('SELECT d_oficer.*, s_zvan.namzvan, s_doljn.namdoljn, s_udo.namudo');

DT.qQuery1.SQL.Add('FROM s_udo INNER JOIN ((d_oficer INNER JOIN s_doljn ON d_oficer.koddoljn=s_doljn.koddoljn) INNER JOIN s_zvan ON d_oficer.kodzvan=s_zvan.kodzvan) ');

DT.qQuery1.SQL.Add('ON s_udo.kodudo=d_oficer.kodudo ');

DT.qQuery1.SQL.Add('where kodoficer='+IntToStr(gnSoldat));

DT.qQuery1.Open;

if DT.qQuery1.RecordCount > 0 then

begin

// копировать макет

if not CopyFile(PChar(gcExePath + 'KartOficer.xls'), PChar(gcExePath+'excel\' + 'KartOficer.xls'), False) then

begin

ShowMessage('Ошибка копирования макета отчета. Продолжение невозможно.');

Exit;

end;

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

oExcel.Application.Visible := False;

oExcel.WorkBooks.Open(gcExePath+'excel\' + 'KartOficer.xls');

oExcel.Range['c2'].Value := DT.qQuery1.fieldbyname('famil').AsString;

oExcel.Range['c3'].Value := DT.qQuery1.fieldbyname('imja').AsString;

oExcel.Range['c4'].Value := DT.qQuery1.fieldbyname('otch').AsString;

oExcel.Range['c5'].Value := DT.qQuery1.fieldbyname('datroj').AsString;

oExcel.Range['c6'].Value := DT.qQuery1.fieldbyname('nac').AsString;

oExcel.Range['k2'].Value := DT.qQuery1.fieldbyname('nomer').AsString;

oExcel.Range['a8'].Value := DT.qQuery1.fieldbyname('nom_ud').AsString;

oExcel.Range['d11'].Value := DT.qQuery1.fieldbyname('obr1').AsString;

oExcel.Range['d12'].Value := DT.qQuery1.fieldbyname('obr2').AsString;

oExcel.Range['d13'].Value := DT.qQuery1.fieldbyname('nomvus').AsString;

oExcel.Range['d15'].Value := DT.qQuery1.fieldbyname('rodstv').AsString;

oExcel.Range['D20'].Value := DT.qQuery1.fieldbyname('namzvan').AsString;

oExcel.Range['h20'].Value := DT.qQuery1.fieldbyname('dat_pr').AsString;

oExcel.Range['j20'].Value := DT.qQuery1.fieldbyname('nom_pr').AsString;

oExcel.Range['l20'].Value := DT.qQuery1.fieldbyname('kem_pr').AsString;

oExcel.Range['n20'].Value := DT.qQuery1.fieldbyname('namudo').AsString;

oExcel.Range['d24'].Value := DT.qQuery1.fieldbyname('dat_zap').AsString;

oExcel.Range['f24'].Value := DT.qQuery1.fieldbyname('nom_zap').AsString;

oExcel.Range['l24'].Value := DT.qQuery1.fieldbyname('namDoljn').AsString;

oExcel.Application.ActiveWorkbook.Save;

oExcel.Application.Visible := True;

end;

end;

procedure TfMain.N23Click(Sender: TObject);

var oExcel : Variant;

begin

if gnSoldat = 0 then exit;

DT.qQuery1.Close;

DT.qQuery1.sql.Clear;

DT.qQuery1.SQL.Add('SELECT d_soldat.*, s_zvan.namzvan, s_udo.namudo');

DT.qQuery1.SQL.Add('FROM (D_Soldat INNER JOIN s_udo ON D_Soldat.kodudo = s_udo.kodudo) INNER JOIN s_zvan ON D_Soldat.kodzvan = s_zvan.kodzvan ');

DT.qQuery1.SQL.Add('where kodsoldat='+IntToStr(gnSoldat));

DT.qQuery1.Open;

if DT.qQuery1.RecordCount > 0 then

begin

// копировать макет

if not CopyFile(PChar(gcExePath + 'KartSoldat.xls'), PChar(gcExePath+'excel\' + 'KartSoldat.xls'), False) then

begin

ShowMessage('Ошибка копирования макета отчета. Продолжение невозможно.');

Exit;

end;

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

oExcel.Application.Visible := False;

oExcel.WorkBooks.Open(gcExePath+'excel\' + 'KartSoldat.xls');

oExcel.Range['c2'].Value := DT.qQuery1.fieldbyname('famil').AsString;

oExcel.Range['c3'].Value := DT.qQuery1.fieldbyname('imja').AsString;

oExcel.Range['c4'].Value := DT.qQuery1.fieldbyname('otch').AsString;

oExcel.Range['c5'].Value := DT.qQuery1.fieldbyname('datroj').AsString;

oExcel.Range['c6'].Value := DT.qQuery1.fieldbyname('nac').AsString;

oExcel.Range['c8'].Value := DT.qQuery1.fieldbyname('rodstv').AsString;

oExcel.Range['d8'].Value := DT.qQuery1.fieldbyname('famil_r').AsString;

oExcel.Range['f8'].Value := DT.qQuery1.fieldbyname('imja_r').AsString;

oExcel.Range['h8'].Value := DT.qQuery1.fieldbyname('otch_r').AsString;

oExcel.Range['d9'].Value := DT.qQuery1.fieldbyname('adres_r').AsString;

oExcel.Range['c11'].Value := DT.qQuery1.fieldbyname('dat_pr').AsString;

oExcel.Range['d11'].Value := DT.qQuery1.fieldbyname('namudo').AsString;

oExcel.Range['c14'].Value := DT.qQuery1.fieldbyname('dat_zap').AsString;

oExcel.Range['d14'].Value := DT.qQuery1.fieldbyname('nom_zap').AsString;

oExcel.Range['f14'].Value := DT.qQuery1.fieldbyname('namzvan').AsString;

oExcel.Range['h14'].Value := DT.qQuery1.fieldbyname('Doljn').AsString;

oExcel.Application.ActiveWorkbook.Save;

oExcel.Application.Visible := True;

end;

end;

procedure TfMain.N27Click(Sender: TObject);

var oExcel : Variant;

I,J : Integer;

begin

DT.qQuery1.Close;

DT.qQuery1.sql.Clear;

DT.qQuery1.SQL.Add('SELECT d_soldat.*, s_zvan.namzvan, s_udo.namudo');

DT.qQuery1.SQL.Add('FROM (D_Soldat INNER JOIN s_udo ON D_Soldat.kodudo = s_udo.kodudo) INNER JOIN s_zvan ON D_Soldat.kodzvan = s_zvan.kodzvan ');

DT.qQuery1.SQL.Add(' where isOpen = True order by Famil');

DT.qQuery1.Open;

if DT.qQuery1.RecordCount > 0 then

begin

// копировать макет

if not CopyFile(PChar(gcExePath + 'RepSoldat.xls'), PChar(gcExePath+'excel\' + 'RepSoldat.xls'), False) then

begin

ShowMessage('Ошибка копирования макета отчета. Продолжение невозможно.');

Exit;

end;

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

oExcel.Application.Visible := False;

oExcel.WorkBooks.Open(gcExePath+'excel\' + 'RepSoldat.xls');

dt.qQuery1.First;

I := 5; J := 1;

while not dt.qQuery1.Eof do

begin

oExcel.Range['A'+IntToStr(I)].Value := J;

oExcel.Range['B'+IntToStr(I)].Value := DT.qQuery1.fieldbyname('famil').AsString+' '+DT.qQuery1.fieldbyname('imja').AsString+' '+DT.qQuery1.fieldbyname('otch').AsString+' '+DateToStr(DT.qQuery1.fieldbyname('datroj').AsDateTime);

oExcel.Range['C'+IntToStr(I)].Value := DT.qQuery1.fieldbyname('namudo').AsString + ' '+DateToStr(DT.qQuery1.fieldbyname('dat_pr').AsDateTime);

oExcel.Range['D'+IntToStr(I)].Value := DT.qQuery1.fieldbyname('sempol').AsString+'. '+DT.qQuery1.fieldbyname('rodstv').AsString+' - '+DT.qQuery1.fieldbyname('Famil_r').AsString+' '+DT.qQuery1.fieldbyname('imja_r').AsString+' '+DT.qQuery1.fieldbyname('otch_r').AsString+'. '+DT.qQuery1.fieldbyname('adres_r').AsString;

oExcel.Range['E'+IntToStr(I)].Value := DateToStr(DT.qQuery1.fieldbyname('dat_zap').AsDateTime)+', №'+DT.qQuery1.fieldbyname('nom_zap').AsString+'. '+DT.qQuery1.fieldbyname('namzvan').AsString+', '+DT.qQuery1.fieldbyname('doljn').AsString;

if DT.qQuery1.fieldbyname('prich_del').AsString <> '' then

oExcel.Range['F'+IntToStr(I)].Value := DT.qQuery1.fieldbyname('prich_del').AsString+'. '+ DateToStr(DT.qQuery1.fieldbyname('dat_del').AsDateTime)+', №'+DT.qQuery1.fieldbyname('nom_del').AsString;

I:=I+1; J:=J+1;

dt.qQuery1.Next;

end;

oExcel.Application.ActiveWorkbook.Save;

oExcel.Application.Visible := True;

end;

end;

procedure TfMain.N28Click(Sender: TObject);

var oExcel : Variant;

I,J : Integer;

begin

DT.qQuery1.Close;

DT.qQuery1.sql.Clear;

DT.qQuery1.SQL.Add('SELECT d_soldat.*, s_zvan.namzvan, s_udo.namudo');

DT.qQuery1.SQL.Add('FROM (D_Soldat INNER JOIN s_udo ON D_Soldat.kodudo = s_udo.kodudo) INNER JOIN s_zvan ON D_Soldat.kodzvan = s_zvan.kodzvan ');

DT.qQuery1.SQL.Add(' where isOpen = False order by Famil');

DT.qQuery1.Open;

if DT.qQuery1.RecordCount > 0 then

begin

// копировать макет

if not CopyFile(PChar(gcExePath + 'RepSoldat.xls'), PChar(gcExePath+'excel\' + 'RepSoldat.xls'), False) then

begin

ShowMessage('Ошибка копирования макета отчета. Продолжение невозможно.');

Exit;

end;

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

oExcel.Application.Visible := False;

oExcel.WorkBooks.Open(gcExePath+'excel\' + 'RepSoldat.xls');

dt.qQuery1.First;

I := 5; J := 1;

while not dt.qQuery1.Eof do

begin

oExcel.Range['A'+IntToStr(I)].Value := J;

oExcel.Range['B'+IntToStr(I)].Value := DT.qQuery1.fieldbyname('famil').AsString+' '+DT.qQuery1.fieldbyname('imja').AsString+' '+DT.qQuery1.fieldbyname('otch').AsString+' '+DateToStr(DT.qQuery1.fieldbyname('datroj').AsDateTime);

oExcel.Range['C'+IntToStr(I)].Value := DT.qQuery1.fieldbyname('namudo').AsString + ' '+DateToStr(DT.qQuery1.fieldbyname('dat_pr').AsDateTime);

oExcel.Range['D'+IntToStr(I)].Value := DT.qQuery1.fieldbyname('sempol').AsString+'. '+DT.qQuery1.fieldbyname('rodstv').AsString+' - '+DT.qQuery1.fieldbyname('Famil_r').AsString+' '+DT.qQuery1.fieldbyname('imja_r').AsString+' '+DT.qQuery1.fieldbyname('otch_r').AsString+'. '+DT.qQuery1.fieldbyname('adres_r').AsString;

oExcel.Range['E'+IntToStr(I)].Value := DateToStr(DT.qQuery1.fieldbyname('dat_zap').AsDateTime)+', №'+DT.qQuery1.fieldbyname('nom_zap').AsString+'. '+DT.qQuery1.fieldbyname('namzvan').AsString+', '+DT.qQuery1.fieldbyname('doljn').AsString;

if DT.qQuery1.fieldbyname('prich_del').AsString <> '' then

oExcel.Range['F'+IntToStr(I)].Value := DT.qQuery1.fieldbyname('prich_del').AsString+'. '+ DateToStr(DT.qQuery1.fieldbyname('dat_del').AsDateTime)+', №'+DT.qQuery1.fieldbyname('nom_del').AsString;

I:=I+1; J:=J+1;

dt.qQuery1.Next;

end;

oExcel.Application.ActiveWorkbook.Save;

oExcel.Application.Visible := True;

end;

end;

procedure TfMain.N29Click(Sender: TObject);

var oExcel : Variant;

I,J : Integer;

begin

DT.qQuery1.Close;

DT.qQuery1.sql.Clear;

DT.qQuery1.SQL.Add('SELECT d_oficer.*, s_zvan.namzvan, s_doljn.namdoljn, s_udo.namudo');

DT.qQuery1.SQL.Add('FROM ((d_oficer INNER JOIN s_doljn ON d_oficer.koddoljn=s_doljn.koddoljn) INNER JOIN s_udo ON d_oficer.kodudo=s_udo.kodudo) INNER JOIN s_zvan ON d_oficer.kodzvan=s_zvan.kodzvan ');

DT.qQuery1.SQL.Add(' where isOpen = True order by Famil');

DT.qQuery1.Open;

if DT.qQuery1.RecordCount > 0 then

begin

// копировать макет

if not CopyFile(PChar(gcExePath + 'RepOficer.xls'), PChar(gcExePath+'excel\' + 'RepOficer.xls'), False) then

begin

ShowMessage('Ошибка копирования макета отчета. Продолжение невозможно.');

Exit;

end;

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

oExcel.Application.Visible := False;

oExcel.WorkBooks.Open(gcExePath+'excel\' + 'RepOficer.xls');

dt.qQuery1.First;

I := 5; J := 1;

while not dt.qQuery1.Eof do

begin

oExcel.Range['A'+IntToStr(I)].Value := J;

oExcel.Range['B'+IntToStr(I)].Value := DT.qQuery1.fieldbyname('famil').AsString+' '+DT.qQuery1.fieldbyname('imja').AsString+' '+DT.qQuery1.fieldbyname('otch').AsString+'. T-'+DT.qQuery1.fieldbyname('nomer').AsString;

oExcel.Range['C'+IntToStr(I)].Value := DT.qQuery1.fieldbyname('namzvan').AsString + ', '+DT.qQuery1.fieldbyname('kem_pr').AsString+', №'+DT.qQuery1.fieldbyname('nom_pr').AsString+', '+DateToStr(DT.qQuery1.fieldbyname('dat_pr').AsDateTime) ;

oExcel.Range['D'+IntToStr(I)].Value := DateToStr(DT.qQuery1.fieldbyname('dat_zap').AsDateTime)+', №'+DT.qQuery1.fieldbyname('nom_zap').AsString+'. '+DT.qQuery1.fieldbyname('namdoljn').AsString;

oExcel.Range['E'+IntToStr(I)].Value := DateToStr(DT.qQuery1.fieldbyname('datroj').AsDateTime);

oExcel.Range['F'+IntToStr(I)].Value := DT.qQuery1.fieldbyname('nac').AsString;

oExcel.Range['G'+IntToStr(I)].Value := 'a)'+DT.qQuery1.fieldbyname('obr1').AsString+'; б)'+DT.qQuery1.fieldbyname('obr2').AsString+'. ВУС-'+DT.qQuery1.fieldbyname('nomvus').AsString;

oExcel.Range['H'+IntToStr(I)].Value := DT.qQuery1.fieldbyname('namudo').AsString;

oExcel.Range['I'+IntToStr(I)].Value := DT.qQuery1.fieldbyname('sempol').AsString+'. '+DT.qQuery1.fieldbyname('rodstv').AsString;

if DT.qQuery1.fieldbyname('prich_del').AsString <> '' then

oExcel.Range['J'+IntToStr(I)].Value := DT.qQuery1.fieldbyname('prich_del').AsString+'. '+ DateToStr(DT.qQuery1.fieldbyname('dat_del').AsDateTime)+', №'+DT.qQuery1.fieldbyname('nom_del').AsString;

I:=I+1; J:=J+1;

dt.qQuery1.Next;

end;

oExcel.Application.ActiveWorkbook.Save;

oExcel.Application.Visible := True;

end;

end;

procedure TfMain.N30Click(Sender: TObject);

var oExcel : Variant;

I,J : Integer;

begin

DT.qQuery1.Close;

DT.qQuery1.sql.Clear;

DT.qQuery1.SQL.Add('SELECT d_oficer.*, s_zvan.namzvan, s_doljn.namdoljn, s_udo.namudo');

DT.qQuery1.SQL.Add('FROM ((d_oficer INNER JOIN s_doljn ON d_oficer.koddoljn=s_doljn.koddoljn) INNER JOIN s_udo ON d_oficer.kodudo=s_udo.kodudo) INNER JOIN s_zvan ON d_oficer.kodzvan=s_zvan.kodzvan ');

DT.qQuery1.SQL.Add(' where isOpen = False order by Famil');

DT.qQuery1.Open;

if DT.qQuery1.RecordCount > 0 then

begin

// копировать макет

if not CopyFile(PChar(gcExePath + 'RepOficer.xls'), PChar(gcExePath+'excel\' + 'RepOficer.xls'), False) then

begin

ShowMessage('Ошибка копирования макета отчета. Продолжение невозможно.');

Exit;

end;

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

oExcel.Application.Visible := False;

oExcel.WorkBooks.Open(gcExePath+'excel\' + 'RepOficer.xls');

dt.qQuery1.First;

I := 5; J := 1;

while not dt.qQuery1.Eof do

begin

oExcel.Range['A'+IntToStr(I)].Value := J;

oExcel.Range['B'+IntToStr(I)].Value := DT.qQuery1.fieldbyname('famil').AsString+' '+DT.qQuery1.fieldbyname('imja').AsString+' '+DT.qQuery1.fieldbyname('otch').AsString+'. T-'+DT.qQuery1.fieldbyname('nomer').AsString;

oExcel.Range['C'+IntToStr(I)].Value := DT.qQuery1.fieldbyname('namzvan').AsString + ', '+DT.qQuery1.fieldbyname('kem_pr').AsString+', №'+DT.qQuery1.fieldbyname('nom_pr').AsString+', '+DateToStr(DT.qQuery1.fieldbyname('dat_pr').AsDateTime) ;

oExcel.Range['D'+IntToStr(I)].Value := DateToStr(DT.qQuery1.fieldbyname('dat_zap').AsDateTime)+', №'+DT.qQuery1.fieldbyname('nom_zap').AsString+'. '+DT.qQuery1.fieldbyname('namdoljn').AsString;

oExcel.Range['E'+IntToStr(I)].Value := DateToStr(DT.qQuery1.fieldbyname('datroj').AsDateTime);

oExcel.Range['F'+IntToStr(I)].Value := DT.qQuery1.fieldbyname('nac').AsString;

oExcel.Range['G'+IntToStr(I)].Value := 'a)'+DT.qQuery1.fieldbyname('obr1').AsString+'; б)'+DT.qQuery1.fieldbyname('obr2').AsString+'. ВУС-'+DT.qQuery1.fieldbyname('nomvus').AsString;

oExcel.Range['H'+IntToStr(I)].Value := DT.qQuery1.fieldbyname('namudo').AsString;

oExcel.Range['I'+IntToStr(I)].Value := DT.qQuery1.fieldbyname('sempol').AsString+'. '+DT.qQuery1.fieldbyname('rodstv').AsString;

if DT.qQuery1.fieldbyname('prich_del').AsString <> '' then

oExcel.Range['J'+IntToStr(I)].Value := DT.qQuery1.fieldbyname('prich_del').AsString+'. '+ DateToStr(DT.qQuery1.fieldbyname('dat_del').AsDateTime)+', №'+DT.qQuery1.fieldbyname('nom_del').AsString;

I:=I+1; J:=J+1;

dt.qQuery1.Next;

end;

oExcel.Application.ActiveWorkbook.Save;

oExcel.Application.Visible := True;

end;

end;

procedure TfMain.N26Click(Sender: TObject);

var oExcel : Variant;

I,J, nKodNode, nRecSoldat, nRecOficer : Integer;

cNamNode : string;

begin

I := 6;

// копировать макет

if not CopyFile(PChar(gcExePath + 'Uchet.xls'), PChar(gcExePath+'excel\' + 'Uchet.xls'), False) then

begin

ShowMessage('Ошибка копирования макета отчета. Продолжение невозможно.');

Exit;

end;

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

oExcel.Application.Visible := False;

oExcel.WorkBooks.Open(gcExePath+'excel\' + 'Uchet.xls');

// берем справочник узлов и перебираем


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

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