Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пояснительная записка11(готовая).doc
Скачиваний:
3
Добавлен:
02.08.2019
Размер:
3.18 Mб
Скачать

6.2 Організація робочого простору для роботи з комп’ютером

Вимоги електробезпеки у приміщеннях, де встановлені електронно-обчислювальні машини і персональні комп'ютери (далі — ЕОМ) відображені у ДНАОП 0.00-1.31-99.

У приміщенні, де одночасно експлуатується або бслуговується більше п'яти персональних ЕОМ, на помітному та доступному місці встановлюється аварійний резервний вимикач, який може повністю вимкнути електричне живлення приміщення, крім освітлення.

ЕОМ, периферійні пристрої ЕОМ та устаткування для обслуговування, ремонту та налагодження ЕОМ повинні підключатися до електромережі тільки за допомогою справних штепсельних з'єднань і електророзеток заводського виготовлення.

Неприпустимим є підключення ЕОМ, периферійних пристроїв ЕОМ та устаткування для обслуговування, ремонту та налагодження ЕОМ до звичайної двопровідної електромережі, в тому числі — з використанням перехідних пристроїв.

Електромережі штепсельних з'єднань та електророзеток для живлення персональних ЕОМ, периферійних пристроїв ЕОМ та устаткування для обслуговування, ремонту та налагодження ЕОМ слід виконувати за магістральною схемою, по 3—6 з'єднань або електророзеток в одному колі.

Конструкція знімної підлоги повинна бути такою, щоб забезпечувались:

  • вільний доступ до кабельних комунікацій під час обслуговування;

  • стійкість до горизонтальних зусиль при частково знятих плитах;

— вирівнювання поверхні підлоги за допомогою регулювальних опорних елементів;

  • взаємозамінюваність плит.

Отвори в плитах для прокладання кабелів електроживлення виконуються безпосередньо в місцях встановлення устаткування відповідно до затвердженого технологічного плану розміщення устаткування та його технічних характеристик. Для підключення переносної електроапаратури застосовують гнучкі проводи в надійній ізоляції. Тимчасова електропроводка від переносних приладів до джерел живлення виконується найкоротшим шляхом без заплутування проводів у конструкціях машин, приладів та меблях. Доточувати проводи можна тільки шляхом паяння з наступним старанним ізолюванням місць з'єднання. Є неприпустимими:

  • експлуатація кабелів та проводів з пошкодженою або такою, що втратила захисні властивості за час експлуатації, ізоляцією;

  • залишення під напругою кабелів та проводів з неізольованими провідниками;

  • застосування саморобних продовжувачів, які не відповідають вимогам ПВЕ до переносних електропроводок;

  • застосування для опалення приміщення нестандартного (саморобного) електронагрівального обладнання або ламп розжарювання;

  • користування пошкодженими розетками, розгалужувальними та з'єднувальними коробками, вимикачами та іншими електровиробами, а також лампами, скло яких має сліди затемнення або випинання;

  • підвішування світильників безпосередньо на струмопровідних проводах, обгортання електроламп і світильників папером, тканиною та іншими горючими матеріалами, експлуатація їх зі знятими ковпаками (розсіювачами);

— використання електроапаратури та приладів в умовах, що не відповідають вказівкам (рекомендаціям) підприємств-виготовлювачів.

Для споруд та приміщень, в яких експлуатуються відеотермінали та ЕОМ такі заходи визначені Правилами пожежної безпеки в Україні, ДНАОП 0.00-1.31-99 та іншими нормативними документами.

Для всіх споруд і приміщень, в яких експлуатуються відеотермінали та ЕОМ, повинна бути визначена категорія з вибухопожежної і пожежної небезпеки відповідно до ОНТП 24-86 "Определения категорий помещений й зданий по взрнвопожарной й пожарной опасности", та клас зони згідно з Правилами влаштування електроустановок. Відповідні позначення повинні бути нанесені на вхідні двері приміщення.

Сховища інформації, приміщення для зберігання перфокарт, магнітних стрічок, пакетів магнітних дисків слід розміщати у відокремлених приміщеннях, обладнаних негорючими стелажами і шафами. Зберігати такі носії інформації на стелажах необхідно в металевих касетах. В приміщеннях ЕОМ слід зберігати лише ті носії інформації, які необхідні для поточної роботи.

Приміщення, в яких розташовуються персональні ЕОМ та дисплейні зали, повинні бути оснащені системою автоматичної пожежної сигналізації з димовими пожежними сповіщувачами та переносними вуглекислотними вогнегасниками з розрахунку 2 шт. на кожні 20 м2 площі приміщення з урахуванням граничне допустимих концентрацій вогнегасної речовини.

Не рідше одного разу на квартал необхідно очищати від пилу агрегати та вузли, кабельні канали та простір між підлогами.[13]

6.3 Причини та характер виникнення техногенних небезпек

П'ять тисячоліть тому, коли з'явились перші міські поселення, поча­ла формуватися і техносфера — сфера, яка містить штучні технічні спо­руди на Землі. Звичайно, тоді не були тільки елементи техносфери. Справжня техносфера з'явилась в епоху промислової революції, коли пара та електрика дозволили багаторазово розширити технічні можли­вості людини, давши їй змогу а) швидко пересуватися по земній по­верхні і створювати світове господарство, б) заглибитись у земну кору та океани, в) піднятися в атмосферу, г) створити багато нових речовин. Виникли процеси, не властиві біосфері: дотримання металів та інших елементів, виробництво енергії на атомних електростанціях, синтез невідомих досі органічних речових. Потужним техногенним процесом є спалювання викопного палива.

У зв’язку з використанням все більших енергетичних потужностей люди змушені концентрувати енергію на невеликих ділянках, причому найчастіше в межах міст та інших населених пунктів. Йде просторова концентрація синте­тичних хімічних сполук (їх кількість досягла 400 тисяч), більша частина кот­рих отруйна. Внаслідок цього різко зросло забруднення навколишнього середови­ща, нищення лісів, опустелювання, все більше людей гине внаслідок аварій на виробництві і транспорті.

Аварії, спричинені порушенням експлуатації технічних об'єктів, за своїми масштабами почали набувати катастрофічного характеру вже в 20-30-х роках XX ст. Вплив цих аварій деколи переходить кордони держав і охоплює цілі регіони. Несприятлива екологічна обстановка, викликана цими аваріями, може зберігатися від декількох днів до бага­тьох років. Ліквідація наслідків таких аварій потребує великих коштів та залучення багатьох спеціалістів.

Аварія — це небезпечна подія техногенного характеру, що ство­рює на об'єкті, території або акваторії загрозу для життя і здо­ров'я людей і призводить до руйнування будівель, споруд, обладнан­ня і транспортних засобів, порушення виробничого процесу чи завдає шкоди довкіллю.

Згідно з розмірами та заподіяною шкодою розрізняють легкі, се­редні, важкі та особливо важкі аварії. Особливо важкі аварії призводять до великих руйнувань та супроводжуються великими жертвами.

Аналіз наслідків аварій, характеру їх впливу на навколишнє середо­вище зумовив розподіл їх за видами.

Види аварій:

  • аварії з витоком сильнодіючих отруйних речовин (аміаку, хлору, сірчаної та азотної кислот, чадного газу, сірчаного газу та інших речовин);

  • аварії з викидом радіоактивних речовин в навколишнє середовище;

  • пожежі та вибухи;

  • аварії на транспорті та інше.

Особливо важкі аварії можуть призвести до катастроф.

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

Глобальні катастрофи охоплюють цілі континенти, і їх розвиток ста­вить під загрозу існування усієї біосфери.

Найбільший «внесок» в забруднення навколишнього середовища вно­сять теплові електростанції, металургійні й хімічні заводи. На частку теплових електростанцій припадає 35% сумарного забруднення води і 46% повітря. Вони викидають сполуки сірки, вуглецю та азоту, спожи­вають велику кількість води: для отримання однієї кВт-години електро­енергії теплові електростанції витрачають близько 3 л води (атомні — забруднені й мають високу температуру, що стає причиною не тільки хімічного, а й теплового забруднення).

Металургійні підприємства відрізняються високим споживанням ресурсів і великою кількістю відходів, серед яких пил, оксид вуглецю, сірчаний газ, коксовий газ, фенол, сірководень, вуглеводні (в тому числі бензопирен). Металургійна промисловість споживає багато води, яка забруднюється в процесі виробництва.

Різноманітними видами виробництва характеризується хімічна про­мисловість. Найбільш небезпечними є виробництво аміаку, кислот, анілінових фарб, фосфорних добрив, хлору, пестицидів, синтетичного каучуку, каустичної соди, ртуті, карбіду кальцію, фтору.

Сильно забруднюють атмосферу автомобілі. Автомобільний транспорт (в світі налічується більше 600млн автомобілів) дає 70-90% забруднень у містах. Якщо врахувати, що в містах мешкає більше половини населення Землі, то стане, зрозумілим вирішальне значення автотранспорту щодо безпосереднього впливу на людей.

У викидних газах автомобілів переважають оксид вуглецю, диоксид азоту, свинець, токсичні вуглеводні (бензол, толуол, ксилол та ін.). Взаємодія вуглеводнів та оксидів азоту при високій температурі призводить до утворення озону. Якщо в шарі атмосфери на висоті 25 км достатньо високий вміст озону необхі­дний для захисту органічного життя від жорсткого ультрафіолетового випро­мінювання, то біля земної поверхні підвищений вміст озону викликає пригнічення рослинності, подразнення дихальних шляхів й ураження легень.

Значне забруднення дає целюлозно-паперова промисловість. За об'ємом забруднених стоків вона посідає перше місце (більше 15%). У стічних водах підприємств цієї промисловості налічується більше 500 компонентів, причому ГДК визначені лише для 55. Найбільшу небез­пеку становлять сполуки сірки та хлору, розчинена органіка.

Досить значна кількість забруднювальних речовин потрапляє в природне середовище в процесі сільськогосподарської діяльності. Найбільших збитків завдає застосування пестицидів — щорічно в світі їх використовують 4 млн т, але врешті-решт лише один їх відсоток досягає мети, тобто впливає безпосеред­ньо на шкідників сільськогосподарських культур. Решта впливає на інші орга­нізми, вимивається в ґрунти та водоймища, розвіюється вітром. Ефективність застосування пестицидів постійно знижується через звикання до них шкідників, тому, щоб досягнути попередніх результатів, необхідна все більша їх кількість.

При розкладанні пестицидів в ґрунті, воді, рослинах часто утворюються більш стійкі і токсичні метаболіти. Щорічно в світі стається 0,5 млн випадків отруєння пестицидами.

Значне забруднення ґрунтів, а як наслідок сільськогосподарських культур, пов’язане з використанням мінеральних добрив. Щорічно в світі на поля вноситься 400-500 млн. т мінеральних добрив.

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

Найнебезпечнішими за наслідками є аварії на АЕС з викидом в ат­мосферу радіоактивних речовин, внаслідок яких має місце довгостро­кове радіоактивне забруднення місцевості на величезних площах.

На підприємствах атомної енергетики відбулися такі значні аварії:

  • 1957рік — аварія в Уїндскейлі (Північна Англія) на заводі по виробниц­тву плутонію (зона радіоактивного забруднення становила 500 кв.км);

  • 1957рік — вибух сховища радіоактивних відходів біля Челябінська. СРСР (радіаційне забруднення переважно стронцієм-90 території, на якій мешкало 0,5 млн осіб);,

  • 1961 рік — аварія на АЕС в Айдахо-Фолсі, США (в реакторі стався вибух);

  • 1979рік — аварія на АЕС «Тримайл-Айленд» у Гарисберзі, США (стало­ся зараження великих територій короткоживучими радіонуклідами, що при­звело до необхідності евакуювати населення з прилеглої зони).

Однак найбільшою за масштаба­ми забруднення навколишнього се­редовища є аварія, яка сталася 1986 р. на Чорнобильській АЕС. Внаслідок грубих порушень правил експлуа­тації та помилкових дій 1986 рік став для людства роком вступу в епоху ядерної біди. Історія людства ще не знала такої аварії, яка була б на­стільки згубною за своїми наслідка­ми для довкілля, здоров'я та життя людей. Радіаційне забруднення ве­личезних територій та водоймищ, міст та сіл, вплив радіонуклідів на мільйони людей, які довгий час про­живають на забруднених територіях, дозволяє назвати масштаби Чорно­бильської катастрофи глобальними, а ситуацію надзвичайною.

За оцінками спеціалістів, відбулись викиди 50 мегакюрі небезпеч­них ізотопів і 50 мегакюрі хімічно інертних радіоактивних газів. Сумарне радіоактивне забруднення еквівалентне випадінню радіоактивних ре­човин від вибуху декількох десятків таких атомних бомб, які були ски­нуті над Хіросімою. Внаслідок цього викиду були забруднені води, ґрунти, рослини, дороги на десятки й сотні кілометрів. Під радіоактивне ураження потрапили території України, Білорусі, Росії, де зараз про­живає 5 млн осіб.

Нині радіоактивний стан об'єкта ЧАЕС такий: доза опромінення становить 15-300 мР/год, а на окремих ділянках 1-5 Р/год. Проектний термін служби сар­кофага, який захищає четвертий реактор, — ЗО років. Зараз планується бу­дівництво «Саркофага-2», який повинен вмістити «Саркофаг-1» і зробити його безпечним. 15 грудня 2000року відбулося закриття Чорнобильської АЕС.

Сьогодні ніхто практично не застрахований від впливу наслідків цієї аварії чи будь-якої іншої аварії на об'єктах атомної промисловості. Навіть віддаленість на сотні і тисячі кілометрів від АЕС не може бути гарантією безпеки.

Стан здоров’я населення в умовах довгострокової дії малих доз іонізуючого випромінювання. Одним з наслідків аварії на Чорнобильській станції є довгострокове опромінення малими дозами іонізуючого випромінювання за рахунок надходження в організм радіоактивних речовин, які містяться в про­дуктах харчування та воді. При впливі малих доз іонізуючого випромінювання відбу­вається поступовий розвиток патологічних процесів.

Проблема оцінки довгострокового впливу на організм малих доз радіоактивно­го випромінювання належить до найбільш актуальних.

