- •1 Опис предметної області
- •1.1 Основні поняття
- •1.2 Основний алгоритм
- •2 Постанова завдання
- •2.1 Мета створення програми
- •2.2 Функції програми
- •Вимоги до проектованої системи
- •Вимоги до надійності
- •Умови роботи програми
- •3 Програмування
- •3.1 Обґрунтування вибору середовища розробки системи Для розробки програмного продукту було обрано середовище розробки Borland Delphi.
- •3.2 Обґрунтування вибору середовища функціонування системи
- •3.3 Основні рішення щодо реалізації компонентів системи
- •3.3.2 Структурна схема програми
- •3.3.3 Розробка модулів системи
- •4 Методика роботи користувача з системою
- •4.1 Керівництво програміста
- •4.1.1 Призначення і умови використання програми
- •4.1.2 Характеристики програми
- •4.1.3 Звертання до програми
- •4.2 Керівництво оператора
- •4.2.1 Призначення і умови використання програми
- •4.2.2 Виконання програми
- •4.2.3 Повідомлення оператору
- •5 Організаційно – економічний розділ
- •5.1 Планування розробки програмного продукту
- •5.2 Визначення витрат на розробку програмного продукту
- •5.2.1 Розрахунок основної заробітної плати
- •5.2.2 Розрахунок додаткової заробітної плати
- •5.2.3 Визначення витрат на матеріали
- •5.2.4 Визначення витрат на спеціальне устаткування
- •5.2.5 Визначення накладних витрат
- •6 Охорона праці та безпека життєдіяльності
- •6.1 Правові аспекти охорони праці користувачів комп’ютерів
- •6.2 Організація робочого простору для роботи з комп’ютером
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 особливо небезпечних хімічних речовин, які можуть потрапити в навколишнє середовище внаслідок аварії, встановлено три рівні впливу:
Виникає дискомфорт у постраждалих.
З'являється втрата працездатності.
Виникає загроза життю.
Сильнодіючими отруйними речовинами називаються хімічні сполуки, які в певних кількостях, що перевищують ГДК, негативно впливають на людей, сільськогосподарських тварин, рослини та викликають у них ураження різного ступеня.
Сильнодіючі отруйні речовини можуть бути елементами технологічного процесу (аміак, хлор, сірчана й азотна кислоти, фтористий водень та інші) і можуть утворюватись при пожежах на об'єктах народного господарства (чадний газ, оксиди азоту та сірки, хлористий водень).
На території України знаходиться 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 грн.
Розроблене програмне забезпечення відповідає вимогам техніки безпеки і охорони праці.
Список літератури
С. Ф. Покропивного. Економіка підприємства — Вид. 2-ге, перероб. та доп. — К.: КНЕУ, 2000— 528 с.
Гофман В. Э., Хомоненко А. Д. Delphi. Быстрый старт. — СПб: БХВ-Петербург, 2003, 288 с.
В. В. Шупрута. Delphi 2005. Учимся программировать – М.: НТ Пресс, 2005, 352 стр.
Сухарев М. Основы Delphi. Профессиональный подход – СПб.: Наука и Техника, 2004, 603с.
Никита Культін. Основы программирования в Delphi7 – БХВ-Петербург, 2003,608с.
І. Ю. Баженова. Delphi 7. Самоучитель программиста – К.: КУДИЦ-Образ, 2003, 448с.
Віктор Пестриков, Артур Маслобоєв. Delphi на примерах – СПб.: БХВ-Петербург, 2005, 1156с.
Стивенс Р. Delphi. Готовые алгоритмы – СПб.: Питер, 2004, 381с.
Дворжецкий А.В. SQL: Structured Query Language (структурированный язык запросов). - М.: Познавательная книга плюс, 2001. – 416с. – (Карманный атрибут компьютерщика).
Таненбаум Э. Современные операционные системы. 2-е изд. — СПб: Питер, 2002. — 1040 с: ил.
Гэри Хансен, Джэймс Хансен. Базы данных: разработка и управление: Пер. с англ. – М.: ЗАО «Издательство БИНОМ», 1999 – 704с.: ил.
Фролова Т.А. Экономика предприятия — Т.: ТРТУ, 2005., 374с.
Желібо Є.П., Заверуха Н.М., Зацарний В.В. Безпека життєдіяльності: Навч. посіб. — 4-е вид. - К.: Каравела, 2005 г., 344 с.
ДСТУ 3008-95. Документація. Звіти в сфері науки та техніки. Структура і правила оформлення.
ГОСТ 2.105-95. ЕСКД. Общие требования и правила составления.
СТП 07-2000. Стандарт підприємства. Нормоконтроль. Організація і порядок проведення.
СТП 06-96. Стандарт підприємства. Пояснювальні записки. Структура і правила оформлення.
СТП 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.
Додаток Б
(обов’язковий)
Приклади звітів