Чим далі ми від 26 квітня 1986р., тим більше питань постає щодо наслідків аварії. Наведемо дані з доповіді Міністра охорони здоров'я України про медичні аспекти наслідків аварії через 12 років після трагедії.

Найближчими наслідками цієї аварії стало опромінення осіб, які брали участь у гасінні пожежі та аварійних роботах на атомній електростанції. Гострою променевою хворобою захворіло 238 осіб, 29 з них померло в перші місяці після аварії, ще 15 — згодом. Пізніше діагноз «гостра променева хвороба» був підтверджений у 134 хворих, з них важкого та дуже важкого ступеня — у 43.

Близько 2 тисяч осіб отримали місцеві променеві ураження, з 800 тисяч, що брали участь у роботах з ліквідації аварії. Це пожежники, військові, працівники атомної енергетики, наукові співробітники, бу­дівельники, медичні працівники та багато інших.

Найбільші дози опромінення зареєстровані серед пожежників та персоналу АЕС, які працювали під час аварії в першу добу.

Усього, за сучасними даними, внаслідок Чорнобильської катастро­фи в Україні постраждало майже 3,23 млн осіб, з них 2,35 млн мешка­ють протягом 12 років на забрудненій території, більше 358 тисяч бра­ли участь у ліквідації наслідків аварії, 130 тисяч були евакуйовані 1986 р. або були відселені пізніше.

Шляхи підвищення життєдіяльності в умовах радіаційної не­безпеки. Актуальним для жителів багатьох районів України є питання про виживання в умовах підвищеної радіації. Оскільки зараз основну загрозу становлять радіонукліди, що потрапляють в організм людини з продуктами харчування, слід знати запобіжні й профілактичні захо­ди, щоб сприяти виведенню з організму цих шкідливих речовин.

Сучасна концепція радіозахисного харчування базується на трьох принципах:

  • обмеження надходження радіонуклідів з їжею;

  • гальмування всмоктування, накопичення і прискорення їх виведення;

  • підвищення захисних сил організму.

Третій напрям передбачає пошук та створення радіозахисних харчових речовин і продуктів, які мають антиоксидантну та імуностимулюючу активність й здатні підвищувати стійкість організму до несприятливої дії радіоактивного випромінювання (антимутагени та радіопротектори). На допомогу приходять природні «захисники». До цих речовин належать: листя чаю, виноград, чорна смородина,чорноплідна горобина, обліпиха, банани, лимони, фініки, грейпфрути, гранати; з овочів — шпинат, брюссельська і цвітна капуста, боби, петрушка. Для того, щоб радіонукліди не засвоювались організмом, потрібно постійно вживати продукти, які містять пектини, зокрема яблука. Насіння соняшника належить до групи радіозахисних продуктів. Багаті на біорегулятори морські продукти, дуже корисний мед і свіжі фруктові соки.

Аварії з витоком сильнодіючих отруйних речовин і зараженням на вколишнього середовища виникають на підприємствах хімічної, на­фтопереробної, целюлозно-паперової і харчової промисловості, во­допровідних і очисних спорудах, а також при транспортуванні силь­нодіючих отруйних речовин.

Джерела хімічних аварій:

  • викиди та витоки небезпечних хімічних речовин;

  • загорання різних матеріалів, обладнання, будівельних конструкцій, яке супроводжується забрудненням навколишнього середовища;

  • аварії на транспорті при перевезенні небезпечних хімічних речовин, вибухових та пожежонебезпечних вантажів.

Безпосередніми причинами цих аварій є: порушення правил безпе­ки й транспортування, недотримання техніки безпеки, вихід з ладу агрегатів, механізмів, трубопроводів, ушкодження ємностей тощо.

Одним з найяскравіших прикладів аварій може служити аварія, яка трапилась на хімічному підприємстві американської транснаціональної корпорації «Юніон Карбайд» в індійському місті Бхопал 1984 р. Викид стався раптово, в нічний час. У результаті аварії в атмосферу потрапило декілька десятків тонн газоподібно­го компонента — метилізоционату. Ця сполука — дуже сильна отрута, яка вик­ликає ураження очей, органів дихання, мозку та інших життєво важливих органів людини. Загинуло більше 2,5 тисяч осіб, 500 тисяч осіб отруїлося, з них у 70 тисяч отруєння зумовили багаторічні захворювання. Збитки від цієї техногенної ката­строфи оцінюються в 3 мільярди доларів США.

Офіційне розслідування причин цієї катастрофи виявило значні прорахунки в проектуванні підприємства, недосконалість системи попередження витоків от­руйних газів. Місцева влада та населення не були заздалегідь сповіщені про потен­ційну небезпеку для місцевих жителів, пов’язану з технологією виробництва от­рутохімікатів.

Головною особливістю хімічних аварій (на відміну від інших про­мислових катастроф) є їх здатність розповсюджуватись на значні території, де можуть виникати великі зони небезпечного забруд­нення навколишнього середовища.

Повітряні потоки, які містять гази, пароподібні токсичні компоненти, аерозолі та інші частинки, стають джерелом ураження живих організмів не тільки в осередку катастрофи, а і в прилеглих районах. У США для кожної з 336 особливо небезпечних хімічних речовин, які можуть по­трапити в навколишнє середовище внаслідок аварії, встановлено три рівні впливу:

  1. Виникає дискомфорт у постраждалих.

  2. З'являється втрата працездатності.

  3. Виникає загроза життю.

Сильнодіючими отруйними речовинами називаються хімічні спо­луки, які в певних кількостях, що перевищують ГДК, негативно впливають на людей, сільськогосподарських тварин, рослини та викли­кають у них ураження різного ступеня.

Сильнодіючі отруйні речовини можуть бути елементами технологічного про­цесу (аміак, хлор, сірчана й азотна кислоти, фтористий водень та інші) і можуть утворюватись при пожежах на об'єктах народного господарства (чадний газ, оксиди азоту та сірки, хлористий водень).

На території України знаходиться 877 хімічно небезпечних об'єктів та 287 000 об'єктів використовують у своєму виробництві сильнодіючі отруйні речовини або їх похідні (у 140 містах та 46 населених пунктах). Нарощення хімічного вироб­ництва призвело також до зростання кількості промислових відходів, які станов­лять небезпеку для навколишнього середовища і людей.

Необхідність транспорту в наш час не викликає жодного сумніву. Транспортні засоби мають великий позитивний вплив на економіку країни, створюють зручність і комфорт для людей. Розвиток транспорту, підвищення його ролі у житті людей супроводжується не тільки позитивним ефектом, а й негативними наслідками, зокрема, високим рівнем аварійності транспортних заходів та дорожньо-транс­портних пригод (ДТП).

Будь-який транспортний засіб — це джерело підвищеної небезпеки. Людина, що скористалась послугами транспортного засобу, знаходиться в зоні підвищеної небезпеки. Це зумовлюється Можливістю ДТП, катастрофами та аваріями поїздів, літаків, морських та річкових транспортних засобів, травмами при посадці чи виході з транспортних засобів або під час їх руху.

Автомобільний транспорт. У світі щорічно внаслідок ДТП гине 250 тисяч людей і приблизно в 30 разів більша кількість отримує травми.

Закон України «Про дорожній рух» визначає правові та соціальні основи дорожнього руху з метою захисту життя та здоров'я громадян, створення безпечних і комфортних умов для учасників руху та охоро­ни навколишнього природного середовища.

Велике значення при аваріях має психологічний чинник, зокрема емоційний стрес. Для пасажирів зовсім не підготовлених, та необізнаних з обставинами можливих аварій, цей чинник відіграє негативну роль. Люди, які підготовлені, знають про можливі аварійні ситуації, а також про те, що робити при їх виникненні, скоять менше помилок під час дійсної аварійної ситуації, що може врятувати їм життя. Тому необхідно, щоб кожний пасажир з метою підвищення особистої дорожньо-транспортної безпеки знав потенційно аварійні ситуації, характерні для того чи іншого виду транспортних засобів, послугами якого він скористався, крім того, був добре обізнаний з засобами індивідуального та колективного захисту, що зна­ходяться на транспортному засобі, та знав способи їх використання.

Повітряний транспорт. З моменту виникнення авіації виник­ла проблема забезпечення безпеки авіапольотів. На відміну від інших видів транспорту відмови двигунів у польотах практично завжди при­зводять до неминучих катастрофічних наслідків. У середньому щорі­чно в світі стається близько 60 авіаційних катастроф, в 35 з яких ги­нуть усі пасажири та екіпаж. Близько двох тисяч людських життів щорічно забирають авіаційні катастрофи, а на дорогах світу щорічно гине понад 250 тисяч чоловік. Отже, ризик потрапити під колеса ма­шин в 10-15 разів вищий від ризику загинути в авіакатастрофі.

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

Наслідки при авіакатастрофах для пасажирів можуть бути: від слаб­кого невротичного шоку до тяжких чисельних травм. Це можуть бути ушкодження тазових органів, органів черевної порожнини, груд­ної клітки, поранення голови, шиї, опіки, переломи, особливо нижніх кінцівок, асфіксія, яка настає внаслідок дихання парами си­нильної кислоти, що виділяється при горінні пластикових матеріалів корпусу літака. При катастрофах деяких травм можна уникнути^ якщо дотримуватись певних рекомендацій. Ці рекомендації збільшують шанси пасажирів на спасіння в будь-якій ситуації.

Залізничний транспорт. Пасажири залізничного транспорту також знаходяться в зоні підвищеної небезпеки. Зонами підвищеної небезпеки на залізничному транспорті є: залізничні колії, переїзди, посадочні платформи та вагони, в яких пасажири здійснюють переїзди. Постійну небезпеку становить система електропостачання, можливість аварій, зіткнення, отримання травм під час посадки або висадки. Крім цього за­лізничними коліями перевозяться небезпечні вантажі: від палива та на­фтопродуктів до радіоактивних відходів та вибухових речовин.

Найбільшу небезпеку для пасажирів становлять пожежі у вагонах. Зумовлюєть­ся це тим, що у вагонах (замкненому просторі) завжди перебуває велика кількість людей. Температура в осередку пожежі дуже швидко підвищується з утворенням токсичних продуктів горіння. Особливо небезпечними є пожежі в нічний час на великих перегонах, коли пасажири сплять.

Дотримання правил безпеки як пасажирами і машиністами, так і пішоходами значно зменшує ризик потрапляння в надзвичайні ситуації, а саме:

  • при русі вздовж залізничної колії не дозволяється підходити ближче ніж на 5 м до крайньої рейки;

  • на електрифікованих ділянках залізничної колії не підніматися на опори, а також не торкатися спуску, який відходить від опори до рейок, а також дротів, які лежать на землі;

  • залізничні колії можна переходити тільки у встановлених місцях (по пішох­ідних містках, переходах тощо); перед переходом колій необхідно впевнитись у відсутності потяга або локомотива і тільки після цього здійснювати перехід;

  • підходячи до переїзду, уважно простежте за світловою та звуковою сигналізацією та положенням шлагбаума; переходити колії можна тільки при відкри­тому шлагбаумі, а при його відсутності — коли не видно потяга;

  • забороняється бігти по платформі вокзалу вздовж потяга, що прибуває чи відходить;

  • під час проходження потяга без зупинки не стояти ближче двох метрів від краю платформи;

  • підходити до вагона дозволяється тільки після повної зупинки потяга;

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

  • на ходу потяга не відкривайте зовнішні двері тамбурів, не стійте на підніжках та перехідних майданчиках, а також не висовуйтесь з вікон вагонів; при зупинках потяга на перегонах не виходьте з вагонів;

  • забороняється використовувати у вагонах відкритий вогонь та користува­тися побутовими приладами, що працюють від вагонної електромережі (чайники, праски і таке інше); перевозити у вагонах легкозаймисті та вибухонебезпечні матеріали;

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

  • при виході через бокові двері та аварійні виходи будьте обережними, щоб не потрапити під зустрічний потяг.

Морський транспорт. Як і всі інші види транспортних засобів, мореплавство пов'язане з можливістю аварій, катастроф та ризиком для життя людини.

Можливий ризик для життя людини на морських транспортних засобах значно вищий, ніж на авіаційних та залізничних видах, але нижчий, ніж на автомобільних.

Основні причини загибелі кораблів:

  • посадка на рифи;

  • зіткнення;

  • перекидання;

  • порушення норм експлуатації та правил безпеки;

  • помилкові функціональні дії команди.

У процесі розвитку аварії при виникненні загрози загибелі корабля постає необхідність вжити заходів для швидкої евакуації пасажирів. Операція з евакуації вже сама по собі пов'язана з ризиком для життя людей, особливо в умовах штормової погоди. Найбільша небезпека виникає тоді, коли відмовляють пристрої. Неможливість залишити в таких випадках корабель призводить до того, що пасажири втрача­ють шанси на спасіння і потрапляють в надзвичайно складну ситуацію. Ризик для життя пасажирів виникає при спуску на воду рятувальних засобів, а саме: при перекиданні шлюпки, сильних ударах об борт корабля і таке інше. Втрата шансів на врятування може виникати внаслі­док неправильного використання рятувальних жилетів або коли люди стрибають з висоти 6-15 м з борту корабля, який тоне.

При тривалому перебуванні у воді причинами смерті можуть стати гіпотермія (переохолодження організму) та виснаження. Гіпотермія ста­новить головну небезпеку і для тих пасажирів, які рятуються в шлюпках або на плотах.

Вибухи та їх наслідки — пожежі, виникають на об'єктах, які вироб­ляють вибухонебезпечні та хімічні речовини. При горінні багатьох мате­ріалів утворюються високотоксичні речовини, від дії яких люди гинуть частіше, ніж від вогню. Раніше при пожежах виділявся переважно чадний газ. Але в останні десятиріччя горить багато речовин штучного поход­ження: полістирол, поліуретан, вініл, нейлон, поролон. Це призводить до виділення в повітря синильної, соля­ної й мурашиної кислот, метанолу, формальдегіду та інших високотоксичних речовин.

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

Певний інтерес (щодо причин виникнення) можуть становити дані офіційної статистики, які базуються на проведених у США дослідженнях 25 тисяч пожеж та вибухів: несправність електрообладнання — 23%; куріння в неналежному місці — 18%; перегрів внаслідок тертя в не­справних вузлах машин — 10%; перегрів пальних матеріалів — 8%; контакти з пальними поверхнями через несправність котлів, печей, димоходів — 7%; контакти з полум'ям, запалення від полум'я горілки — 7%; запалення від пальних часток (іскри) від установок та устатку­вання для спалювання — 5%; самозапалювання пальних матеріалів — 4%; запалювання матеріалів при різці та зварюванні металу — 4%.

Більше 63% пожеж у промисловості обумовлено помилками людей або їх некомпетентністю. Коли підприємство скорочує штати й бюд­жет аварійних служб, знижується ефективність їх функціонування, різко зростає ризик виникнення пожеж та вибухів, а також рівень людських та матеріальних втрат.[13]

Висновки

В результаті виконаної дипломної роботи було створено автоматизовану систему для обліку та розрахунок амортизації оргтехніки.

Використання автоматизованої системи має підвищити продуктивність праці працівників фірми за рахунок скорочення часу на ведення відповідної документації та роздрукування бланків замовлення.

Програма дозволяє переглядати довідники, виконувати пошук інформації за різними критеріями, редагувати інформацію, розраховувати амортизацію та модернізацію техніки, експортувати дані в Excel, отримувати звіти та друкувати їх.

Програмний продукт було розроблено в середовищі програмування Borland Delphi 6.0

Програма працює на IBM-сумісних ЕОМ під керуванням операційних систем Microsoft Windows 2000/XP/7. Програма має дружній інтерфейс, зручний у використанні, не потребує багато часу на опанування принципів роботи з ним.

Система була протестована на контрольній базі даних, її працездатність підтверджено.

Проведено розрахунок основної та додаткової заробітної плати фахівців, зайнятих у розробці програмного продукту. Загальні витрати, пов’язані з розробкою програмного продукту складають 3602,72 грн.

Розроблене програмне забезпечення відповідає вимогам техніки безпеки і охорони праці.

Список літератури

  1. С. Ф. Покропивного. Економіка підприємства — Вид. 2-ге, перероб. та доп. — К.: КНЕУ, 2000— 528 с.

  2. Гофман В. Э., Хомоненко А. Д. Delphi. Быстрый старт. — СПб: БХВ-Петербург, 2003, 288 с.

  3. В. В. Шупрута. Delphi 2005. Учимся программировать – М.: НТ Пресс, 2005, 352 стр.

  4. Сухарев М. Основы Delphi. Профессиональный подход – СПб.: Наука и Техника, 2004, 603с.

  5. Никита Культін. Основы программирования в Delphi7 – БХВ-Петербург, 2003,608с.

  6. І. Ю. Баженова. Delphi 7. Самоучитель программиста – К.: КУДИЦ-Образ, 2003, 448с.

  7. Віктор Пестриков, Артур Маслобоєв. Delphi на примерах – СПб.: БХВ-Петербург, 2005, 1156с.

  8. Стивенс Р. Delphi. Готовые алгоритмы – СПб.: Питер, 2004, 381с.

  9. Дворжецкий А.В. SQL: Structured Query Language (структурированный язык запросов). - М.: Познавательная книга плюс, 2001. – 416с. – (Карманный атрибут компьютерщика).

  10. Таненбаум Э. Современные операционные системы. 2-е изд. — СПб: Питер, 2002. — 1040 с: ил.

  11. Гэри Хансен, Джэймс Хансен. Базы данных: разработка и управление: Пер. с англ. – М.: ЗАО «Издательство БИНОМ», 1999 – 704с.: ил.

  12. Фролова Т.А. Экономика предприятия — Т.: ТРТУ, 2005., 374с.

  13. Желібо Є.П., Заверуха Н.М., Зацарний В.В. Безпека життєдіяльності: Навч. посіб. — 4-е вид. - К.: Каравела, 2005 г., 344 с.

  14. ДСТУ 3008-95. Документація. Звіти в сфері науки та техніки. Структура і правила оформлення.

  15. ГОСТ 2.105-95. ЕСКД. Общие требования и правила составления.

  16. СТП 07-2000. Стандарт підприємства. Нормоконтроль. Організація і порядок проведення.

  17. СТП 06-96. Стандарт підприємства. Пояснювальні записки. Структура і правила оформлення.

  18. СТП 08-90. Правила оформления списков литературы и ссылок на литературные источники в текстовых документах техникума.

Додаток А

(обов’язковий)

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

unit Main;

interface

uses

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

Dialogs, jpeg, ExtCtrls, ImgList, ComCtrls, ToolWin, Menus, StdCtrls,

Grids, DBGrids,ComObj;

type

TFMain = class(TForm)

ToolBar1: TToolBar;

ImageList1: TImageList;

ToolButton4: TToolButton;

MainMenu1: TMainMenu;

N2: TMenuItem; N6: TMenuItem; N5: TMenuItem; N4: TMenuItem;

N7: TMenuItem; N8: TMenuItem; N9: TMenuItem; N10: TMenuItem;

DBGrid1: TDBGrid; PanFind: TPanel; Label1: TLabel;

Edit1: TEdit; Button1: TButton; Button2: TButton; N1: TMenuItem;

ToolButton2: TToolButton; ToolButton5: TToolButton;

ToolButton6: TToolButton; ToolButton7: TToolButton; N11: TMenuItem;

N12: TMenuItem;

N13: TMenuItem;

DateTimePicker1: TDateTimePicker;

Label2: TLabel; N3: TMenuItem;

N14: TMenuItem; N15: TMenuItem;

N16: TMenuItem; ToolButton1: TToolButton;

PageControl1: TPageControl; TabSheet1: TTabSheet; TabSheet2: TTabSheet; DBGrid2: TDBGrid;

DBGrid3: TDBGrid; N17: TMenuItem; N18: TMenuItem;

N19: TMenuItem; N20: TMenuItem;

procedure N7Click(Sender: TObject);

procedure N10Click(Sender: TObject);

procedure DBGrid1CellClick(Column: TColumn);

procedure N8Click(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure N9Click(Sender: TObject);

procedure FormShow(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure ToolButton6Click(Sender: TObject);

procedure DBGrid1DblClick(Sender: TObject);

procedure N11Click(Sender: TObject);

procedure N12Click(Sender: TObject);

procedure N13Click(Sender: TObject);

procedure ToolButton4Click(Sender: TObject);

procedure DBGrid1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);

procedure DBGrid1KeyPress(Sender: TObject; var Key: Char);

procedure N3Click(Sender: TObject);

procedure N5Click(Sender: TObject);

procedure ToolButton5Click(Sender: TObject);

procedure N4Click(Sender: TObject);

procedure ToolButton1Click(Sender: TObject);

procedure N17Click(Sender: TObject);

procedure N18Click(Sender: TObject);

procedure N14Click(Sender: TObject);

procedure N15Click(Sender: TObject);

procedure N16Click(Sender: TObject);

procedure ToolButton2Click(Sender: TObject);

procedure N19Click(Sender: TObject);

procedure N20Click(Sender: TObject);

procedure N1Click(Sender: TObject);

procedure ToolButton7Click(Sender: TObject);

private

public

end;

var

FMain: TFMain;

implementation

uses DM1, Unit1, Vibor, Amortiz, DB,DateUtils, Unit2, Vybrat, OtchetSot,

OtchetOtdel, OtchetBalStoim, UstrPoSotr, About, Help;

procedure TFMain.N7Click(Sender: TObject);

begin Close; end;

procedure TFMain.N10Click(Sender: TObject);

begin Close; end;

procedure TFMain.DBGrid1CellClick(Column: TColumn);

begin DataModule1.ADOQuery2.Close;

DataModule1.ADOQuery2.SQL.Text:='Select tblShtat.Fio As[ФИО],tblShtat.TabNom As[Табельный номер],tblShtat.Title As [Должность],tblOtdel.OtdelKrat As [Отдел],tblShtat.Telefon As [Телефон],tblShtat.Address As [Адресс],tblShtat.Email,tblShtat.NetName As [Сетевое имя] from '+'tblShtat INNER JOIN tblOtdel ON tblOtdel.ID = tblShtat.Otdel where FioKr="'+DataModule1.DataSource1.DataSet.Fields[2].AsString+'"';

DataModule1.ADOQuery2.Open;

DataModule1.ADOQueryOtdel.Close;

DataModule1.ADOQueryOtdel.SQL.Text:='Select Otdel As[Отдел],Boss As[Начальник отдела],Mol As [Материально ответсвенное лицо] From tblOtdel where OtdelKrat="'+DataModule1.DataSource1.DataSet.Fields[1].AsString+'"';

DataModule1.ADOQueryOtdel.Open;end;

procedure TFMain.N8Click(Sender: TObject);

begin PanFind.Visible:= True;

Label1.Caption:='Инвентарный номер';

Edit1.Text:='';

DateTimePicker1.Visible:= False; end;

procedure TFMain.Button1Click(Sender: TObject);

begin if (Label1.Caption='Тип устройства') then

begin

DataModule1.ADOQuery1.Close;

DataModule1.ADOQuery1.SQL.Text:='SELECT tblOborUpr.ObjectType As[Тип], tblOtdel.OtdelKrat As[Отдел], tblShtat.FioKr As[Сотрудник], tblOborUpr.InventoryNumber As[Инвент номер], tblOborUpr.ObjectName As[Устройство],tblOborUpr.Price As[Цена],tblOborUpr.Amortiz As[Амортизация],' +'tblOborUpr.OstPrice As[Ост стоимость], tblOborUpr.DataVvod As[Дата ввода],tblOborUpr.PurchaseDate As[Дата выпуска], tblOborUpr.Notes As[Операция с объектом],tblOborUpr.DataOperaz As[Дата операции], tblOborUpr.DateSpisanie As [Дата списания] FROM (tblOborUpr '+'INNER JOIN tblOtdel ON tblOborUpr.Department= tblOtdel.ID ) INNER JOIN tblShtat ON (tblShtat.ID = tblOborUpr.UserName) where ObjectType Like "%' +Edit1.Text+'%"';

DataModule1.ADOQuery1.Open;

Label2.Caption:=' Устройства типа: ' +Edit1.Text;

end else if (Label1.Caption='Инвентарный номер') then

begin

DataModule1.ADOQuery1.Close;

DataModule1.ADOQuery1.SQL.Text:='SELECT tblOborUpr.ObjectType As[Тип], tblOtdel.OtdelKrat As[Отдел], tblShtat.FioKr As[Сотрудник], tblOborUpr.InventoryNumber As[Инвент номер],tblOborUpr.ObjectName As[Устройство],tblOborUpr.Price As[Цена],tblOborUpr.Amortiz As[Амортизация],' +'tblOborUpr.OstPrice As[Ост стоимость], tblOborUpr.DataVvod As[Дата ввода],tblOborUpr.PurchaseDate As[Дата выпуска], tblOborUpr.Notes As[Операция с объектом],tblOborUpr.DataOperaz As[Дата операции], tblOborUpr.DateSpisanie As [Дата списания] FROM (tblOborUpr '+'INNER JOIN tblOtdel ON tblOborUpr.Department= tblOtdel.ID ) INNER JOIN tblShtat ON(tblShtat.ID = tblOborUpr.UserName) where InventoryNumber Like "%' +Edit1.Text+'%"';

DataModule1.ADOQuery1.Open;

Label2.Caption:=' Устройства инвентарный номер '; end

else if (Label1.Caption='Название устройства') then

begin

DataModule1.ADOQuery1.Close;

DataModule1.ADOQuery1.SQL.Text:='SELECT tblOborUpr.ObjectType As [Тип], tblOtdel.OtdelKrat As [Отдел], tblShtat.FioKr As [Сотрудник], tblOborUpr.InventoryNumber As[Инвент номер], tblOborUpr.ObjectName As [Устройство], tblOborUpr.Price As [Цена] ,tblOborUpr.Amortiz As[Амортизация],' +'tblOborUpr.OstPrice As [Ост стоимость], tblOborUpr.DataVvod As[Дата ввода],tblOborUpr.PurchaseDate As[Дата выпуска],t blOborUpr.Notes As[Операция с объектом],tblOborUpr.DataOperaz As[Дата операции], tblOborUpr.DateSpisanie As [Дата списания] FROM (tblOborUpr '+'INNER JOIN tblOtdel ON tblOborUpr.Department= tblOtdel.ID ) INNER JOIN tblShtat ON(tblShtat.ID = tblOborUpr.UserName) where ObjectName Like "%' +Edit1.Text+'%"';

DataModule1.ADOQuery1.Open;

Label2.Caption:=' Название устройства: ' +Edit1.Text; end

else if (Label1.Caption='Дата выпуска') then

begin

DataModule1.ADOQuery1.Close;

DataModule1.ADOQuery1.SQL.Text:='SELECT tblOborUpr.ObjectType As[Тип], tblOtdel.OtdelKrat As[Отдел], tblShtat.FioKr As[Сотрудник],tblOborUpr.InventoryNumber As[Инвент номер],tblOborUpr.ObjectName As[Устройство],tblOborUpr.Price As[Цена],tblOborUpr.Amortiz As[Амортизация],'

+'tblOborUpr.OstPrice As[Ост стоимость],tblOborUpr.DataVvod As[Дата ввода],tblOborUpr.PurchaseDate As[Дата выпуска],tblOborUpr.Notes As[Операция с объектом],tblOborUpr.DataOperaz As[Дата операции],tblOborUpr.DateSpisanie As [Дата списания] FROM (tblOborUpr '+'INNER JOIN tblOtdel ON tblOborUpr.Department= tblOtdel.ID ) INNER JOIN tblShtat ON(tblShtat.ID = tblOborUpr.UserName) where PurchaseDate= datevalue("'+datetostr(DateTimePicker1.Date)+'")';

DataModule1.ADOQuery1.Open;

Label2.Caption:=' Устройства купленные: ' + datetostr(DateTimePicker1.Date); end

else if (Label1.Caption='Дата ввода') then

begin

DataModule1.ADOQuery1.Close;

DataModule1.ADOQuery1.SQL.Text:='SELECT tblOborUpr.ObjectType As [Тип], tblOtdel.OtdelKrat As [Отдел], tblShtat.FioKr As [Сотрудник], tblOborUpr.InventoryNumber As[Инвент номер], tblOborUpr.ObjectName As [Устройство], tblOborUpr.Price As[Цена],tblOborUpr.Amortiz As[Амортизация],'

+'tblOborUpr.OstPrice As[Ост стоимость],tblOborUpr.DataVvod As[Дата ввода],tblOborUpr.PurchaseDate As[Дата выпуска],tblOborUpr.Notes As[Операция с объектом],tblOborUpr.DataOperaz As[Дата операции],tblOborUpr.DateSpisanie As [Дата списания] FROM (tblOborUpr '+'INNER JOIN tblOtdel ON tblOborUpr.Department= tblOtdel.ID ) INNER JOIN tblShtat ON (tblShtat.ID = tblOborUpr.UserName) where DataVvod= datevalue ("'+datetostr (DateTimePicker1.Date)+'")';

DataModule1.ADOQuery1.Open;

Label2.Caption:=' Устройства введенные в эксплуатацию: ' + datetostr(DateTimePicker1.Date);end

else if (Label1.Caption='Фамилия сотрудника') then

begin

DataModule1.ADOQueryPromeg.Close;

DataModule1.ADOQueryPromeg.SQL.Text:= 'SELECT ID FROM tblShtat where FioKr = "'+Edit1.Text+'"';

DataModule1.ADOQueryPromeg.Open;

DataModule1.ADOQuery1.Close;

DataModule1.ADOQuery1.SQL.Text:='SELECT tblOborUpr.ObjectType As [Тип], tblOtdel.OtdelKrat As[Отдел], tblShtat.FioKr As[Сотрудник], tblOborUpr.InventoryNumber As[Инвент номер],tblOborUpr.ObjectName As[Устройство],tblOborUpr.Price As[Цена],tblOborUpr.Amortiz As[Амортизация],'

+'tblOborUpr.OstPrice As[Ост стоимость],tblOborUpr.DataVvod As[Дата ввода],tblOborUpr.PurchaseDate As[Дата выпуска],tblOborUpr.Notes As[Операция с объектом],tblOborUpr.DataOperaz As[Дата операции],tblOborUpr.DateSpisanie As [Дата списания] FROM (tblOborUpr '+'INNER JOIN tblOtdel ON tblOborUpr.Department= tblOtdel.ID ) INNER JOIN tblShtat ON(tblShtat.ID = tblOborUpr.UserName) where UserName = ' +DataModule1.DataSourcePromeg.DataSet.Fields[0].AsString +'';

DataModule1.ADOQuery1.Open;

Label2.Caption:=' Устройства прикрепленные за ' +Edit1.Text;end

else if (Label1.Caption='Краткое название отдела') then

begin

DataModule1.ADOQueryPromeg.Close;

DataModule1.ADOQueryPromeg.SQL.Text:= 'SELECT ID FROM tblOtdel where OtdelKrat = "'+Edit1.Text+'"';

DataModule1.ADOQueryPromeg.Open;

DataModule1.ADOQuery1.Close;

DataModule1.ADOQuery1.SQL.Text:='SELECT tblOborUpr.ObjectType As [Тип], tblOtdel.OtdelKrat As[Отдел], tblShtat.FioKr As[Сотрудник], tblOborUpr.InventoryNumber As[Инвент номер],tblOborUpr.ObjectName As[Устройство],tblOborUpr.Price As[Цена],tblOborUpr.Amortiz As[Амортизация],'

+'tblOborUpr.OstPrice As[Ост стоимость],tblOborUpr.DataVvod As[Дата ввода],tblOborUpr.PurchaseDate As[Дата выпуска],tblOborUpr.Notes As[Операция с объектом],tblOborUpr.DataOperaz As[Дата операции],tblOborUpr.DateSpisanie As [Дата списания] FROM (tblOborUpr '+'INNER JOIN tblOtdel ON tblOborUpr.Department= tblOtdel.ID ) INNER JOIN tblShtat ON(tblShtat.ID = tblOborUpr.UserName) where Department = ' +DataModule1. DataSourcePromeg. DataSet.Fields[0].AsString +'';

DataModule1.ADOQuery1.Open;

Label2.Caption:=' Устройства отдела ' +Edit1.Text;end;end;

procedure TFMain.N9Click(Sender: TObject);

begin

PanFind.Visible:= True;

Label1.Caption:='Тип устройства';

Edit1.Text:='';

DateTimePicker1.Visible:= False;end;

procedure TFMain.FormShow(Sender: TObject);

begin

DataModule1.ADOQueryTables.Close;

DataModule1.ADOQueryTables.SQL.Text:='SELECT tblOborUpr.ID, tblOborUpr.ObjectType, tblOborUpr.ObjectName, tblOborUpr.InventoryNumber, tblOborUpr.Price, tblOborUpr.UserName, tblOborUpr.Department, tblOborUpr.PurchaseDate, tblOborUpr.Amortiz, tblOborUpr.OstPrice,' +' tblOborUpr.DataVvod, tblOborUpr.Notes, tblOborUpr.DataOperaz, tblOborUpr.StavkaAmort, tblOborUpr.SrokSlugbi, tblOborUpr.DateSpisanie FROM tblOborUpr ORDER BY tblOborUpr.ObjectType' ;

DataModule1.ADOQueryTables.Open;

DataModule1.ADOQuery1.Close;

DataModule1.ADOQuery1.SQL.Text:='SELECT tblOborUpr.ObjectType As [Тип], tblOtdel.OtdelKrat As[Отдел], tblShtat.FioKr As[Сотрудник], tblOborUpr.InventoryNumber As[Инвент №],tblOborUpr.ObjectName As[Устройство],tblOborUpr.Price As[Цена], tblOborUpr.Amortiz As[Амортизация],'+'tblOborUpr.OstPrice As[Ост стоимость], tblOborUpr.DataVvod As[Дата ввода],tblOborUpr.PurchaseDate As[Дата выпуска], tblOborUpr.Notes As[Операция с объектом],tblOborUpr.DataOperaz As[Дата операции],tblOborUpr.DateSpisanie As [Дата списания] FROM (tblOborUpr ' +'INNER JOIN tblOtdel ON tblOborUpr.Department= tblOtdel.ID ) INNER JOIN tblShtat ON(tblShtat.ID = tblOborUpr.UserName)';

DataModule1.ADOQuery1.Open;

DataModule1.ADOQuery2.Close;

DataModule1.ADOQuery2.SQL.Text:='Select tblShtat.Fio As[ФИО],tblShtat.TabNom As[Табельный номер],tblShtat.Title As [Должность],tblOtdel.OtdelKrat As [Отдел],tblShtat.Telefon As [Телефон],tblShtat.Address As [Адресс],tblShtat.Email,tblShtat.NetName As [Сетевое имя] from ' +'tblShtat INNER JOIN tblOtdel ON tblOtdel.ID = tblShtat.Otdel where FioKr="'+DataModule1.DataSource1.DataSet.Fields[2].AsString+'"';

DataModule1.ADOQuery2.Open;

DataModule1.ADOQueryOtdel.Close;

DataModule1.ADOQueryOtdel.SQL.Text:='Select Otdel As[Отдел],Boss As[Начальник отдела],Mol As [Материально ответсвенное лицо] From tblOtdel where OtdelKrat="'+DataModule1.DataSource1.DataSet.Fields[1].AsString+'"';

DataModule1.ADOQueryOtdel.Open;end;

procedure TFMain.Button2Click(Sender: TObject);

begin

DataModule1.ADOQuery1.Close;

DataModule1.ADOQuery1.SQL.Text:='SELECT tblOborUpr.ObjectType As[Тип], tblOtdel.OtdelKrat As[Отдел], tblShtat.FioKr As[Сотрудник] ,tblOborUpr.InventoryNumber As[Инвент номер], tblOborUpr.ObjectName As[Устройство], tblOborUpr.Price As[Цена], tblOborUpr.Amortiz As[Амортизация],'

+'tblOborUpr.OstPrice As[Ост стоимость], tblOborUpr.DataVvod As[Дата ввода], tblOborUpr.PurchaseDate As[Дата выпуска], tblOborUpr.Notes As[Операция с объектом], tblOborUpr.DataOperaz As[Дата операции],tblOborUpr.DateSpisanie As [Дата списания] FROM (tblOborUpr ' +'INNER JOIN tblOtdel ON tblOborUpr.Department= tblOtdel.ID ) INNER JOIN tblShtat ON(tblShtat.ID = tblOborUpr.UserName)';

DataModule1.ADOQuery1.Open;

PanFind.Visible:=False;

Label2.Caption:=' Устройства';end;

procedure TFMain.ToolButton6Click(Sender: TObject);

var

i,j,j1,index: Integer;

ExcelApp,sheet: Variant;

begin

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

ExcelApp.Visible := true;

ExcelApp.WorkBooks.Add(-4167);

ExcelApp.WorkBooks[1].WorkSheets[1].name := 'Лист';

sheet:=ExcelApp.WorkBooks[1].WorkSheets['Лист'];

index:=3; //c eaeie no?iee anoaaeyou a excel'e

DBGrid1.DataSource.DataSet.First;

sheet.range['A1:M1'].MergeCells:=True;

sheet.cells [1,1]:=Label2.Caption;

sheet.cells [1,1].Font.FontStyle := 'bold italic';

sheet.cells [1,1].Font.Name:='Arial cur';

sheet.cells [1,1].HorizontalAlignment:= 3

sheet.cells [1,1].Font.Size:=14;

sheet.cells [1,1].Columns.ColumnWidth:=10;

for j1:=1 to DBGrid1.FieldCount do

begin

sheet.cells[2,j1]:=DBGrid1.fields[j1-1].FieldName;

sheet.cells[2,j1].Font.FontStyle := 'bold italic';

sheet.cells[2,j1].Font.Name:='Arial cur';

sheet.cells[2,j1].HorizontalAlignment:= 1;

sheet.cells[2,j1].Font.Size:=10;

sheet.cells[2,j1].Columns.ColumnWidth:=10;

sheet.cells [2,j1]. Borders.LineStyle:=1;

sheet.cells [2,j1]. Borders.Weight:=2;

sheet.cells[2,1].Columns.ColumnWidth:=20; //sheet.cells[2,1].Columns.ColumnWidth+1.5;

sheet.cells[2,5].Columns.ColumnWidth:=17;// sheet.cells[2,5].Columns.ColumnWidth+3; end;

for i:=1 to DBGrid1.DataSource.DataSet.RecordCount do

begin

for j:=1 to DBGrid1.FieldCount do

begin

sheet.cells[index,j]:=DBGrid1.fields[j-1].asstring;

sheet.cells [index,j]. Borders.LineStyle:=1;

sheet.cells [index,j]. Borders.Weight:=2; end;

inc(index);

DBGrid1.DataSource.DataSet.Next;

end;end;

procedure TFMain.DBGrid1DblClick(Sender: TObject);

begin

FChan.Show;

FChan.Caption:=' Изменение';

FChan.ComboBox1.Text:=DBGrid1.Fields[0].AsString;

FChan.EdOtdel.Text:=DBGrid1.Fields[1].AsString;

FChan.EdSotrud.Text:=DBGrid1.Fields[2].AsString;

FChan.EdInvNom.Text:=DBGrid1.Fields[3].AsString;

FChan.EdUstroystvo.Text:=DBGrid1.Fields[4].AsString;

FChan.EdNachStoim.Text:=DBGrid1.Fields[5].AsString;

FChan.DateTimePicker1.Date:=StrToDate( DBGrid1.Fields[8].AsString);

FChan.DateTimePicker2.Date:=StrToDate(DBGrid1.Fields[9].AsString);end;

procedure TFMain.N11Click(Sender: TObject);

begin

PanFind.Visible:= True;

Label1.Caption:='Название устройства';

Edit1.Text:='';

DateTimePicker1.Visible:= False;end;

procedure TFMain.N12Click(Sender: TObject);

begin PanFind.Visible:= True;

Label1.Caption:='Дата выпуска';

Edit1.Text:='';

DateTimePicker1.Visible:= True; end;

procedure TFMain.N13Click(Sender: TObject);

begin PanFind.Visible:= True;

Label1.Caption:='Дата ввода';

Edit1.Text:='';

DateTimePicker1.Visible:= True; end;

procedure TFMain.ToolButton4Click(Sender: TObject);

begin

FChan.Show;

FChan.Caption:='Добавление';

FChan.ComboBox1.Text:='';

FChan.EdOtdel.Text:='';

FChan.EdSotrud.Text:='';

FChan.EdInvNom.Text:='';

FChan.EdUstroystvo.Text:='';

FChan.EdNachStoim.Text:='';

FChan.DateTimePicker1.Date:=Date + ApproxDaysPerMonth - ApproxDaysPerYear;

FChan.DateTimePicker2.Date:=Date - ApproxDaysPerYear;

FChan.CheckBox1.Visible:=False;

FChan.LabeledEdit1.Visible:=false; end;

procedure TFMain.DBGrid1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);

begin

DataModule1.ADOQuery2.Close;

DataModule1.ADOQuery2.SQL.Text:='Select Fio As[ФИО],TabNom As[Табельный номер],Title As [Должность],Otdel As [Отдел],Telefon As [Телефон],Address As [Адресс],Email,NetName As [Сетевое имя] from tblShtat where FioKr="'+DataModule1.DataSource1.DataSet.Fields[2].AsString+'"';

DataModule1.ADOQuery2.Open; end;

procedure TFMain.DBGrid1KeyPress(Sender: TObject; var Key: Char);

begin

DataModule1.ADOQuery2.Close;

DataModule1.ADOQuery2.SQL.Text:='Select Fio As[ФИО],TabNom As[Табельный номер],Title As [Должность],Otdel As [Отдел],Telefon As [Телефон],Address As [Адресс],Email,NetName As [Сетевое имя] from tblShtat where FioKr="'+ DataModule1.DataSource1.DataSet.Fields[2].AsString+'"';

DataModule1.ADOQuery2.Open; end;

procedure TFMain.N3Click(Sender: TObject);

begin

FVibor.Show;

FVibor.PageControl1.ActivePageIndex:=0;

DataModule1.ADOQueryTables.Close;

DataModule1.ADOQueryTables.SQL.Text:='SELECT tblOborUpr.ObjectType As[Тип], tblOtdel.OtdelKrat As[Отдел], tblShtat.FioKr As[Сотрудник],tblOborUpr.InventoryNumber As[Инвент номер],tblOborUpr.ObjectName As[Устройство],tblOborUpr.Price As[Цена],tblOborUpr.Amortiz As[Амортизация],'+'tblOborUpr.OstPrice As[Ост стоимость], tblOborUpr.DataVvod As[Дата ввода],tblOborUpr.PurchaseDate As[Дата выпуска], tblOborUpr.Notes As[Операция с объектом],tblOborUpr.DataOperaz As[Дата операции], tblOborUpr.DateSpisanie As [Дата списания] FROM (tblOborUpr '+'INNER JOIN tblOtdel ON tblOborUpr.Department= tblOtdel.ID ) INNER JOIN tblShtat ON(tblShtat.ID = tblOborUpr.UserName)';

DataModule1.ADOQueryTables.Open; end;

procedure TFMain.N5Click(Sender: TObject);

begin FVibor.Show;

FVibor.PageControl1.ActivePageIndex:=1;

DataModule1.ADOQueryTables.Close;

DataModule1.ADOQueryTables.SQL.Text:='SELECT tblShtat.Fio As [ФИО], tblShtat.TabNom As [Табельный номер], tblShtat.Title As [Должность], tblOtdel.Otdel As [Отдел], tblShtat.Telefon As [Телефон], tblShtat.Address As [Адресс], tblShtat.Email, tblShtat.NetName' +' As [Сетевое имя],tblShtat.FioKr As[Фамилия инициалы], tblShtat.Role As[Право доступа] FROM tblOtdel INNER JOIN tblShtat ON tblOtdel.ID = tblShtat.Otdel';

DataModule1.ADOQueryTables.Open; end;

procedure TFMain.ToolButton5Click(Sender: TObject);

begin

FChan.Show;

FChan.Caption:='Изменение';

FChan.ComboBox1.Text:=DBGrid1.Fields[0].AsString;

FChan.EdOtdel.Text:=DBGrid1.Fields[1].AsString;

FChan.EdSotrud.Text:=DBGrid1.Fields[2].AsString;

FChan.EdInvNom.Text:=DBGrid1.Fields[3].AsString;

FChan.EdUstroystvo.Text:=DBGrid1.Fields[4].AsString;

FChan.EdNachStoim.Text:=DBGrid1.Fields[5].AsString;

FChan.DateTimePicker1.Date:=StrToDate( DBGrid1.Fields[8].AsString);

FChan.DateTimePicker2.Date:=StrToDate(DBGrid1.Fields[9].AsString);

FChan.CheckBox1.Visible:=True; FChan.CheckBox1.Checked:=false;

DataModule1.ADOQueryPromeg.Close;

DataModule1.ADOQueryPromeg.SQL.Text:='Select ID from tblOtdel where OtdelKrat ="'+DBGrid1.Fields[1].AsString+'"';

DataModule1.ADOQueryPromeg.Open;

FChan.LblOtdel.Caption:=DataModule1.DataSourcePromeg.DataSet.Fields[0].AsString;

DataModule1.ADOQueryPromeg.Close;

DataModule1.ADOQueryPromeg.SQL.Text:='Select ID from tblShtat where FioKr ="'+DBGrid1.Fields[2].AsString+'"';

DataModule1.ADOQueryPromeg.Open; Chan.LblSotr.Caption:=DataModule1.DataSourcePromeg.DataSet.Fields[0].AsString;end;

procedure TFMain.N4Click(Sender: TObject); //

begin FVibor.Show;

FVibor.PageControl1.ActivePageIndex:=2;

DataModule1.ADOQueryTables.Close;

DataModule1.ADOQueryTables.SQL.Text:='SELECT tblOtdel.Otdel As [Название отдела], tblOtdel.OtdelKrat As [Краткое название], tblOtdel.Boss As [Руководитель], tblOtdel.Mol As[Материально ответсвенное лицо] FROM tblOtdel ';

DataModule1.ADOQueryTables.Open; end;

procedure TFMain.ToolButton1Click(Sender: TObject);

begin FAmortizatsia.Show;

FAmortizatsia.DateTimePicker1.Date:= Date;

FAmortizatsia.CheckBox1.Checked:=false; end;

procedure TFMain.N17Click(Sender: TObject);

begin PanFind.Visible:= True;

Label1.Caption:='Фамилия сотрудника';

Edit1.Text:='';

DateTimePicker1.Visible:= False;end;

procedure TFMain.N18Click(Sender: TObject);

begin

PanFind.Visible:= True;

Label1.Caption:='Краткое название отдела';

Edit1.Text:='';

DateTimePicker1.Visible:= False;end;

procedure TFMain.N14Click(Sender: TObject);

begin

FOtchet.QuickRep1.PreviewModal;end;

procedure TFMain.N15Click(Sender: TObject);

begin FOtchetSot.QuickRep1.PreviewModal;end;

procedure TFMain.N16Click(Sender: TObject);

begin FOtchetOtdel.QuickRep1.PreviewModal;end;

procedure TFMain.ToolButton2Click(Sender: TObject);

begin

DataModule1.ADOQueryPromeg.Close;

DataModule1.ADOQueryPromeg.SQL.Text:='Select ID from tblOborUpr where InventoryNumber ="'+FMain.DBGrid1.Fields[3].AsString+'"';

DataModule1.ADOQueryPromeg.Open;

DataModule1.ADOQuery1.Close;

DataModule1.ADOQuery1.SQL.Text:='Delete * from tblOborUpr where ID='+ DataModule1.DataSourcePromeg.DataSet.Fields[0].AsString+'';

DataModule1.ADOQuery1.ExecSQL;

DataModule1.ADOQuery1.Close;

DataModule1.ADOQuery1.SQL.Text:='SELECT tblOborUpr.ObjectType As [Тип], tblOtdel.OtdelKrat As[Отдел], tblShtat.FioKr As[Сотрудник], tblOborUpr.InventoryNumber As[Инвент номер],tblOborUpr.ObjectName As[Устройство],tblOborUpr.Price As[Цена],tblOborUpr.Amortiz As[Амортизация],' +'tblOborUpr.OstPrice As[Ост стоимость],tblOborUpr.DataVvod As[Дата ввода],tblOborUpr.PurchaseDate As[Дата выпуска],t blOborUpr.Notes As[Операция с объектом],tblOborUpr.DataOperaz As[Дата операции], tblOborUpr.DateSpisanie As [Дата списания] FROM (tblOborUpr '+'INNER JOIN tblOtdel ON tblOborUpr.Department= tblOtdel.ID ) INNER JOIN tblShtat ON(tblShtat.ID = tblOborUpr.UserName)';

DataModule1.ADOQuery1.Open;end;

procedure TFMain.N19Click(Sender: TObject);

begin FOtchetBalStoim.QuickRep1.PreviewModal; end;

procedure TFMain.N20Click(Sender: TObject);

begin FUstrPoSotr.QuickRep1.PreviewModal; end;

procedure TFMain.N1Click(Sender: TObject);

begin FAbout.Show;end;

procedure TFMain.ToolButton7Click(Sender: TObject);

begin FHelp.Show;end;end.

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, jpeg, ExtCtrls, StdCtrls, Mask, ComCtrls,Math ;

type

TFChan = class(TForm)

Label2: TLabel; Label3: TLabel;

Label4: TLabel; Label5: TLabel;

Label1: TLabel;

EdOtdel: TEdit;

ComboBox1: TComboBox;

EdSotrud: TEdit;

EdInvNom: TEdit;

BtnOtdel: TButton;

BtnSotr: TButton;

EdUstroystvo: TEdit;

Label6: TLabel;

EdNachStoim: TEdit;

DateTimePicker1: TDateTimePicker;

Label9: TLabel;

Label10: TLabel;

DateTimePicker2: TDateTimePicker;

Button1: TButton;

Button2: TButton;

EdStavkaAmort: TEdit;

Label13: TLabel;

EdSlugba: TEdit;

Label14: TLabel;

CheckBox1: TCheckBox;

LabeledEdit1: TLabeledEdit;

LblOtdel: TLabel;

LblSotr: TLabel;

procedure EdNachStoimKeyPress(Sender: TObject; var Key: Char);

procedure EdAmortKeyPress(Sender: TObject; var Key: Char);

procedure EdOstStoimKeyPress(Sender: TObject; var Key: Char);

procedure Button2Click(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure BtnOtdelClick(Sender: TObject);

procedure EdSlugbaChange(Sender: TObject);

procedure EdStavkaAmortChange(Sender: TObject);

procedure CheckBox1Click(Sender: TObject);

procedure BtnSotrClick(Sender: TObject);

procedure LabeledEdit1KeyPress(Sender: TObject; var Key: Char);

procedure LabeledEdit1Change(Sender: TObject);

procedure EdStavkaAmortKeyPress(Sender: TObject; var Key: Char);

procedure EdSlugbaKeyPress(Sender: TObject; var Key: Char);

private

public end;

var

FChan: TFChan;

uses Main, DM1, Vybrat, Amortiz, Vibor,DateUtils, DB;

procedure TFChan.EdNachStoimKeyPress(Sender: TObject; var Key: Char);

var

vrPos, vrLength, vrSelStart: byte;

const I: byte = 9; //i+1, два знака после запятой

begin

with Sender as TEdit do

begin

vrLength := Length(Text);

vrPos := Pos(decimalseparator, Text);

vrSelStart := SelStart;

end;

case Key of

'0'..'9','-':

begin

if (vrPos > 0) and (vrLength - vrPos > I) and (vrSelStart >= vrPos) then

Key := #0;

end;

',', '.':

begin

if (vrPos >0) or (vrSelStart = 0) or (vrLength = 0) then

Key := #0

else Key := decimalseparator; end;

#8: ;

else Key := #0; end;end;

procedure TFChan.EdAmortKeyPress(Sender: TObject; var Key: Char);

var

vrPos, vrLength, vrSelStart: byte;

const I: byte = 9; //i+1, два знака после запятой

begin with Sender as TEdit do

begin vrLength := Length(Text);

vrPos := Pos(decimalseparator, Text);

vrSelStart := SelStart;

end;

case Key of

'0'..'9','-':

begin if (vrPos > 0) and (vrLength - vrPos > I) and (vrSelStart >= vrPos) then

Key := #0; end;

',', '.':

begin if (vrPos >0) or (vrSelStart = 0) or (vrLength = 0) then

Key := #0

else

Key := decimalseparator; end;

#8: ;

else Key := #0; end;end;

procedure TFChan.EdOstStoimKeyPress(Sender: TObject; var Key: Char);

var

vrPos, vrLength, vrSelStart: byte;

const I: byte = 9; //i+1, два знака после запятой

begin with Sender as TEdit do begin

vrLength := Length(Text);

vrPos := Pos(decimalseparator, Text);

vrSelStart := SelStart; end;

case Key of

'0'..'9','-':

begin

if (vrPos > 0) and (vrLength - vrPos > I) and (vrSelStart >= vrPos) then

Key := #0; end;

',', '.':

begin if (vrPos >0) or (vrSelStart = 0) or (vrLength = 0) then

Key := #0

else Key := decimalseparator; end;

#8: ;

else Key := #0; end;end;

procedure TFChan.Button2Click(Sender: TObject);

begin Close;end;

procedure TFChan.Button1Click(Sender: TObject);

begin if (FChan.Caption='Добавление') then

begin

if (ComboBox1.Text='') or (EdOtdel.Text='') or (EdSotrud.Text='') or (EdInvNom.Text='') or(EdUstroystvo.Text='')or(EdNachStoim.Text='')then

ShowMessage('Не все поля заполнены! Заполните все поля!')

else begin

DataModule1.ADOQuery1.Close;

DataModule1.ADOQuery1.SQL.Text:='Insert INTO tblOborUpr (ObjectType,ObjectName,InventoryNumber,Price,UserName,Department,PurchaseDate,DataVvod,StavkaAmort,SrokSlugbi)values("'+ComboBox1.Text+'","'+EdUstroystvo.Text+'","'+EdInvNom.Text+'",'

+'"'+EdNachStoim.Text+'",'+LblSotr.Caption+','+LblOtdel.Caption+', datevalue("'+DateToStr( DateTimePicker2.Date)+'"),datevalue("'+DateToStr(DateTimePicker1.Date)+'"),"'+EdStavkaAmort.Text+'",'+EdSlugba.Text+')';

DataModule1.ADOQuery1.ExecSQL;

DataModule1.ADOQuery1.Close;

DataModule1.ADOQuery1.SQL.Text:='SELECT tblOborUpr.ObjectType As[Тип], tblOtdel.OtdelKrat As[Отдел], tblShtat.FioKr As[Сотрудник],tblOborUpr.InventoryNumber As[Инвент номер],tblOborUpr.ObjectName As[Устройство],tblOborUpr.Price As[Цена],tblOborUpr.Amortiz As[Амортизация],'+'tblOborUpr.OstPrice As[Ост стоимость], tblOborUpr.DataVvod As[Дата ввода],tblOborUpr.PurchaseDate As[Дата выпуска], tblOborUpr.Notes As[Операция с объектом],tblOborUpr.DataOperaz As[Дата операции],tblOborUpr.DateSpisanie As [Дата списания] FROM (tblOborUpr ' +'INNER JOIN tblOtdel ON tblOborUpr.Department= tblOtdel.ID ) INNER JOIN tblShtat ON(tblShtat.ID = tblOborUpr.UserName)';

DataModule1.ADOQuery1.Open; close;

DataModule1.ADOQueryTables.Close;

DataModule1.ADOQueryTables.SQL.Text:='SELECT tblOborUpr.ObjectType As[Тип], tblOtdel.OtdelKrat As[Отдел], tblShtat.FioKr As[Сотрудник],tblOborUpr.InventoryNumber As[Инвент номер],tblOborUpr.ObjectName As[Устройство],tblOborUpr.Price As[Цена],tblOborUpr.Amortiz As[Амортизация],' +'tblOborUpr.OstPrice As[Ост стоимость], tblOborUpr.DataVvod As[Дата ввода],tblOborUpr.PurchaseDate As[Дата выпуска], tblOborUpr.Notes As[Операция с объектом],tblOborUpr.DataOperaz As[Дата операции], tblOborUpr.DateSpisanie As [Дата списания] FROM (tblOborUpr ' +'INNER JOIN tblOtdel ON tblOborUpr.Department= tblOtdel.ID ) INNER JOIN tblShtat ON(tblShtat.ID = tblOborUpr.UserName)';

DataModule1.ADOQueryTables.Open;

end;end

else if (FChan.Caption='Изменение') then

begin

DataModule1.ADOQueryPromeg.Close;

DataModule1.ADOQueryPromeg.SQL.Text:='Select ID from tblOborUpr where InventoryNumber ="'+FMain.DBGrid1.Fields[3].AsString+'"';

DataModule1.ADOQueryPromeg.Open;

DataModule1.ADOQuery1.Close;

DataModule1.ADOQuery1.SQL.Text:='Update tblOborUpr SET ObjectType ="'+ComboBox1.Text+'",ObjectName="'+EdUstroystvo.Text+'",InventoryNumber="'+EdInvNom.Text+'",Price="'+EdNachStoim.Text+'",UserName='+LblSotr.Caption+',Department='+LblOtdel.Caption+','+'PurchaseDate= datevalue("'+DateToStr( DateTimePicker2.Date)+'"), DataVvod=datevalue ("'+DateToStr(DateTimePicker1.Date)+'"),StavkaAmort="'+EdStavkaAmort.Text+'",SrokSlugbi ='+EdSlugba.Text+' where ID='+DataModule1.DataSourcePromeg.DataSet.Fields[0].AsString+'';

DataModule1.ADOQuery1.ExecSQL;

DataModule1.ADOQuery1.Close;

DataModule1.ADOQuery1.SQL.Text:='SELECT tblOborUpr.ObjectType As[Тип], tblOtdel.OtdelKrat As[Отдел], tblShtat.FioKr As[Сотрудник],tblOborUpr.InventoryNumber As[Инвент номер],tblOborUpr.ObjectName As[Устройство],tblOborUpr.Price As[Цена],tblOborUpr.Amortiz As[Амортизация],'

+'tblOborUpr.OstPrice As[Ост стоимость],tblOborUpr.DataVvod As[Дата ввода],tblOborUpr.PurchaseDate As[Дата выпуска],tblOborUpr.Notes As[Операция с объектом],tblOborUpr.DataOperaz As[Дата операции],tblOborUpr.DateSpisanie As [Дата списания] FROM (tblOborUpr ' +'INNER JOIN tblOtdel ON tblOborUpr.Department= tblOtdel.ID ) INNER JOIN tblShtat ON(tblShtat.ID = tblOborUpr.UserName)';

DataModule1.ADOQuery1.Open; close;

DataModule1.ADOQueryTables.Close;

DataModule1.ADOQueryTables.SQL.Text:='SELECT tblOborUpr.ObjectType As[Тип], tblOtdel.OtdelKrat As[Отдел], tblShtat.FioKr As[Сотрудник],tblOborUpr.InventoryNumber As[Инвент номер],tblOborUpr.ObjectName As[Устройство],tblOborUpr.Price As[Цена],tblOborUpr.Amortiz As[Амортизация],' +'tblOborUpr.OstPrice As[Ост стоимость], tblOborUpr.DataVvod As[Дата ввода],tblOborUpr.PurchaseDate As[Дата выпуска], tblOborUpr.Notes As[Операция с объектом],tblOborUpr.DataOperaz As[Дата операции], tblOborUpr.DateSpisanie As [Дата списания] FROM (tblOborUpr '+'INNER JOIN tblOtdel ON tblOborUpr.Department= tblOtdel.ID ) INNER JOIN tblShtat ON(tblShtat.ID = tblOborUpr.UserName)';

DataModule1.ADOQueryTables.Open;

end;end;

procedure TFChan.BtnOtdelClick(Sender: TObject);

begin

FVybirat.Show;

FVybirat.Caption:= 'Отдел';

DataModule1.ADOQueryVibr.Close;

DataModule1.ADOQueryVibr .SQL.Text:='SELECT tblOtdel.Otdel As[Название отдела], tblOtdel.OtdelKrat As [Краткое название], tblOtdel.Boss As [Руководитель], tblOtdel.Mol As[Материально ответсвенное лицо] FROM tblOtdel ';

DataModule1.ADOQueryVibr.Open;end;

procedure TFChan.EdSlugbaChange(Sender: TObject);

begin

if EdSlugba.Text='' then

EdSlugba.Text:='1'

else

EdStavkaAmort.Text:=FloatToStr(RoundTo(1/StrToFloat(EdSlugba.Text),-2));end;

procedure TFChan.EdStavkaAmortChange(Sender: TObject);

begin if (EdStavkaAmort.Text='0,') or (EdStavkaAmort.Text='0') then

begin EdStavkaAmort.Text:=EdStavkaAmort.Text;

EdSlugba.Text:='4';end

else

begin if (EdStavkaAmort.Text='') then

EdStavkaAmort.Text:='1'

else

EdSlugba.Text:=FloatToStr(Round( 1/StrToFloat(EdStavkaAmort.Text))); end;end;

procedure TFChan.CheckBox1Click(Sender: TObject);

begin if CheckBox1.Checked =true then

LabeledEdit1.Visible:=true

else LabeledEdit1.Visible:=false;end;

procedure TFChan.BtnSotrClick(Sender: TObject);

begin FVybirat.Show;

FVybirat.Caption:= 'Сотрудники';

DataModule1.ADOQueryVibr.Close;

DataModule1.ADOQueryVibr.SQL.Text:='SELECT tblShtat.Fio As [ФИО], tblShtat.TabNom As [Табельный номер], tblShtat.Title As [Должность], tblOtdel.Otdel As [Отдел], tblShtat.Telefon As [Телефон], tblShtat.Address As [Адресс], tblShtat.Email, tblShtat.NetName' +' As [Сетевое имя], tblShtat.Role As[Право доступа] FROM tblOtdel INNER JOIN tblShtat ON tblOtdel.ID = tblShtat.Otdel';

DataModule1.ADOQueryVibr.Open; end;

procedure TFChan.LabeledEdit1KeyPress(Sender: TObject; var Key: Char);

var

vrPos, vrLength, vrSelStart: byte;

const I: byte = 9; //i+1, два знака после запятой

begin with Sender as TLabeledEdit do

begin vrLength := Length(Text);

vrPos := Pos(decimalseparator, Text);

vrSelStart := SelStart; end;

case Key of

'0'..'9','-':

begin if (vrPos > 0) and (vrLength - vrPos > I) and (vrSelStart >= vrPos) then

Key := #0; end;

',', '.':

begin if (vrPos >0) or (vrSelStart = 0) or (vrLength = 0) then

Key := #0

else Key := decimalseparator;

end; #8: ;

else Key := #0; end;end;

procedure TFChan.LabeledEdit1Change(Sender: TObject);

begin EdNachStoim.Text:= FloatToStr (StrToFloat (EdNachStoim.Text) + StrToFloat (LabeledEdit1.Text)); end;

procedure TFChan.EdStavkaAmortKeyPress(Sender: TObject; var Key: Char);

var

vrPos, vrLength, vrSelStart: byte;

const I: byte = 9; //i+1, два знака после запятой

begin with Sender as TEdit do

begin vrLength := Length(Text);

vrPos := Pos(decimalseparator, Text);

vrSelStart := SelStart; end;

case Key of

'0'..'9','-':

begin if (vrPos > 0) and (vrLength - vrPos > I) and (vrSelStart >= vrPos) then

Key := #0; end;

',', '.':

begin if (vrPos >0) or (vrSelStart = 0) or (vrLength = 0) then

Key := #0

else

Key := decimalseparator; end;

#8: ;

else

Key := #0; end;end;

procedure TFChan.EdSlugbaKeyPress(Sender: TObject; var Key: Char);

var

vrPos, vrLength, vrSelStart: byte;

const I: byte = 9; //i+1, два знака после запятой

begin with Sender as TEdit do

begin vrLength := Length(Text);

vrPos := Pos(decimalseparator, Text);

vrSelStart := SelStart; end;

case Key of

'0'..'9','-':

begin if (vrPos > 0) and (vrLength - vrPos > I) and (vrSelStart >= vrPos) then

Key := #0; end;

',', '.':

begin

if (vrPos >0) or (vrSelStart = 0) or (vrLength = 0) then

Key := #0

else

Key := decimalseparator; end;

#8: ;

else

Key := #0; end;end;end.

unit Vibor;

interface

uses

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

Dialogs, ComCtrls, Grids, DBGrids, ToolWin, ExtCtrls, StdCtrls;

type

TFVibor = class(TForm)

PageControl1: TPageControl;

TabSheet1: TTabSheet; TabSheet2: TTabSheet; TabSheet3: TTabSheet;

DBGridUstr: TDBGrid; DBGridSotrud: TDBGrid; DBGridOtdel: TDBGrid;

ToolBar2: TToolBar; ToolButton4: TToolButton;

ToolButton5: TToolButton; ToolButton6: TToolButton;

PanFind: TPanel; ToolBar3: TToolBar;

ToolButton7: TToolButton; ToolButton8: TToolButton;

ToolButton9: TToolButton; Label1: TLabel;

LblNamPan: TLabel; Label3: TLabel;

Label4: TLabel; Label5: TLabel;

EdFIOpoln: TEdit; EdTabnom: TEdit;

EdDolgn: TEdit; EdTelfon: TEdit;

Label2: TLabel; Label6: TLabel;

EdAdres: TEdit;

EdOtdt: TEdit;

Button1: TButton;

LabOtd: TLabel;

ToolBar1: TToolBar;

ToolButton1: TToolButton;

ToolButton2: TToolButton;

ToolButton3: TToolButton;

EdFIOkrat: TEdit;

Label7: TLabel;

Edmail: TEdit;

Label8: TLabel;

Label9: TLabel;

EdSetImya: TEdit;

CBoxDostup: TComboBox;

Label10: TLabel;

Button2: TButton;

Button3: TButton;

PanAdRedOtd: TPanel;

LblNanPanOtd: TLabel;

EdNazOtd: TEdit;

Label11: TLabel;

Label12: TLabel;

EdiKrNazOt: TEdit;

Label13: TLabel;

EdBoss: TEdit;

Button4: TButton;

Button5: TButton;

Button6: TButton;

ToolButton10: TToolButton;

ToolButton11: TToolButton;

ToolButton12: TToolButton;

procedure PageControl1Change(Sender: TObject);

procedure ToolButton1Click(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure ToolButton3Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure ToolButton2Click(Sender: TObject);

procedure ToolButton4Click(Sender: TObject);

procedure Button6Click(Sender: TObject);

procedure Button4Click(Sender: TObject);

procedure ToolButton6Click(Sender: TObject);

procedure Button5Click(Sender: TObject);

procedure ToolButton5Click(Sender: TObject);

procedure ToolButton12Click(Sender: TObject);

procedure ToolButton11Click(Sender: TObject);

procedure ToolButton10Click(Sender: TObject);

procedure ToolButton7Click(Sender: TObject);

procedure EdTabnomKeyPress(Sender: TObject; var Key: Char);

procedure ToolButton9Click(Sender: TObject);

procedure ToolButton8Click(Sender: TObject);

private

public end;

var

FVibor: TFVibor;

implementation

uses DM1, Main, Unit1, Vybrat, DB,DateUtils ;

procedure TFVibor.PageControl1Change(Sender: TObject);

begin

if (PageControl1.ActivePageIndex=0) then

begin

DataModule1.ADOQueryTables.Close;

DataModule1.ADOQueryTables.SQL.Text:='SELECT tblOborUpr.ObjectType As[Тип], tblOtdel.OtdelKrat As[Отдел], tblShtat.FioKr As[Сотрудник],tblOborUpr.InventoryNumber As[Инвент номер],tblOborUpr.ObjectName As[Устройство],tblOborUpr.Price As[Цена],tblOborUpr.Amortiz As[Амортизация],'+'tblOborUpr.OstPrice As[Ост стоимость], tblOborUpr.DataVvod As[Дата ввода],tblOborUpr.PurchaseDate As[Дата выпуска], tblOborUpr.Notes As[Операция с объектом],tblOborUpr.DataOperaz As[Дата операции], tblOborUpr.DateSpisanie As [Дата списания] FROM (tblOborUpr ' +'INNER JOIN tblOtdel ON tblOborUpr.Department= tblOtdel.ID ) INNER JOIN tblShtat ON(tblShtat.ID = tblOborUpr.UserName)';

DataModule1.ADOQueryTables.Open;end

else if(PageControl1.ActivePageIndex=1) then

begin DataModule1.ADOQueryTables.Close;

DataModule1.ADOQueryTables.SQL.Text:='SELECT tblShtat.Fio As [ФИО], tblShtat.TabNom As [Табельный номер], tblShtat.Title As [Должность], tblOtdel.Otdel As [Отдел], tblShtat.Telefon As [Телефон], tblShtat.Address As [Адресс], tblShtat.Email, tblShtat.NetName' +' As [Сетевое имя],tblShtat.FioKr As[Фамилия инициалы], tblShtat.Role As[Право доступа] FROM tblOtdel INNER JOIN tblShtat ON tblOtdel.ID = tblShtat.Otdel';

DataModule1.ADOQueryTables.Open;end

else if (PageControl1.ActivePageIndex=2) then

begin DataModule1.ADOQueryTables.Close;

DataModule1.ADOQueryTables.SQL.Text:='SELECT tblOtdel.Otdel As[Название отдела], tblOtdel.OtdelKrat As [Краткое название], tblOtdel.Boss As [Руководитель], tblOtdel.Mol As[Материально ответсвенное лицо] FROM tblOtdel ';

DataModule1.ADOQueryTables.Open;end;end;

procedure TFVibor.ToolButton1Click(Sender: TObject);

begin

PanFind.Visible:=true;

LblNamPan.Caption:=' Добавить нового сотрудника';

EdFIOpoln.Text:='';EdTabnom.Text:='';EdDolgn.Text:='';

EdTelfon.Text:='';EdAdres.Text:='';EdOtdt.Text:='';

EdFIOkrat.Text:='';Edmail.Text:='';EdSetImya.Text:='';

CBoxDostup.Text:='';end;

procedure TFVibor.Button1Click(Sender: TObject);

begin FVybirat.Show;

FVybirat.Caption:= 'Отделы';

DataModule1.ADOQueryVibr.Close;

DataModule1.ADOQueryVibr .SQL.Text:='SELECT tblOtdel.Otdel As[Название отдела], tblOtdel.OtdelKrat As [Краткое название], tblOtdel.Boss As [Руководитель], tblOtdel.Mol As[Материально ответсвенное лицо] FROM tblOtdel ';

DataModule1.ADOQueryVibr.Open;end;

procedure TFVibor.ToolButton3Click(Sender: TObject);

begin PanFind.Visible:=true;

LblNamPan.Caption:=' Изменить данные о сотруднике';

DataModule1.ADOQueryPromeg.Close;

DataModule1.ADOQueryPromeg.SQL.Text:='Select ID from tblOtdel where Otdel ="'+DBGridSotrud.Fields[3].AsString+'"';

DataModule1.ADOQueryPromeg.Open;

LabOtd.Caption:=DataModule1.DataSourcePromeg.DataSet.Fields[0].AsString;EdFIOpoln.Text:=DBGridSotrud.Fields[0].AsString;EdTabnom.Text:=DBGridSotrud.Fields[1].AsString;EdDolgn.Text:=DBGridSotrud.Fields[2].AsString;EdTelfon.Text:=DBGridSotrud.Fields[4].AsString;EdAdres.Text:=DBGridSotrud.Fields[5].AsString;

EdOtdt.Text:=DBGridSotrud.Fields[3].AsString;

EdFIOkrat.Text:=DBGridSotrud.Fields[8].AsString;Edmail.Text:=DBGridSotrud.Fields[6].AsString;

EdSetImya.Text:=DBGridSotrud.Fields[7].AsString;CBoxDostup.Text:=DBGridSotrud.Fields[9].AsString;end;

procedure TFVibor.Button3Click(Sender: TObject);

begin PanFind.Visible:=false; end;

procedure TFVibor.Button2Click(Sender: TObject);

begin if (LblNamPan.Caption=' Добавить нового сотрудника') then

if (EdFIOpoln.Text='') or(EdTabnom.Text='')or (EdDolgn.Text='')or ( EdTelfon.Text='') or (EdAdres.Text='') or (EdOtdt.Text='') or (EdFIOkrat.Text='') or(Edmail.Text='') or (EdSetImya.Text='') or (CBoxDostup.Text='') thenShowMessage('Не все поля заполнены! Заполните все поля! ') else begin DataModule1.ADOQueryTables.Close;

DataModule1.ADOQueryTables.SQL.Text:='Insert INTO tblShtat (FioKr,TabNom, Title,Otdel,Telefon, Address,Fio,Email,NetName,Role)values("'+EdFIOkrat.Text+'",'+EdTabnom.Text+',"'+EdDolgn.Text+'",'+LabOtd.Caption+',"'+EdTelfon.Text+'","'+EdAdres.Text+'","'+EdFIOpoln.Text+'","'+Edmail.Text+'",'+'"'+EdSetImya.Text+'","'+CBoxDostup.Text+'")';

DataModule1.ADOQueryTables.ExecSQL;

DataModule1.ADOQueryTables.Close;

DataModule1.ADOQueryTables.SQL.Text:='SELECT tblShtat.Fio As [ФИО], tblShtat.TabNom As [Табельный номер], tblShtat.Title As [Должность], tblOtdel.Otdel As [Отдел], tblShtat.Telefon As [Телефон], tblShtat.Address As [Адресс], tblShtat.Email, tblShtat.NetName' +' As [Сетевое имя],tblShtat.FioKr As[Фамилия инициалы], tblShtat.Role As[Право доступа] FROM tblOtdel INNER JOIN tblShtat ON tblOtdel.ID = tblShtat.Otdel';

DataModule1.ADOQueryTables.Open;

PanFind.Visible:=false;end

else if(LblNamPan.Caption=' Изменить данные о сотруднике') then begin DataModule1.ADOQueryPromeg.Close;

DataModule1.ADOQueryPromeg.SQL.Text:='Select ID from tblShtat where Fio ="'+DBGridSotrud.Fields[0].AsString+'"';

DataModule1.ADOQueryPromeg.Open;

DataModule1.ADOQueryTables.Close; DataModule1.ADOQueryTables.SQL.Text:='Update tblShtat SET FioKr ="'+ EdFIOkrat.Text+ '", TabNom='+EdTabnom.Text+',Title="'+EdDolgn.Text+'",Otdel='+LabOtd.Caption+',Telefon="'+EdTelfon.Text+'",Address="'+EdAdres.Text+'",Fio="'+EdFIOpoln.Text+'",Email="'+Edmail.Text+'",'+'NetName="'+EdSetImya.Text+'",Role="'+CBoxDostup.Text+'" where ID='+ DataModule1.DataSourcePromeg.DataSet.Fields[0].AsString+'';

DataModule1.ADOQueryTables.ExecSQL;

DataModule1.ADOQueryTables.Close;DataModule1.ADOQueryTables.SQL.Text:='SELECT tblShtat.Fio As [ФИО], tblShtat.TabNom As [Табельный номер], tblShtat.Title As [Должность], tblOtdel.Otdel As [Отдел], tblShtat.Telefon As [Телефон], tblShtat.Address As [Адресс], tblShtat.Email, tblShtat.NetName' +' As [Сетевое имя],tblShtat.FioKr As[Фамилия инициалы], tblShtat.Role As[Право доступа] FROM tblOtdel INNER JOIN tblShtat ON tblOtdel.ID = tblShtat.Otdel';

DataModule1.ADOQueryTables.Open;DataModule1.ADOQuery1.Close; DataModule1.ADOQuery1.SQL.Text:='SELECT tblOborUpr.ObjectType As[Тип], tblOtdel.OtdelKrat As[Отдел], tblShtat.FioKr As[Сотрудник], tblOborUpr.InventoryNumber As[Инвент номер], tblOborUpr.ObjectName As[Устройство],tblOborUpr.Price As[Цена],tblOborUpr.Amortiz As[Амортизация],'+'tblOborUpr.OstPrice As[Ост стоимость], tblOborUpr.DataVvod As[Дата ввода],tblOborUpr.PurchaseDate As[Дата выпуска], tblOborUpr.Notes As[Операция с объектом],tblOborUpr.DataOperaz As[Дата операции], tblOborUpr.DateSpisanie As [Дата списания] FROM (tblOborUpr ' +'INNER JOIN tblOtdel ON tblOborUpr.Department= tblOtdel.ID ) INNER JOIN tblShtat ON(tblShtat.ID = tblOborUpr.UserName)';

DataModule1.ADOQuery1.Open;

PanFind.Visible:=false; end;end;

procedure TFVibor.ToolButton2Click(Sender: TObject);

begin DataModule1.ADOQueryPromeg.Close;

DataModule1.ADOQueryPromeg.SQL.Text:='Select ID from tblShtat where Fio ="'+DBGridSotrud.Fields[0].AsString+'"';

DataModule1.ADOQueryPromeg.Open;

DataModule1.ADOQuery1.Close;

DataModule1.ADOQuery1.SQL.Text:='Delete * from tblOborUpr where UserName='+DataModule1.DataSourcePromeg.DataSet.Fields[0].AsString+'';

DataModule1.ADOQuery1.ExecSQL;

DataModule1.ADOQuery1.Close;

DataModule1.ADOQuery1.SQL.Text:='SELECT tblOborUpr.ObjectType As[Тип], tblOtdel.OtdelKrat As[Отдел], tblShtat.FioKr As[Сотрудник],tblOborUpr.InventoryNumber As[Инвент номер],tblOborUpr.ObjectName As[Устройство],tblOborUpr.Price As[Цена],tblOborUpr.Amortiz As[Амортизация],' +'tblOborUpr.OstPrice As[Ост стоимость], tblOborUpr.DataVvod As[Дата ввода],tblOborUpr.PurchaseDate As[Дата выпуска], tblOborUpr.Notes As[Операция с объектом],tblOborUpr.DataOperaz As[Дата операции], tblOborUpr.DateSpisanie As [Дата списания] FROM (tblOborUpr ' +'INNER JOIN tblOtdel ON tblOborUpr.Department= tblOtdel.ID ) INNER JOIN tblShtat ON(tblShtat.ID = tblOborUpr.UserName)';

DataModule1.ADOQuery1.Open;

DataModule1.ADOQueryTables.Close;

DataModule1.ADOQueryTables.SQL.Text:='Delete * from tblShtat where ID ='+DataModule1.DataSourcePromeg.DataSet.Fields[0].AsString+'' ;

DataModule1.ADOQueryTables.ExecSQL;

DataModule1.ADOQueryTables.Close;

DataModule1.ADOQueryTables.SQL.Text:='SELECT tblShtat.Fio As [ФИО], tblShtat.TabNom As [Табельный номер], tblShtat.Title As [Должность], tblOtdel.Otdel As [Отдел], tblShtat.Telefon As [Телефон], tblShtat.Address As [Адресс], tblShtat.Email, tblShtat.NetName' +' As [Сетевое имя],tblShtat.FioKr As[Фамилия инициалы], tblShtat.Role As[Право доступа] FROM tblOtdel INNER JOIN tblShtat ON tblOtdel.ID = tblShtat.Otdel';

DataModule1.ADOQueryTables.Open; end;

procedure TFVibor.ToolButton4Click(Sender: TObject);

begin LblNanPanOtd.Caption:=' Добавить информацию о новом отделе';

PanAdRedOtd.Visible:=true; EdNazOtd.Text:=''; EdiKrNazOt.Text:='';

EdBoss.Text:='';end;

procedure TFVibor.Button6Click(Sender: TObject);

begin FVybirat.Show;

FVybirat.Caption:= 'Сотрудники';

DataModule1.ADOQueryVibr.Close;

DataModule1.ADOQueryVibr.SQL.Text:='SELECT tblShtat.Fio As [ФИО], tblShtat.TabNom As [Табельный номер], tblShtat.Title As [Должность], tblOtdel.Otdel As [Отдел], tblShtat.Telefon As [Телефон], tblShtat.Address As [Адресс], tblShtat.Email, tblShtat.NetName' +' As [Сетевое имя], tblShtat.Role As[Право доступа] FROM tblOtdel INNER JOIN tblShtat ON tblOtdel.ID = tblShtat.Otdel';

DataModule1.ADOQueryVibr.Open; end;

procedure TFVibor.Button4Click(Sender: TObject);

begin if(LblNanPanOtd.Caption=' Добавить информацию о новом отделе') then

if (EdNazOtd.Text='')or(EdiKrNazOt.Text ='')or(EdBoss.Text='') then

ShowMessage('Не все поля заполнены! Заполните все поля')

else begin

DataModule1.ADOQueryTables.Close;

DataModule1.ADOQueryTables.SQL.Text:='Insert INTO tblOtdel (Otdel,OtdelKrat,Boss,Mol)values("'+EdNazOtd.Text+'","'+EdiKrNazOt.Text+'","'+EdBoss.Text+'","'+EdBoss.Text+'")';

DataModule1.ADOQueryTables.ExecSQL;

DataModule1.ADOQueryTables.Close;

DataModule1.ADOQueryTables.SQL.Text:='SELECT tblOtdel.Otdel As[Название отдела], tblOtdel.OtdelKrat As [Краткое название], tblOtdel.Boss As [Руководитель], tblOtdel.Mol As[Материально ответсвенное лицо] FROM tblOtdel ';

DataModule1.ADOQueryTables.Open;

PanAdRedOtd.Visible:=false; end

else if(LblNanPanOtd.Caption=' Изменить информацию об отделе')then

begin DataModule1.ADOQueryPromeg.Close;

DataModule1.ADOQueryPromeg.SQL.Text:='Select ID from tblOtdel where Otdel ="'+DBGridOtdel.Fields[0].AsString+'"';

DataModule1.ADOQueryPromeg.Open;

DataModule1.ADOQueryTables.Close;

DataModule1.ADOQueryTables.SQL.Text:='Update tblOtdel SET Otdel= "'+ EdNazOtd.Text+ '",OtdelKrat="'+EdiKrNazOt.Text+'",Boss="'+EdBoss.Text+'",Mol="'+EdBoss.Text+'" where ID ='+ DataModule1.DataSourcePromeg.DataSet.Fields[0].AsString;

DataModule1.ADOQueryTables.ExecSQL;DataModule1.ADOQueryTables.Close;DataModule1.ADOQueryTables.SQL.Text:='SELECT tblOtdel.Otdel As[Название отдела], tblOtdel.OtdelKrat As [Краткое название], tblOtdel.Boss As [Руководитель], tblOtdel.Mol As[Материально ответсвенное лицо] FROM tblOtdel ';

DataModule1.ADOQueryTables.Open;

PanAdRedOtd.Visible:=false; end;end;

procedure TFVibor.ToolButton6Click(Sender: TObject);

begin LblNanPanOtd.Caption:=' Изменить информацию об отделе';

PanAdRedOtd.Visible:=true; EdNazOtd.Text:=DBGridOtdel.Fields[0].AsString;

EdiKrNazOt.Text:=DBGridOtdel.Fields[1].AsString;

EdBoss.Text:=DBGridOtdel.Fields[2].AsString; end;

procedure TFVibor.Button5Click(Sender: TObject);

begin PanAdRedOtd.Visible:=false; end;

procedure TFVibor.ToolButton5Click(Sender: TObject);

begin DataModule1.ADOQueryPromeg.Close;

DataModule1.ADOQueryPromeg.SQL.Text:='Select ID from tblOtdel where Otdel ="'+DBGridOtdel.Fields[0].AsString+'"';

DataModule1.ADOQueryPromeg.Open;

DataModule1.ADOQueryVibr.Close;

DataModule1.ADOQueryVibr.SQL.Text:='Select ID from tblShtat where Otdel ='+DataModule1.DataSourcePromeg.DataSet.Fields[0].AsString;

DataModule1.ADOQueryVibr.Open;

DataModule1.ADOQuery1.Close;

DataModule1.ADOQuery1.SQL.Text:='Delete * from tblOborUpr where UserName ='+DataModule1.DataSourceVibr.DataSet.Fields[0].AsString+'';

DataModule1.ADOQuery1.ExecSQL;

DataModule1.ADOQuery1.Close;

DataModule1.ADOQuery1.SQL.Text:='Delete * from tblOborUpr where Department='+DataModule1.DataSourcePromeg.DataSet.Fields[0].AsString+'';

DataModule1.ADOQuery1.ExecSQL;

DataModule1.ADOQueryTables.Close;

DataModule1.ADOQueryTables.SQL.Text:='Delete * From tblShtat where Otdel ='+DataModule1.DataSourcePromeg.DataSet.Fields[0].AsString;

DataModule1.ADOQueryTables.ExecSQL;

DataModule1.ADOQuery1.Close;

DataModule1.ADOQuery1.SQL.Text:='SELECT tblOborUpr.ObjectType As[Тип], tblOtdel.OtdelKrat As[Отдел], tblShtat.FioKr As[Сотрудник],tblOborUpr.InventoryNumber As[Инвент номер],tblOborUpr.ObjectName As[Устройство],tblOborUpr.Price As[Цена],tblOborUpr.Amortiz As[Амортизация],' +'tblOborUpr.OstPrice As[Ост стоимость], tblOborUpr.DataVvod As[Дата ввода],tblOborUpr.PurchaseDate As[Дата выпуска], tblOborUpr.Notes As[Операция с объектом],tblOborUpr.DataOperaz As[Дата операции] ,tblOborUpr.DateSpisanie As [Дата списания] FROM (tblOborUpr ' +'INNER JOIN tblOtdel ON tblOborUpr.Department= tblOtdel.ID ) INNER JOIN tblShtat ON(tblShtat.ID = tblOborUpr.UserName)';

DataModule1.ADOQuery1.Open;

DataModule1.ADOQueryTables.Close;

DataModule1.ADOQueryTables.SQL.Text:='Delete * From tblOtdel where ID ='+ DataModule1.DataSourcePromeg.DataSet.Fields[0].AsString;

DataModule1.ADOQueryTables.ExecSQL;

DataModule1.ADOQueryTables.Close;

DataModule1.ADOQueryTables.SQL.Text:='SELECT tblOtdel.Otdel As[Название отдела], tblOtdel.OtdelKrat As [Краткое название], tblOtdel.Boss As [Руководитель], tblOtdel.Mol As[Материально ответсвенное лицо] FROM tblOtdel ';

DataModule1.ADOQueryTables.Open; end;

procedure TFVibor.ToolButton12Click(Sender: TObject);

begin close; end;

procedure TFVibor.ToolButton11Click(Sender: TObject); begin close; end;

procedure TFVibor.ToolButton10Click(Sender: TObject);

begin close; end;

procedure TFVibor.ToolButton7Click(Sender: TObject);

begin Chan.Show;FChan.Caption:='Добавление'; FChan.ComboBox1.Text:='';FChan.EdOtdel.Text:=''; FChan.EdSotrud.Text:='';FChan.EdInvNom.Text:=''; FChan.EdUstroystvo.Text:='';FChan.EdNachStoim.Text:=''; FChan.DateTimePicker1.Date:=Date + ApproxDaysPerMonth- ApproxDaysPerYear;

FChan.DateTimePicker2.Date:=Date - ApproxDaysPerYear;

FChan.CheckBox1.Visible:=False; FChan.LabeledEdit1.Visible:=false; end;

procedure TFVibor.EdTabnomKeyPress(Sender: TObject; var Key: Char);

var

vrPos, vrLength, vrSelStart: byte;

const I: byte = 9; //i+1, два знака после запятой

begin with Sender as TEdit do

begin vrLength := Length(Text);

vrPos := Pos(decimalseparator, Text);

vrSelStart := SelStart; end;

case Key of '0'..'9','-':

Begin if (vrPos > 0) and (vrLength - vrPos > I) and (vrSelStart >= vrPos) then

Key := #0; end;

',', '.': Begin if (vrPos >0) or (vrSelStart = 0) or (vrLength = 0) then

Key := #0

else Key := decimalseparator; end;

#8: ;

else Key := #0; end;end;

procedure TFVibor.ToolButton9Click(Sender: TObject);

begin FChan.Show;

FChan.Caption:='Изменение';

FChan.ComboBox1.Text:=DBGridUstr.Fields[0].AsString;

FChan.EdOtdel.Text:=DBGridUstr.Fields[1].AsString;

FChan.EdSotrud.Text:=DBGridUstr.Fields[2].AsString;

FChan.EdInvNom.Text:=DBGridUstr.Fields[3].AsString;

FChan.EdUstroystvo.Text:=DBGridUstr.Fields[4].AsString;

FChan.EdNachStoim.Text:=DBGridUstr.Fields[5].AsString;

FChan.DateTimePicker1.Date:=StrToDate( DBGridUstr.Fields[8].AsString);

FChan.DateTimePicker2.Date:=StrToDate(DBGridUstr.Fields[9].AsString);

FChan.CheckBox1.Visible:=True; FChan.CheckBox1.Checked:=false;

DataModule1.ADOQueryPromeg.Close;

DataModule1.ADOQueryPromeg.SQL.Text:='Select ID from tblOtdel where OtdelKrat ="'+DBGridUstr.Fields[1].AsString+'"';

DataModule1.ADOQueryPromeg.Open;

FChan.LblOtdel.Caption:=DataModule1.DataSourcePromeg.DataSet.Fields[0].AsString;

DataModule1.ADOQueryPromeg.Close;

DataModule1.ADOQueryPromeg.SQL.Text:='Select ID from tblShtat where FioKr ="'+DBGridUstr.Fields[2].AsString+'"';

DataModule1.ADOQueryPromeg.Open;

FChan.LblSotr.Caption:=DataModule1.DataSourcePromeg.DataSet.Fields[0].AsString; end;

procedure TFVibor.ToolButton8Click(Sender: TObject);

begin DataModule1.ADOQueryPromeg.Close;

DataModule1.ADOQueryPromeg.SQL.Text:='Select ID from tblOborUpr where InventoryNumber ="'+DBGridUstr.Fields[3].AsString+'"';

DataModule1.ADOQueryPromeg.Open;

DataModule1.ADOQuery1.Close;

DataModule1.ADOQuery1.SQL.Text:='Delete * from tblOborUpr where ID='+ DataModule1.DataSourcePromeg.DataSet.Fields[0].AsString+'';

DataModule1.ADOQuery1.ExecSQL;

DataModule1.ADOQuery1.Close;

DataModule1.ADOQuery1.SQL.Text:='SELECT tblOborUpr.ObjectType As[Тип], tblOtdel.OtdelKrat As[Отдел], tblShtat.FioKr As[Сотрудник],tblOborUpr.InventoryNumber As[Инвент номер],tblOborUpr.ObjectName As[Устройство],tblOborUpr.Price As[Цена],tblOborUpr.Amortiz As[Амортизация],' +'tblOborUpr.OstPrice As[Ост стоимость], tblOborUpr.DataVvod As[Дата ввода],tblOborUpr.PurchaseDate As[Дата выпуска], tblOborUpr.Notes As[Операция с объектом],tblOborUpr.DataOperaz As[Дата операции], tblOborUpr.DateSpisanie As [Дата списания] FROM (tblOborUpr ' +'INNER JOIN tblOtdel ON tblOborUpr.Department= tblOtdel.ID ) INNER JOIN tblShtat ON(tblShtat.ID = tblOborUpr.UserName)';

DataModule1.ADOQuery1.Open;

DataModule1.ADOQueryTables.Close;

DataModule1.ADOQueryTables.SQL.Text:='SELECT tblOborUpr.ObjectType As[Тип], tblOtdel.OtdelKrat As[Отдел], tblShtat.FioKr As[Сотрудник],tblOborUpr.InventoryNumber As[Инвент номер],tblOborUpr.ObjectName As[Устройство],tblOborUpr.Price As[Цена],tblOborUpr.Amortiz As[Амортизация],' +'tblOborUpr.OstPrice As[Ост стоимость], tblOborUpr.DataVvod As[Дата ввода],tblOborUpr.PurchaseDate As[Дата выпуска], tblOborUpr.Notes As[Операция с объектом],tblOborUpr.DataOperaz As[Дата операции], tblOborUpr.DateSpisanie As [Дата списания] FROM (tblOborUpr ' +'INNER JOIN tblOtdel ON tblOborUpr.Department= tblOtdel.ID ) INNER JOIN tblShtat ON(tblShtat.ID = tblOborUpr.UserName)';

DataModule1.ADOQueryTables.Open;end;end.

unit Vybrat;

interface

uses

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

Dialogs, StdCtrls, ExtCtrls, Grids, DBGrids;

type

TFVybirat = class(TForm)

DBGrid1: TDBGrid;

Panel1: TPanel; Button1: TButton;

procedure Button1Click(Sender: TObject);

private public end;

var

FVybirat: TFVybirat;

implementation

uses DM1, Amortiz, Main, Unit1, Vibor, DB;

procedure TFVybirat.Button1Click(Sender: TObject);

begin if (FVybirat.Caption='Отдел') then

begin DataModule1.ADOQueryPromeg.Close;

DataModule1.ADOQueryPromeg.SQL.Text:='Select ID from tblOtdel where Otdel ="'+ DBGrid1.Fields[0].AsString+'"';DataModule1.ADOQueryPromeg.Open; FChan.LblOtdel.Caption:=DataModule1.DataSourcePromeg.DataSet.Fields[0].AsString; FChan.EdOtdel.Text:=DBGrid1.Fields[0].AsString; close; end

else if (FVybirat.Caption='Сотрудники') then

begin DataModule1.ADOQueryPromeg.Close;

DataModule1.ADOQueryPromeg.SQL.Text:='Select ID from tblShtat where Fio ="'+ DBGrid1.Fields[0].AsString+'"';

DataModule1.ADOQueryPromeg.Open;

FChan.LblSotr.Caption:=DataModule1.DataSourcePromeg.DataSet.Fields[0].AsString;

FChan.EdSotrud.Text:=DBGrid1.Fields[0].AsString;

FVibor.EdBoss.Text:=DBGrid1.Fields[0].AsString; close; end

else if (FVybirat.Caption='Отделы') then

begin DataModule1.ADOQueryPromeg.Close;

DataModule1.ADOQueryPromeg.SQL.Text:='Select ID from tblOtdel where Otdel ="'+DBGrid1.Fields[0].AsString+'"';

DataModule1.ADOQueryPromeg.Open;

FVibor.LabOtd.Caption:=DataModule1.DataSourcePromeg.DataSet.Fields[0].AsString;

FVibor.EdOtdt.Text:=DBGrid1.Fields[0].AsString; close; end ; end; end.

unit Amortiz;

interface

uses

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

Dialogs, StdCtrls, ComCtrls;

type

TFAmortizatsia = class(TForm)

DateTimePicker1: TDateTimePicker; Label1: TLabel;

Button1: TButton; CheckBox1: TCheckBox;

procedure Button1Click(Sender: TObject);

private

public end;

var

FAmortizatsia: TFAmortizatsia;

implementation

uses DM1, Main, Unit1, Vibor,DateUtils;

procedure TFAmortizatsia.Button1Click(Sender: TObject);

begin DataModule1.ADOQueryAmort.Close;

DataModule1.ADOQueryAmort.SQL.Text:='UPDATE tblOborUpr SET tblOborUpr.Amortiz = Round((datevalue ("'+DateToStr(DateTimePicker1.Date)+'")-tblOborUpr!DataVvod) *

((tblOborUpr!StavkaAmort/365) *tblOborUpr!Price),2)';

DataModule1.ADOQueryAmort.ExecSQL;

DataModule1.ADOQueryAmort.Close;

DataModule1.ADOQueryAmort.SQL.Text:='UPDATE tblOborUpr SET tblOborUpr.DataOperaz = datevalue ("'+DateToStr(DateTimePicker1.Date)+'")';

DataModule1.ADOQueryAmort.ExecSQL;

DataModule1.ADOQuery1.Close;

DataModule1.ADOQueryAmort.Close;

DataModule1.ADOQueryAmort.SQL.Text:='UPDATE tblOborUpr SET tblOborUpr.OstPrice = tblOborUpr!Price-tblOborUpr!Amortiz';

DataModule1.ADOQueryAmort.ExecSQL;

DataModule1.ADOQuery1.Close;

DataModule1.ADOQuery1.SQL.Text:='SELECT tblOborUpr.ObjectType As[Тип], tblOtdel.OtdelKrat As[Отдел], tblShtat.FioKr As[Сотрудник],tblOborUpr.InventoryNumber As[Инвент номер],tblOborUpr.ObjectName As[Устройство],tblOborUpr.Price As[Цена],tblOborUpr.Amortiz As[Амортизация],'+'tblOborUpr.OstPrice As[Ост стоимость], tblOborUpr.DataVvod As[Дата ввода],tblOborUpr.PurchaseDate As[Дата выпуска], tblOborUpr.Notes As[Операция с объектом],tblOborUpr.DataOperaz As[Дата операции], tblOborUpr.DateSpisanie As [Дата списания] FROM (tblOborUpr ' +'INNER JOIN tblOtdel ON tblOborUpr.Department= tblOtdel.ID ) INNER JOIN tblShtat ON(tblShtat.ID = tblOborUpr.UserName)';

DataModule1.ADOQuery1.Open;

if (CheckBox1.Checked=true) then

begin DataModule1.ADOQueryAmort.Close;

DataModule1.ADOQueryAmort.SQL.Text:='UPDATE tblOborUpr SET tblOborUpr.DateSpisanie = tblOborUpr!DataVvod + tblOborUpr!SrokSlugbi* 365';

DataModule1.ADOQueryAmort.ExecSQL;

DataModule1.ADOQuery1.SQL.Text:='SELECT tblOborUpr.ObjectType As[Тип], tblOtdel.OtdelKrat As[Отдел], tblShtat.FioKr As[Сотрудник],tblOborUpr.InventoryNumber As[Инвент номер],tblOborUpr.ObjectName As[Устройство],tblOborUpr.Price As[Цена], tblOborUpr.Amortiz As[Амортизация],' +'tblOborUpr.OstPrice As[Ост стоимость], tblOborUpr.DataVvod As[Дата ввода],tblOborUpr.PurchaseDate As[Дата выпуска] ,tblOborUpr.Notes As[Операция с объектом],tblOborUpr.DataOperaz As[Дата операции], tblOborUpr.DateSpisanie As [Дата списания] FROM (tblOborUpr '+'INNER JOIN tblOtdel ON tblOborUpr.Department= tblOtdel.ID ) INNER JOIN tblShtat ON(tblShtat.ID = tblOborUpr.UserName)';

DataModule1.ADOQuery1.Open;end;close;end;end.

Додаток Б

(обов’язковий)

Приклади звітів