Разработка базы данных "Аптека" для ГУЗ НО "Медицинский информационно-аналитический центр"
Создание базы данных для учета лекарственных средств и изделий медицинского назначения в аптеках стационаров. Требования к программному продукту. Способ организации данных. Начало работы с приложением. Экономическая эффективность внедрения разработки.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 10.10.2015 |
Размер файла | 2,6 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
В целях предупреждения случаев производственного травматизма работающий должен быть внимательным в работе, соблюдать требования данной инструкции, производственную дисциплину и меры личной гигиены.
К самостоятельной работе на ПЭВМ допускаются работники, не имеющие медицинских противопоказаний, прошедшие вводный инструктаж по безопасности труда и пожарной безопасности, первичный инструктаж на рабочем месте, проверку теоретических знаний и приобретенных навыков безопасных способов и приемов работы, проверку знаний на первую квалификационную группу по электробезопасности. Допуск к самостоятельной работе производит начальник отдела с записью в контрольном листке инструктажа. Повторный инструктаж проводится не реже одного раза в 3 месяца. Профессиональные пользователи ПЭВМ проходят обязательные предварительные (при поступлении на работу) и периодические (1 раз в 2 года) медицинские осмотры.
Розетки и вилки для подключения устройств должны быть трехклеммными.
При получении травмы пострадавший или свидетель должен поставить в известность непосредственного руководителя обратиться в медицинское учреждение.
Контроль за соблюдением работающими требований инструкции возлагается на руководителя отдела (группы).
4.7 Электробезопасность
Электрооборудование питается от трехфазной сети с глухозаземленной нейтралью, напряжением питания 220 В, переменным током 50 Гц.
В рассматриваемом помещении находится следующее электрооборудование (классификация согласно ГОСТ 12.2.007.0-75 ССБТ "Изделия электротехнические. Общие требования безопасности"):
электротехнические изделия с классом защиты I: 4 ПЭВМ с видео дисплеями, принтер, ПРТО;
элеткротехнические изделия с классом защиты 0: осветительные приборы.
В помещении нет признаков повышенной опасности. Отсутствует возможность одновременного прикосновения к металлическим корпусам электрооборудования (ПЭВМ, сетевая аппаратура) и заземленным металлоконструкциям зданий, на пример к батарее центрального отопления. Таким образом, согласно ПУЭ, по степени опасности поражения электрическим током данное помещение относится к классу помещений без повышенной опасности.
Поражение человека электрическим током в данном помещении может произойти по следующим причинам:
прикосновение к сетевому шнуру с поврежденной изоляцией;
прикосновение к корпусу электроприбора, оказавшегося под напряжением вследствие повреждения изоляции;
неисправность проводки, выключателей, розеток.
Электробезопасность, в соответствии с ГОСТ 12.1.019-79 ССБТ "Электробезопасность. Общие требования", должна обеспечиваться:
конструкцией электроустановок;
техническими способами и средствами защиты;
организационными и техническими мероприятиями.
Технические способы и средства защиты, обеспечивающие электробезопасность должны устанавливаться с учетом:
номинального напряжения, рода и частоты тока электроустановки (220В, частота переменного тока 50Гц);
способа электроснабжения (от стационарной сети);
режима нейтрали (глухозаземленная нейтраль);
вида исполнения (стационарные);
условий внешней среды (помещения без повышенной опасности);
характера возможного прикосновения человека к элементам цепи тока (однофазное прикосновение, прикосновение к металлическим нетоковедущим частям, оказавшимся под напряжением);
видов работ (эксплуатация).
Для обеспечения защиты от случайного прикосновения к токоведущим частям применяются следующие способы и средства:
безопасное расположение токоведущих частей (внутри корпуса);
изоляция токоведущих частей, сопротивление изоляции питающего шнура должно быть не менее 0,5 МОм;
защитное отключение (защита от перегрузок и коротких замыканий);
малые напряжения (клавиатура, мышь);
предупредительная сигнализации (зеленая лампа на системном блоке).
Для обеспечения защиты от поражения электрическим током при прикосновении к металлическим нетоковедущим частям, которые могут оказаться под напряжением в результате повреждения изоляции, применяют следующие способы:
защитное зануление;
защитное отключение.
К работе в электроустановках должны допускаться лица, прошедшие инструктаж и обучение безопасным методам труда, проверку знаний правил безопасности и инструкций в соответствии с занимаемой должностью применительно к выполняемой работе с присвоением соответствующей квалификационной группы по технике безопасности и не имеющие медицинских противопоказаний.
4.8 Пожарная безопасность
В помещении, в котором выполнялся данный проект, находились следующие горючие материалы:
бумага;
мебель;
полиматериалы (пластмассовые корпуса ПЭВМ).
Наиболее вероятные причины возникновения пожара в рассматриваемом помещении:
короткое замыкание;
нарушение правил пожарной безопасности;
нарушение изоляции токонесущих частей;
износ оборудования или нарушение правил эксплуатации, что может вызывать перегрев оборудования и его воспламенение.
Согласно НПБ 105-03 "Определение категорий помещений и зданий по взрывопожарной и пожарной опасности", данное помещение относится к категории "В".
Определение пожароопасной категории помещения осуществляется путем сравнения максимального значения удельной временной пожарной нагрузки. Ниже приведены расчеты по определению категории рассматриваемого помещения. Категории помещений в зависимости от удельной пожарной нагрузки берутся из таблицы 4.9.
Таблица 4.9 - Категории помещений в зависимости от удельной пожарной нагрузки
Категория помещения |
Удельная пожарная нагрузка g на участке, МДж/м-2 |
|
В1 |
Более 2200 |
|
В2 |
1401 - 2200 |
|
В3 |
181 - 1400 |
|
В4 |
1 - 180 |
(4.1)
где - количество i-го материала пожарной нагрузки, кг;
- низшая теплота сгорания i-го материала пожарной нагрузки, МДж/кг.
Удельная пожарная нагрузка , МДж /, определяется из соотношения:
(4.2)
где - площадь размещения пожарной нагрузки, (но не менее 10 ).
Таким образом .
Получается, что помещение относится к категории B3 по количеству и пожароопасным свойствам, находящихся в помещении веществ и материалов. Возможный пожар следует отнести к классу А (пожары твердых веществ, в основном органического происхождения, горение которых сопровождается тлением), В (горючие жидкости и плавящиеся при нагревании материалы) и Е (оборудование под напряжением).
Пожарная безопасность обеспечивается согласно ГОСТ 12.1.004-91 ССБТ "Пожарная безопасность":
предотвращение пожара должно достигаться предотвращением образования горючей среды и (или) предотвращением образования в горючей среде (или внесения в нее) источников зажигания;
предотвращение образования горючей среды должно обеспечиваться максимально возможным применением негорючих и трудногорючих веществ и материалов;
предотвращение образования в горючей среде источников зажигания должно достигаться применением одного из следующих способов или их комбинацией:
применением технологического процесса и оборудования, удовлетворяющего требованиям электростатической искробезопасности по ГОСТ 12.1.018;
устройством молниезащиты зданий, сооружений и оборудования.
ограничение массы и (или) объема горючих веществ и материалов, а также наиболее безопасный способ их размещения должны достигаться применением периодической очистки территории, на которой располагается объект, помещений, коммуникаций, аппаратуры от горючих отходов, отложений пыли, пуха и т.п.
Противопожарная защита должна достигаться применением одного из следующих способов или их комбинацией.
Применением средств пожаротушения.
При защите от пожара помещений, оборудованных ПЭВМ, рекомендуется применять хладоновые и углекислотные огнетушители с учетом предельно допустимой концентрации огнетушащего вещества. Для защиты рассматриваемого помещения используются огнетушители ОУ-5. На этаже, где расположено рассматриваемое помещение имеется два ручных углекислотных огнетушителя типа ОУ-5. Расстояние от возможного очага пожара до места размещения огнетушителя не должно превышать 30 м (так как помещение категории В).
Применением автоматических установок пожарной сигнализации и пожаротушения.
В соответствии с НПБ 110-03 "Перечень зданий, сооружений, помещений и оборудования, подлежащих защите автоматическими установками пожаротушения и автоматической пожарной сигнализацией" в таблице 4.10 указаны категория рассматриваемого помещения и необходимые автоматические системы.
Таблица 4.10 - Перечень помещений, подлежащих защите АУПТ и АУПС
Объект защиты |
АУПТ |
АУПС |
|
Помещения связи |
|||
Помещение для размещения персональных ЭВМ на рабочих столах пользователей |
Независимо от площади |
Применением основных строительных конструкций и материалов, с нормированными показателями пожарной опасности.
В таблице 4.11 указаны различные параметры для производственных зданий согласно СНиП 31-03-2001. Рассматриваемое здание относится к III степени огнестойкости.
Таблица 4.11 Производственные здания
Категория зданий или пожарных отсеков |
Высота здания*, м |
Степень огнестойкости зданий |
Класс конструктивной пожарной опасности зданий |
Площадь этажа, м2, в пределах пожарного отсека зданий |
|||
одноэтажных |
в два этажа |
в три этажа и более |
|||||
В |
48 |
III |
С0 |
25000 |
10400 |
5200 |
В таблице 4.12 указаны пределы огнестойкости строительных конструкций для рассматриваемого здания, согласно СНиП 21-01-97 "Пожарная безопасность зданий и сооружений".
Таблица 4.12 Предел огнестойкости строительных конструкций.
Степень огнестой-кости здания |
Предел огнестойкости строительных конструкций, не менее |
|||||||
Несущие элементы здания |
Наружные ненесу-щие стены |
Перекрытия междуэтажные, (в т. ч. чердачные и над подвалами) |
Элементы бесчердачных покрытий |
Лестничные клетки |
||||
Настилы (в том числе с утепли-телем) |
Фермы, балки, прого-ны |
Внутренние стены |
Мерши и площадки лестниц |
|||||
III |
R 15 |
RЕ 15 |
RЕI 15 |
RЕ 15 |
RЕ 15 |
RЕI 45 |
R З0 |
Предел огнестойкости строительных конструкций устанавливается по времени (в минутах) наступления одного или последовательно нескольких, нормируемых для данной конструкции, признаков предельных состояний:
потери несущей способности (R);
потери целостности (Е);
потери теплоизолирующей способности (I).
В таблице 4.13 указаны конструктивные характеристики здания с III степенью огнестойкостью.
Таблица 4.13 Конструктивные характеристики зданий в зависимости от их степени огнестойкости.
Степень огнестойкости |
Конструктивные характеристики |
|
III |
Здания с несущими и ограждающими конструкциями из естественных или искусственных каменных материалов, бетона или железобетона. Для перекрытий допускается использование деревянных конструкций, защищенных штукатуркой или трудногорючими листовыми, а также плитными материалами. К элементам покрытий не предъявляются требования по пределам огнестойкости и пределам распространения огня, при этом элементы чердачного покрытия из древесины подвергаются огнезащитной обработке |
Организацией с помощью технических средств, включая автоматические, своевременного оповещения и эвакуации людей.
Здание, где расположено рассматриваемое помещение, является лечебным учреждением (амбулаторно-поликлиническим), поэтому тип СОУЭ определяется, исходя из значения нормативного показателя, а именно посещений в смену. В соответствии с НПБ 104-03 "Проектирование систем оповещения людей о пожаре в зданиях и сооружениях" в этом здании установлена СОУЭ типа 3. Обоснование в таблице 4.14.
Таблица 4.14 Тип СОУЭ для зданий
Группа зданий, комплексов и сооружений (наименование нормативного показателя) |
Значение нормативного показателя |
Тип СОУЭ |
|
Лечебные учреждения: амбулаторно-поликлинические учреждения (посещения в смену, чел.) |
90 и более |
3 |
СОУЭ типа 3 обладает следующими характеристиками:
Способы оповещения.
Звуковой (сирена, тонированный сигнал и др.).
Речевой (передача специальных текстов).
Световой:
световые мигающие указатели;
световые оповещатели "Выход";
статические указатели направления движения.
Разделение здания на зоны пожарного оповещения
Обратная связь зон оповещения с помещением пожарного поста диспетчерской.
Для обеспечения эвакуации предусмотрено:
2 эвакуационных выхода (на каждом этаже здания) шириной 1,2 м, и соответствующее конструктивное исполнение эвакуационных путей;
возможность беспрепятственного движения людей по эвакуационным путям.
В таблице 4.15 представлены нормы на ширину эвакуационного выхода.
Таблица 4.15 Ширина эвакуационного выхода.
Категория наиболее пожароопасного помещения, выходящего в коридор |
Степень огнестойкости здания |
Класс конструктивной пожарной опасности здания |
Количество людей на 1 м ширины эвакуационного выхода (двери) из коридора, чел. |
|
В3 |
III |
С0 |
183 |
В таблице 4.16 представлены нормы эвакуации для категорий зданий и пожарных отсеков при предусмотренных сочетаниях степени огнестойкости и класса пожарной опасности здания.
Таблица 4.16 Нормы эвакуации
Объем помещения, тыс. м3 |
Категория помещения |
Степень огнестой-кости зданий |
Класс конструктивной пожарной опасности зданий |
Расстояние, м, при плотности людского потока в общем проходе, чел/м |
|||
до 1 |
св.1 до 3 |
св.3 до 5 |
|||||
80 и более |
В3 |
III |
С0 |
240 |
140 |
100 |
Организационно-технические мероприятия должны включать:
организацию пожарной охраны;
организацию обучения работающих правилам пожарной безопасности на производстве;
разработку мероприятий по действиям администрации, рабочих, служащих и населения на случай возникновения пожара и организацию эвакуации людей.
В соответствии с ППБ 01-03 "Правила пожарной безопасности РФ" предъявляются следующие требования к работникам, помещениям и зданиям:
все работники организаций должны допускаться к работе только после прохождения противопожарного инструктажа, а при изменении специфики работы проходить дополнительное обучение по предупреждению и тушению возможных пожаров в порядке, установленном руководителем;
в каждой организации распорядительным документом должен быть установлен соответствующий их пожарной опасности противопожарный режим, в том числе:
определены и оборудованы места для курения;
определен порядок обесточивания электрооборудования в случае пожара и по окончании рабочего дня;
регламентированы:
порядок проведения временных огневых и других пожароопасных работ;
действия работников при обнаружении пожара;
определен порядок и сроки прохождения противопожарного инструктажа и занятий по пожарно-техническому минимуму, а также назначены ответственные за их проведение.
в зданиях и сооружениях при единовременном нахождении на этаже более 10 человек должны быть разработаны и на видных местах вывешены планы (схемы) эвакуации людей в случае пожара, а также предусмотрена система (установка) оповещения людей о пожаре;
территории организаций, в пределах противопожарных расстояний между зданиями, сооружениями и открытыми складами должны своевременно очищаться от горючих отходов, мусора, тары, опавших листьев, сухой травы и т.п.;
дороги, проезды и подъезды к зданиям, наружным пожарным лестницам и водоисточникам, используемым для целей пожаротушения, должны быть всегда свободными для проезда пожарной техники, содержаться в исправном состоянии, а зимой быть очищенными от снега и льда;
территории организаций должны иметь наружное освещение в темное время суток для быстрого нахождения пожарных гидрантов, наружных пожарных лестниц и мест размещения пожарного инвентаря. Места размещения (нахождения) средств пожарной безопасности и специально оборудованные места для курения должны быть обозначены знаками пожарной безопасности, в том числе знаком пожарной безопасности "Не загромождать";
двери на путях эвакуации должны открываться свободно и по направлению выхода из здания.
4.9 Организация рабочего места
Работа разработчика осуществляется преимущественно в положении сидя. Данное положение характеризуется малой статической утомляемостью и спокойным положением рук.
В соответствии с СанПиН 2.2.2/2.4.1340-03 "Гигиенические требования к персональным электронно-вычислительным машинам и организации работы" и ГОСТ 12.2.032-78 "Рабочее место при выполнении работ сидя. Общие эргономические требования" рабочее место должно соответствовать:
при размещении рабочих мест с ПЭВМ расстояние между рабочими столами с видеомониторами (в направлении тыла поверхности одного видеомонитора и экрана другого видеомонитора), должно быть не менее 2,0 м, а расстояние между боковыми поверхностями видеомониторов - не менее 1,2 м. Фактическое расстояние межу видеомониторами 1,3 м;
площадь на одно рабочее место пользователей ПЭВМ с ВДТ на базе электроннолучевой трубки (ЭЛТ) должна составлять не менее 6 м2, в помещениях культурно-развлекательных учреждений и с ВДТ на базе плоских дискретных экранов (жидкокристаллические, плазменные) - 4,5 м2.
при использовании ПЭВМ с ВДТ на базе ЭЛТ (без вспомогательных устройств - принтер, сканер и др.), отвечающих требованиям международных стандартов безопасности компьютеров, с продолжительностью работы менее 4-х часов в в день допускается минимальная площадь 4,5 м2 на одно рабочее место пользователя (взрослого и учащегося высшего профессионального образования).
конструкция рабочего стола должна обеспечивать оптимальное размещение на рабочей поверхности используемого оборудования с учетом его количества и конструктивных особенностей, характера выполняемой работы. Допускается использование рабочих столов различных конструкций, отвечающих современным требованиям эргономики. Поверхность рабочего стола должна иметь коэффициент отражения 0,5 - 0,7;
экран видеомонитора должен находиться от глаз пользователя на расстоянии 600 - 700 мм, но не ближе 500 мм с учетом размеров алфавитно-цифровых знаков и символов;
спинка стула должна быть изогнутой формы, повторяющей анатомический изгиб позвоночника в поясничном отделе, ее длина - 0,3 м, угол наклона - 10-30 градусов, стол расположен на расстоянии 0,65 м от стула. В рассматриваемом помещении используются стулья с возможностями вращения во круг оси, регулировки высоты сидения и угла наклона спинки.
Длительность рабочего дня составляет 9 часов с 48 минутным перерывом на обед и регламентированным перерывом 15 минут через каждый час.
В помещениях проводится ежедневная влажная уборка и систематическое проветривание после каждого часа работы на ПЭВМ. Инструктаж по охране труда для пользователей при работе на персональных ЭВМ проходит раз в два месяца.
Общие требования к организации рабочих мест пользователей ПЭВМ:
при размещении рабочих мест с ПЭВМ расстояние между рабочими столами с видеомониторами (в направлении тыла поверхности одного видеомонитора и экрана другого видеомонитора), должно быть не менее 2,0 м, а расстояние между боковыми поверхностями видеомониторов не менее 1,2 м.
рабочие места с ПЭВМ в помещениях с источниками вредных производственных факторов должны размещаться в изолированных кабинах с организованным воздухообменом.
рабочие места с ПЭВМ при выполнении творческой работы, требующей значительного умственного напряжения или высокой концентрации внимания, рекомендуется изолировать друг от друга перегородками 1,5 - 2,0 м.
экран видеомонитора должен находиться от глаз пользователя на расстоянии 600-700 мм, но не ближе 500 мм с учетом размеров алфавитно-цифровых знаков и символов.
конструкция рабочего стола должна обеспечивать оптимальное размещение на рабочей поверхности используемого оборудования с учетом его количества и конструктивных особенностей, характера выполняемой работы.
При этом допускается использование рабочих столов различных конструкций, отвечающих современным требованиям эргономики. Поверхность рабочего стола должна иметь коэффициент отражения 0,5 - 0,7.
конструкция рабочего стула (кресла) должна обеспечивать поддержание рациональной рабочей позы при работе на ПЭВМ, позволять изменять позу с целью снижения статического напряжения мышц шейно-плечевой области и спины для предупреждения развития утомления. Тип рабочего стула (кресла) следует выбирать с учетом роста пользователя, характера и продолжительности работы с ПЭВМ.
Рабочий стул (кресло) должен быть подъемно-поворотным, регулируемым по высоте и углам наклона сиденья и спинки, а также расстоянию спинки от переднего края сиденья, при этом регулировка каждого параметра должна быть независимой, легко осуществляемой и иметь надежную фиксацию.
поверхность сиденья, спинки и других элементов стула (кресла) должна быть полумягкой, с нескользящим, слабо электризующимся и воздухопроницаемым покрытием, обеспечивающим легкую очистку от загрязнений.
Требования к организации и оборудованию рабочих мест с ПЭВМ для взрослых пользователей:
высота рабочей поверхности стола для взрослых пользователей должна регулироваться в пределах 680-800 мм, при отсутствии такой возможности высота рабочей поверхности стола должна составлять 725 мм.
модульными размерами рабочей поверхности стола для ПЭВМ, на основании которых должны рассчитываться конструктивные размеры, следует считать: ширину 800, 1000, 1200 и 1400 мм; глубину 800 и 1000 мм при нерегулируемой его высоте, равной 725 мм.
рабочий стол должен иметь пространство для ног высотой не менее 600 мм, шириной - не менее 500 мм, глубиной на уровне колен - не менее 450 мм и на уровне вытянутых ног - не менее 650 мм.
Конструкция рабочего стула должна обеспечивать:
ширину и глубину поверхности сиденья не менее 400 мм;
поверхность сиденья с закругленным передним краем;
регулировку высоты поверхности сиденья в пределах 400 - 550 мм и углам наклона вперед до 15 град., и назад до 5 град.;
высоту опорной поверхности спинки 300 ± 20 мм, ширину - не менее 380 мм и радиус кривизны горизонтальной плоскости - 400 мм;
угол наклона спинки в вертикальной плоскости в пределах ± 30 градусов;
регулировку расстояния спинки от переднего края сиденья в пределах 260 - 400 мм;
стационарные или съемные подлокотники длиной не менее 250 мм и шириной 50 - 70 мм;
регулировка подлокотников по высоте над сиденьем в пределах 230 ± 30 мм и внутреннего расстояния между подлокотниками в пределах 350 - 500 мм.
рабочее место пользователя ПЭВМ следует оборудовать подставкой для ног, имеющей ширину не менее 300 мм, глубину не менее 400 мм, регулировку по высоте в пределах до 150 мм и по углу наклона опорной поверхности подставки до 20 градусов. Поверхность подставки должна быть рифленой и иметь по переднему краю бортик высотой 10 мм.
клавиатуру следует располагать на поверхности стола на расстоянии 100 - 300 мм от края, обращенного к пользователю или на специальной, регулируемой по высоте рабочей поверхности, отделенной от основной столешницы.
4.10 Расчетная часть
При работе с вычислительной техникой решающим фактором, обеспечивающим высокий уровень работоспособности, является правильно спроектированное освещение.
Работа пользователя ЭВМ требует большой зрительной нагрузки, поэтому помимо естественного освещения приходиться использовать искусственное.
В помещении в светлое время суток используется естественное и искусственное освещение, в темное время суток - общее равномерное искусственное освещение.
При общем искусственном освещении: освещенность - 400 лк.
Согласно СанПиН 2.2.2.542-96 для освещения помещений с ВДТ и ПЭВМ следует применять светильники серии ЛПО. Группа светильников - 8.
Для искусственного освещения будем использовать светильники типа ЛПО 01-2х400/Д-01 по 2 лампы ЛБ 40 в каждом.
Определим количество светильников необходимое для освещения.
Световой поток лампы (ФЛ) в светильниках с люминесцентными лампами и при расположении светильников в ряд определяют по формуле:
(4.3)
где:
ЕН - нормированная освещенность, лк;
S - площадь освещаемого помещения, м2;
k - коэффициент запаса;
Z - коэффициент минимальной освещенности;
NP - количество рядов;
n1 - количество светильников в ряду;
n2 - количество ламп в светильнике;
- коэффициент использования светового потока;
Коэффициенты использования светового потока для принятого типа светильника определяют по индексу помещения i и коэффициентам отражения потолка, стен, и пола.
Индекс помещения определяется по формуле:
(4.4)
где:
А и Б соответственно длина и ширина помещения, м;
НР - высота подвеса светильников, м.
Рабочее помещение имеет следующие размеры:
ширина - 6 м;
длинна - 6 м;
высота подвеса - 3,2 м
Определим индекс помещения:
(4.5)
Согласно СанПиН 2.2.2.542-96 для внутренней отделки интерьера помещений с ВДТ и ПЭВМ должны использоваться диффузно-отражающие материалы с коэффициентом отражения:
для потолка - 0,7;
для стен - 0,5;
для пола - 0,3.
Принимая данные коэффициенты отражения потолка, стен, пола и зная индекс помещения, по таблице определяем коэффициент использования светового потока:
= 38%;
Световой поток лампы ЛБ 40 равен 3120 лк. Коэффициент минимальной освещенности для люминесцентных ламп Z = 1,1. Согласно требованиям к освещению на рабочих местах, оборудованных ПЭВМ, коэффициент запаса (Кз) для осветительных установок общего освещения должен приниматься равным 1,4.
Определим количество светильников:
(4.6)
Таким образом, для обеспечения нормированной освещенности необходимо иметь 5 светильников типа ЛПО 01-2х400/Д-01 по 2 лампы типа ЛБ40 в каждом.
Заключение
Целью разработки является создание базы данных "Аптека" для учета лекарственных средств и изделий медицинского назначения, предназначенной для использования в аптеках стационаров лечебно-профилактических учреждений (ЛПУ) Нижегородской области и Нижнего Новгорода.
Разработанный программный продукт создавался по заказу Министерства здравоохранения Нижегородской области с целью обеспечения повышения контроля за движением лекарственных средств и изделий медицинского назначения в аптеках стационаров лечебно-профилактических учреждений.
База данных обеспечивает централизованное хранение данных об аптечных товарах, предоставляет информацию о лекарственных средствах и изделиях медицинского назначения, имеющихся в учреждении на любой момент времени в денежном и количественном выражении, позволяет формировать необходимые в процессе работы аптеки стационара отчеты, предназначенные для сверки данных с бухгалтерией. Разработанная программа имеет удобный и понятный пользовательский интерфейс.
Список литературы
1. Ковязин А., Востриков С., Мир InterBase. Архитектура, администрирование и разработка приложений баз данных в InterBase / Firebird / Yaffil. - СПб.: Питер, 2007. - 496 с.: ил.
2. Дэйт К., Введение в системы баз данных. - К.: Вильямс, 2000. - 512 с.
3. Хелен Борри, Firebird: руководство разработчика баз данных. - СПб.: БХВ-Петербург, 2007. - 1104 с.
4. Хомоненко А., Гофман В., Мещеряков Е., Никифоров В., Delphi 7/Под общ. Ред.А.Д. Хомоненко. - СПб.: БХВ-Петербург, 2008. - 1216 с.: ил.
5. Гольцман В., MySQL 5.0. Библиотека программиста. - СПб.: Питер, 2010. - 256 с.: ил.
6. СТП 1-У-НГТУ-2004. Общие требования к оформлению пояснительных записок дипломных и курсовых проектов. - Н. Новгород, 2004. - 21 с.
Приложения
Приложение А
Часть кода программы
Otch_ved. pas - форма "Формирование ведомости"
unit Otch_ved;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ToolWin, ComCtrls, StdCtrls, ExtCtrls, CheckLst, Mask, DB,
IBCustomDataSet, IBQuery, FR_DSet, FR_DBSet, FR_Class, Grids, DBGrids,
Menus;
type
TFormVed = class (TForm)
GroupBox1: TGroupBox;
IstFnBox: TCheckListBox;
StatusBar1: TStatusBar;
GroupBox2: TGroupBox;
GrupBox: TCheckListBox;
Panel1: TPanel;
Label1: TLabel;
DTPicker1: TDateTimePicker;
Label2: TLabel;
DTPicker2: TDateTimePicker;
ToolBar1: TToolBar;
ToolButton1: TToolButton;
ToolButton2: TToolButton;
ToolButton3: TToolButton;
ToolButton4: TToolButton;
GroupBox3: TGroupBox;
Label3: TLabel;
FromPos: TMaskEdit;
Label4: TLabel;
ToPos: TMaskEdit;
IBQry1: TIBQuery;
VedGrid: TStringGrid;
ToolButton9: TToolButton;
ToolButton6: TToolButton;
ToolButton7: TToolButton;
Label5: TLabel;
Edit_poisk: TEdit;
ToolButton8: TToolButton;
frReport1: TfrReport;
frDBDataSet1: TfrDBDataSet;
R1: TCheckBox;
R2: TCheckBox;
PopupMenu1: TPopupMenu;
N2: TMenuItem;
procedure TBExit (Sender: TObject);
procedure FormCreate (Sender: TObject);
procedure ChBoxClick (Sender: TObject);
procedure TBVedom (Sender: TObject);
procedure FormClose (Sender: TObject; var Action: TCloseAction);
procedure FormCanResize (Sender: TObject; var NewWidth,
NewHeight: Integer; var Resize: Boolean);
procedure TBPrint (Sender: TObject);
procedure VedGridDrawCell (Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
procedure VedGridSelectCell (Sender: TObject; ACol, ARow: Integer;
var CanSelect: Boolean);
procedure TBOststkiDannie (Sender: TObject);
procedure TBSumm (Sender: TObject);
procedure TBPoisk (Sender: TObject);
procedure StatusBar1DrawPanel (StatusBar: TStatusBar;
Panel: TStatusPanel; const Rect: TRect);
procedure BoxDblClick (Sender: TObject);
private
QryText: string;
TabNam1, TabNam2, TabNam3: String;
mIstFin, mGrup, mRec: Array of Integer;
Date1, Date2: TDateTime;
RowN, Flag, IFFlag, GrupFl: Integer;
public
{ Public declarations }
end;
var
FormVed: TFormVed;
implementation
uses main, p_karta, VedOst1;
{$R *. dfm}
procedure TFormVed. FormCreate (Sender: TObject);
var I: Integer;
begin
Date1: =StrToDate ('01.01. '+IntToStr (MF. nastr_god));
Date2: =Now; Flag: =1;
DTPicker1. DateTime: =Date1;
DTPicker2. DateTime: =Date2;
QryText: = 'Select * From dicISTFIN Order by NameOfIstFinansir';
MF. OpenQry (QryText, MF. IBQuery1);
IstFnBox. Items. Clear; SetLength (mIstFin, 0); i: =0; IFFlag: =1;
while not MF. IBQuery1. Eof do
begin
IstFnBox. Items. Add (MF. IBQuery1. FieldByName ('NameOfIstFinansir'). asString);
Inc (i); SetLength (mIstFin, i);
mIstFin [i-1]: = MF. IBQuery1 ['ISTFINANSIRID'];
IstFnBox. Checked [i-1]: =True;
MF. IBQuery1. Next;
end;
QryText: = 'Select * From dicGruppa Order by NameOfGPKU';
MF. OpenQry (QryText, MF. IBQuery1);
GrupBox. Items. Clear; SetLength (mGrup, 0); i: =0; GrupFl: =1;
while not MF. IBQuery1. Eof do
begin
GrupBox. Items. Add (MF. IBQuery1. FieldByName ('NameOfGPKU'). asString);
Inc (i); SetLength (mGrup, i);
mGrup [i-1]: = MF. IBQuery1 ['GRUPPAPKUID'];
GrupBox. Checked [I-1]: =true;
MF. IBQuery1. Next;
end;
TabNam1: =MF.compN+'_ved1';
MF. IBTable1. Active: =False;
MF. IBTable1. TableName: =TabNam1;
TabNam2: =MF.compN+'_ved2';
MF. IBTable2. Active: =False;
MF. IBTable2. TableName: =TabNam2;
TabNam3: =MF.compN+'_ved3';
MF. IBTable3. Active: =False;
MF. IBTable3. TableName: =TabNam3;
If MF. exec_Tran. InTransaction then MF. exec_Tran.commit;
MF. exec_Tran. StartTransaction;
TRY
begin
If MF. IBTable1. Exists then
QryText: ='DELETE FROM '+TabNam1
else
QryText: ='CREATE TABLE '+TabNam1+
' (NomenklID int, SeriaID int, SumOst Numeric (11,3), SumPrih Numeric (11,3), '+
'SumRash Numeric (11,3), IstFinansirID int, PrihCenNDS Numeric (11,3)) ';
MF. ExecQry (QryText, MF. ExQuery2);
If MF. IBTable2. Exists then
QryText: ='DELETE FROM '+TabNam2
else
QryText: ='CREATE TABLE '+TabNam2+
' (NomenklID int, SeriaID int, SumOst Numeric (11,3), SumPrih Numeric (11,3), '+
'SumRash Numeric (11,3), IstFinansirID int, PrihCenNDS Numeric (11,3)) '; //
MF. ExecQry (QryText, MF. ExQuery2);
end;
MF. exec_Tran.commit;
EXCEPT
MF. exec_Tran. Rollback;
END;
VedGrid. Cells [0, 0]: ='№';
VedGrid. Cells [1, 0]: ='Наименование';
VedGrid. Cells [2, 0]: ='Цена,';
VedGrid. Cells [3, 0]: ='Остаток';
VedGrid. Cells [4, 0]: ='Приход';
VedGrid. Cells [5, 0]: ='Расход';
VedGrid. Cells [6, 0]: ='Остаток';
end;
procedure TFormVed. TBExit (Sender: TObject);
begin
SetLength (mIstFin, 0); SetLength (mGrup, 0);
Close
end;
procedure TFormVed. ChBoxClick (Sender: TObject);
var CLBox: TCheckListBox;
begin
CLBox: =IstFnBox;
If (Sender as TCheckBox). Name='CheckBox1' then CLBox: =IstFnBox
Else If (Sender as TCheckBox). Name='CheckBox2' then CLBox: =GrupBox;
If (Sender as TCheckBox). Checked then
CLBox. Enabled: =False
Else
CLBox. Enabled: =True;
end;
procedure TFormVed. TBVedom (Sender: TObject);
var D1, D2, OrderTxt, IFList, GPList, W1, W2, Pf, Fn, Gr: String;
I, F, T: Integer;
S1, S2, S3, S4: Real;
Sf1, Sf2, Sf3, Sf4: Real;
Sg1, Sg2, Sg3, Sg4: Real;
SS1, SS2, SS3, SS4: Real;
begin
If DTPicker1. DateTime > DTPicker2. DateTime then
begin
Application. MessageBox ('Первая дата больше второй! ', 'Ошибка!!! ', MB_OK);
exit;
end;
D1: =MF. MD (DateToStr (DTPicker1. DateTime));
D2: =MF. MD (DateToStr (DTPicker2. DateTime));
Flag: =0;
If MF. exec_Tran. InTransaction then MF. exec_Tran.commit;
MF. exec_Tran. StartTransaction;
TRY
begin
QryText: ='DELETE FROM '+TabNam1;
MF. ExecQry (QryText, MF. ExQuery2);
QryText: ='DELETE FROM '+TabNam2;
MF. ExecQry (QryText, MF. ExQuery2);
end;
MF. exec_Tran.commit;
EXCEPT
MF. exec_Tran. Rollback;
END;
If MF. exec_Tran. InTransaction then MF. exec_Tran.commit;
MF. exec_Tran. StartTransaction;
TRY
begin
QryText: ='Insert Into '+TabNam1+
' (NomenklID, SeriaID, SumOst, IstFinansirID, PrihCenNDS) '+
'Select NomenklID, SeriaID, Sum (OstCount) as SumOst, IstFinansirID, PrihCenNDS '+
'From OstatkiDoc O, OststkiDannie Os '+
'Where O. YearOfOst='+InttoStr (MF. nastr_god) +' and O. Ostid=Os. Ostid '+
'Group by NomenklID, SeriaID, IstFinansirID, PrihCenNDS';
MF. ExecQry (QryText, MF. ExQuery2);
QryText: ='Insert Into '+TabNam1+
' (NomenklID, SeriaID, SumPrih, IstFinansirID, PrihCenNDS) '+
'Select NomenklID, SeriaID, Sum (PrihFaktCount) as SumPrih, IstFinansirID, PrihCenNDS '+
'From PrixodDannie P2, PrixDoc PD2 '+
'Where P2. PrihID=PD2. PrihID and '+
'PD2. DatePrih between '+D1+' and '+D2+' '+
'Group by NomenklID, SeriaID, IstFinansirID, PrihCenNDS';
MF. ExecQry (QryText, MF. ExQuery2);
QryText: ='Insert Into '+TabNam1+
' (NomenklID, SeriaID, SumRash, IstFinansirID, PrihCenNDS) '+
'Select NomenklID, SeriaID, Sum (RasxCount) as SumRash, IstFinansirID, PrihCenNDS '+
'From RashodDannie R1, RashodDoc RD1 '+
'Where R1. RashID=RD1. RashID and '+
'RD1. DateRash between '+D1+' and '+D2+' '+
'Group by NomenklID, SeriaID, IstFinansirID, PrihCenNDS';
MF. ExecQry (QryText, MF. ExQuery2);
end;
MF. exec_Tran.commit;
EXCEPT
MF. exec_Tran. Rollback;
END;
QryText: ='Insert Into '+TabNam2+
' (NomenklID, SeriaID, SumOst, SumPrih, SumRash, IstFinansirID, PrihCenNDS) '+
'Select NomenklID, SeriaID, Sum (COALESCE (SumOst, 0)) as SumOst, Sum (COALESCE (SumPrih, 0)) as SumPrih, '+
'Sum (COALESCE (SumRash, 0)) as SumRash, IstFinansirID, PrihCenNDS '+
'From '+TabNam1+' '+
'Group by NomenklID, SeriaID, IstFinansirID, PrihCenNDS';
MF. ExecQryTr (QryText, MF. ExQuery2, MF. exec_Tran);
IFList: =''; GPList: =''; W1: =''; W2: ='';
IFList: =' (0';
For I: =0 To Length (mIstFin) - 1 Do
begin
If IstFnBox. Checked [I] then
IFList: =IFList+', '+IntToStr (mIstFin [I]);
end;
IFList: =IFList+') ';
W1: ='and IstFinansirID in '+IFList; // Where
GPList: =' (0';
For I: =0 To Length (mGrup) - 1 Do
begin
If GrupBox. Checked [I] then
GPList: =GPList+', '+IntToStr (mGrup [I]);
end;
GPList: =GPList+') ';
W2: =' and DP. GRUPPAPKUID in '+GPList;
If Trim (FromPos. Text) ='' then F: =0 Else F: =StrToInt (FromPos. Text);
If Trim (ToPos. Text) ='' then T: =0 Else T: =StrToInt (ToPos. Text);
QryText: ='Select distinct N. NOMENKLID, N. NumOfNomenkl, (Middle (N. NumOfNomenkl, '+IntToStr (F) +', '+IntToStr (T) +')) as Nom, N. NMNKLName, '+
'SrokDeistvSertif, NumOfSertif, SrokG, S. SeriaID, SeriaNom, NameOfKontr, '+
'IstFinansirID, NameOfIstFinansir, GRUPPAPKUID, GPLUName, EdIzmID, PrihCenNDS, '+
' (COALESCE (SumOst, 0)) as SumOst, (COALESCE (SumPrih, 0)) as SumPrih, '+
' (COALESCE (SumRash, 0)) as SumRash, '+
' (COALESCE (SumOst, 0) + COALESCE (SumPrih, 0) - COALESCE (SumRash, 0)) as SumOst2 '+
'From DicFarmPrep DP '+
'Inner join Nomenklat N on DP. FarmPrepID=N. FarmPrepID '+
'left join dicGruppa DG on DP. GRUPPAPKUID=DG. GRUPPAPKUID '+
'left join Seria S on N. NomenklID=S. NomenklID '+
'left join DicEdIzmereniya E on N. EIZID=E. EIZID '+
'left join DicKontragent K on S. Proizvid=K. kagid '+
'left join '+TabNam2+' T on (N. NomenklID=T. NomenklID and S. SeriaID=T. SeriaID) '+
'left join dicistfin DI on T. IstFinansirID=DI. IstFinansirID '+
'Where (COALESCE (SumOst, 0) <>0 or COALESCE (SumPrih, 0) <>0 or COALESCE (SumRash, 0) <>0 or '+
' (COALESCE (SumOst, 0) + COALESCE (SumPrih, 0) - COALESCE (SumRash, 0)) <>0) '+W1+W2+' ';
OrderTxt: ='Order BY ';
If R1. checked then OrderTxt: =OrderTxt+'NameOfIstFinansir, ';
If R2. checked then OrderTxt: =OrderTxt+'GPLUName, ';
OrderTxt: =OrderTxt+'Nom, NmnklName, SeriaNom';
MF. OpenQry (QryText+OrderTxt, IBQry1); // WhereTxt+
IBQry1. First; VedGrid. RowCount: =2; I: =1;
Fn: =''; Gr: =''; // Для хранения предыдущего значения ист. фин-я и группы
S1: =0; S2: =0; S3: =0; S4: =0; Sf1: =0; Sf2: =0; Sf3: =0; Sf4: =0;
Sg1: =0; Sg2: =0; Sg3: =0; Sg4: =0; SS1: =0; SS2: =0; SS3: =0; SS4: =0;
SetLength (mRec, 0); // отражает номер записи запроса в строке грида
VedGrid. Cells [0, 1]: ='';
VedGrid. Cells [1, 1]: ='';
VedGrid. Cells [2, 1]: ='';
VedGrid. Cells [3, 1]: ='';
VedGrid. Cells [4, 1]: ='';
VedGrid. Cells [5, 1]: ='';
VedGrid. Cells [6, 1]: ='';
While not IBQry1. Eof do
begin
If I>1 then VedGrid. RowCount: =VedGrid. RowCount+1;
If (I>1) and
( (VedGrid. Cells [0, I-1] <>IBQry1. FieldByName ('Nom'). asString) or
( (Fn<>IBQry1. FieldByName ('NameOfIstFinansir'). asString) and (R1. checked)) or
( (Gr<>IBQry1. FieldByName ('GPLUName'). asString) and (R2. checked))) then
Begin
VedGrid. RowCount: =VedGrid. RowCount+1; I: =I+1;
VedGrid. Cells [0, I-1]: ='';
VedGrid. Cells [1, I-1]: ='Итого по "'+VedGrid. Cells [0, I-2] +'"';
VedGrid. Cells [2, I-1]: ='';
VedGrid. Cells [3, I-1]: =FloatToStr (S1); // 'Ост. на нач. ';
VedGrid. Cells [4, I-1]: =FloatToStr (S2); // 'Приход';
VedGrid. Cells [5, I-1]: =FloatToStr (S3); // 'Расход';
VedGrid. Cells [6, i-1]: =FloatToStr (S4); // 'Ост. на кон. ';
S1: =0; S2: =0; S3: =0; S4: =0;
If (Gr<>IBQry1. FieldByName ('GPLUName'). asString) and (R2. checked) then
begin
VedGrid. RowCount: =VedGrid. RowCount+1; I: =I+1;
VedGrid. Cells [0, I-1]: ='';
VedGrid. Cells [1, I-1]: ='Группа "'+Gr+'"';
VedGrid. Cells [2, I-1]: ='';
VedGrid. Cells [3, I-1]: =FloatToStr (Sg1); // 'Ост. на нач. ';
VedGrid. Cells [4, I-1]: =FloatToStr (Sg2); // 'Приход';
VedGrid. Cells [5, I-1]: =FloatToStr (Sg3); // 'Расход';
VedGrid. Cells [6, i-1]: =FloatToStr (Sg4); // 'Ост. на кон. ';
Sg1: =0; Sg2: =0; Sg3: =0; Sg4: =0; S1: =0; S2: =0; S3: =0; S4: =0;
end;
If (Fn<>IBQry1. FieldByName ('NameOfIstFinansir'). asString) and (R1. checked) then
begin
VedGrid. RowCount: =VedGrid. RowCount+1; I: =I+1;
VedGrid. Cells [0, I-1]: ='';
VedGrid. Cells [1, I-1]: ='Финанс. "'+Fn+'"';
VedGrid. Cells [2, I-1]: ='';
VedGrid. Cells [3, I-1]: =FloatToStr (Sf1); // 'Ост. на нач. ';
VedGrid. Cells [4, I-1]: =FloatToStr (Sf2); // 'Приход';
VedGrid. Cells [5, I-1]: =FloatToStr (Sf3); // 'Расход';
VedGrid. Cells [6, i-1]: =FloatToStr (Sf4); // 'Ост. на кон. ';
Sf1: =0; Sf2: =0; Sf3: =0; Sf4: =0;
S1: =0; S2: =0; S3: =0; S4: =0;
end;
end;
VedGrid. Cells [0, I]: =IBQry1. FieldByName ('Nom'). asString; // Copy (IBQry1. FieldByName ('NumOfNomenkl'). asString, F, T);
VedGrid. Cells [1, I]: =IBQry1. FieldByName ('NMNKLName'). asString; // 'Наименование';
VedGrid. Cells [2, I]: =IBQry1. FieldByName ('PrihCenNDS'). asString; // 'Цена, руб. ';
VedGrid. Cells [3, I]: =IBQry1. FieldByName ('SumOst'). asString; // 'Ост. на нач. ';
VedGrid. Cells [4, I]: =IBQry1. FieldByName ('SumPrih'). asString; // 'Приход';
VedGrid. Cells [5, I]: =IBQry1. FieldByName ('SumRash'). asString; // 'Расход';
VedGrid. Cells [6, i]: =IBQry1. FieldByName ('SumOst2'). asString; // 'Ост. на кон. ';
SetLength (mRec, I+1); mRec [I]: =IBQry1. RecNo; // J;
Fn: =IBQry1. FieldByName ('NameOfIstFinansir'). asString;
Gr: =IBQry1. FieldByName ('GPLUName'). asString;
S1: =S1+IBQry1. FieldByName ('SumOst'). asFloat;
S2: =S2+IBQry1. FieldByName ('SumPrih'). asFloat;
S3: =S3+IBQry1. FieldByName ('SumRash'). asFloat;
S4: =S4+IBQry1. FieldByName ('SumOst2'). asFloat;
Sf1: =Sf1+IBQry1. FieldByName ('SumOst'). asFloat;
Sf2: =Sf2+IBQry1. FieldByName ('SumPrih'). asFloat;
Sf3: =Sf3+IBQry1. FieldByName ('SumRash'). asFloat;
Sf4: =Sf4+IBQry1. FieldByName ('SumOst2'). asFloat;
Sg1: =Sg1+IBQry1. FieldByName ('SumOst'). asFloat;
Sg2: =Sg2+IBQry1. FieldByName ('SumPrih'). asFloat;
Sg3: =Sg3+IBQry1. FieldByName ('SumRash'). asFloat;
Sg4: =Sg4+IBQry1. FieldByName ('SumOst2'). asFloat;
SS1: =SS1+IBQry1. FieldByName ('SumOst'). asFloat;
SS2: =SS2+IBQry1. FieldByName ('SumPrih'). asFloat;
SS3: =SS3+IBQry1. FieldByName ('SumRash'). asFloat;
SS4: =SS4+IBQry1. FieldByName ('SumOst2'). asFloat;
IBQry1. Next; I: =I+1; // J: =J+1;
end;
VedGrid. RowCount: =VedGrid. RowCount+1;
VedGrid. Cells [0, VedGrid. RowCount-1]: ='';
VedGrid. Cells [1, VedGrid. RowCount-1]: ='Итого по "'+VedGrid. Cells [0, I-1] +'": ';
VedGrid. Cells [2, VedGrid. RowCount-1]: ='';
VedGrid. Cells [3, VedGrid. RowCount-1]: =FloatToStr (S1); // 'Ост. на нач. ';
VedGrid. Cells [4, VedGrid. RowCount-1]: =FloatToStr (S2); // 'Приход';
VedGrid. Cells [5, VedGrid. RowCount-1]: =FloatToStr (S3); // 'Расход';
VedGrid. Cells [6, VedGrid. RowCount-1]: =FloatToStr (S4); // 'Ост. на кон. ';
If R2. checked then
begin
VedGrid. RowCount: =VedGrid. RowCount+1;
VedGrid. Cells [0, VedGrid. RowCount-1]: ='';
VedGrid. Cells [1, VedGrid. RowCount-1]: ='Группа: '+Gr;
VedGrid. Cells [2, VedGrid. RowCount-1]: ='';
VedGrid. Cells [3, VedGrid. RowCount-1]: =FloatToStr (Sg1); // 'Ост. на нач. ';
VedGrid. Cells [4, VedGrid. RowCount-1]: =FloatToStr (Sg2); // 'Приход';
VedGrid. Cells [5, VedGrid. RowCount-1]: =FloatToStr (Sg3); // 'Расход';
VedGrid. Cells [6, VedGrid. RowCount-1]: =FloatToStr (Sg4); // 'Ост. на кон. ';
end;
If R1. checked then
begin
VedGrid. RowCount: =VedGrid. RowCount+1;
VedGrid. Cells [0, VedGrid. RowCount-1]: ='';
VedGrid. Cells [1, VedGrid. RowCount-1]: ='Финанс.: '+Fn;
VedGrid. Cells [2, VedGrid. RowCount-1]: ='';
VedGrid. Cells [3, VedGrid. RowCount-1]: =FloatToStr (Sf1); // 'Ост. на нач. ';
VedGrid. Cells [4, VedGrid. RowCount-1]: =FloatToStr (Sf2); // 'Приход';
VedGrid. Cells [5, VedGrid. RowCount-1]: =FloatToStr (Sf3); // 'Расход';
VedGrid. Cells [6, VedGrid. RowCount-1]: =FloatToStr (Sf4); // 'Ост. на кон. ';
end;
VedGrid. RowCount: =VedGrid. RowCount+1;
VedGrid. Cells [0, VedGrid. RowCount-1]: ='';
VedGrid. Cells [1, VedGrid. RowCount-1]: ='Всего: ';
VedGrid. Cells [2, VedGrid. RowCount-1]: ='';
VedGrid. Cells [3, VedGrid. RowCount-1]: =FloatToStr (SS1); // 'Ост. на нач. ';
VedGrid. Cells [4, VedGrid. RowCount-1]: =FloatToStr (SS2); // 'Приход';
VedGrid. Cells [5, VedGrid. RowCount-1]: =FloatToStr (SS3); // 'Расход';
VedGrid. Cells [6, VedGrid. RowCount-1]: =FloatToStr (SS4); // 'Ост. на кон. ';
If IBQry1. RecordCount<>0 then
begin
ToolButton6. Enabled: =True;
ToolButton7. Enabled: =True;
ToolButton8. Enabled: =True;
ToolButton9. Enabled: =True;
Edit_poisk. Enabled: =True;
end
Else
begin
ToolButton6. Enabled: =False;
ToolButton7. Enabled: =False;
ToolButton8. Enabled: =False;
ToolButton9. Enabled: =False;
Edit_poisk. Enabled: =False;
end;
Flag: =1; RowN: =1;
IBQry1. First;
StatusBar1. Repaint;
end;
procedure TFormVed. FormClose (Sender: TObject; var Action: TCloseAction);
begin
If MF. read_Tran. InTransaction then MF. read_Tran.commit;
If MF. exec_Tran. InTransaction then MF. exec_Tran.commit;
MF. exec_Tran. StartTransaction;
TRY
begin
QryText: ='Drop table '+TabNam1;
MF. ExecQry (QryText, MF. ExQuery2);
QryText: ='Drop table '+TabNam2;
MF. ExecQry (QryText, MF. ExQuery2);
{ QryText: ='Drop table '+TabNam3;
MF. ExecQry (QryText, MF. ExQuery2); }
end;
MF. exec_Tran.commit;
EXCEPT
MF. exec_Tran. Rollback;
END;
SetLength (mIstFin, 0); SetLength (mGrup, 0); SetLength (mRec, 0);
end;
procedure TFormVed. FormCanResize (Sender: TObject; var NewWidth,
NewHeight: Integer; var Resize: Boolean);
var ii: Integer;
begin
VedGrid. Height: =NewHeight-255;
VedGrid. Width: =NewWidth-27; ii: =25;
VedGrid. ColWidths [0]: =Round ( (VedGrid. Width-ii) * 0.06);
VedGrid. ColWidths [1]: =Round ( (VedGrid. Width-ii) * 0.35);
VedGrid. ColWidths [2]: =Round ( (VedGrid. Width-ii) * 0.10);
VedGrid. ColWidths [3]: =Round ( (VedGrid. Width-ii) * 0.12);
VedGrid. ColWidths [4]: =Round ( (VedGrid. Width-ii) * 0.12);
VedGrid. ColWidths [5]: =Round ( (VedGrid. Width-ii) * 0.12);
VedGrid. ColWidths [6]: =Round ( (VedGrid. Width-ii) * 0.12);
end;
procedure TFormVed. TBPrint (Sender: TObject);
begin
frReport1. Clear;
If ( (Sender as TMenuItem). Name) = 'N1' then
begin
frReport1. LoadFromFile ('Vedomost. frf');
With frReport1. Dictionary do begin
Variables ['D1']: = MF. MS (DateToStr (DTPicker1. Date));
Variables ['D2']: = MF. MS (DateToStr (DTPicker2. Date));
Variables ['S1']: = MF. MS (FromPos. Text);
Variables ['L2']: = MF. MS (ToPos. Text);
end;
end
Else
If ( (Sender as TMenuItem). Name) = 'N2' then
begin
If RowN=-1 then exit;
frReport1. LoadFromFile ('Stellag_Kart. frf');
With frReport1. Dictionary do begin
Variables ['Name']: = MF. MS (IBQry1. FieldByName ('NMNKLName'). asString+' '+
IBQry1. FieldByName ('NameOfKontr'). asString);
Variables ['EIZ']: = MF. MS (IBQry1. FieldByName ('EdIzmID'). asString);
Variables ['Coun']: = MF. MS (IBQry1. FieldByName ('SumOst2'). asString);
Variables ['Cena']: = MF. MS (IBQry1. FieldByName ('PrihCenNDS'). asString);
Variables ['Seria']: = MF. MS (IBQry1. FieldByName ('SeriaNom'). asString);
Variables ['SrokG']: = MF. MS (IBQry1. FieldByName ('SrokG'). asString);
end;
end;
frReport1. ShowReport;
end;
procedure TFormVed. VedGridDrawCell (Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
var ll: Integer;
TheRect: TRect;
begin
if ARow = 0 then
begin
ll: = (VedGrid. ColWidths [ACol] - Canvas. TextWidth (VedGrid. Cells [ACol,0])) div 2 - 3;
VedGrid. Canvas. Font. Color: =clMaroon;
VedGrid. Canvas. Font. Style: = [fsBold];
VedGrid. RowHeights [0]: =40;
TheRect: =Rect; TheRect. Top: =Rect. Top+15;
If ACol=0 then
VedGrid. Canvas. TextRect (Rect, Rect. Left+ll, Rect. Top+7, '№');
If ACol=1 then
VedGrid. Canvas. TextRect (Rect, Rect. Left+ll, Rect. Top+7, 'Наименование');
If ACol=2 then
begin
VedGrid. Canvas. TextRect (Rect, Rect. Left+ll, Rect. Top+2, 'Цена,');
VedGrid. Canvas. TextRect (TheRect, TheRect. Left+ll, TheRect. Top+2, ' руб. ');
end;
If ACol=3 then
begin
VedGrid. Canvas. TextRect (Rect, Rect. Left+ll, Rect. Top+2, 'Остаток');
VedGrid. Canvas. TextRect (TheRect, TheRect. Left+ll, TheRect. Top+2, ' на нач. ');
end;
If ACol=4 then
VedGrid. Canvas. TextRect (Rect, Rect. Left+ll, Rect. Top+7, 'Приход');
If ACol=5 then
VedGrid. Canvas. TextRect (Rect, Rect. Left+ll, Rect. Top+7, 'Расход');
If ACol=6 then
begin
VedGrid. Canvas. TextRect (Rect, Rect. Left+ll, Rect. Top+2, 'Остаток');
VedGrid. Canvas. TextRect (TheRect, TheRect. Left+ll, TheRect. Top+2, ' на кон. ');
end;
end;
If Copy (VedGrid. Cells [1, ARow], 0,8) ='Итого по' Then
begin
VedGrid. Canvas. Font. Style: = [fsBold];
VedGrid. Canvas. Font. Color: =clNavy;
VedGrid. Canvas. TextRect (Rect, Rect. Left+2, Rect. Top+2, VedGrid. Cells [ACol, ARow]);
end;
If Copy (VedGrid. Cells [1, ARow], 0,6) ='Финанс' Then
begin
VedGrid. Canvas. Font. Style: = [fsBold];
VedGrid. Canvas. Font. Color: =clPurple;
VedGrid. Canvas. TextRect (Rect, Rect. Left+2, Rect. Top+2, VedGrid. Cells [ACol, ARow]);
end;
If Copy (VedGrid. Cells [1, ARow], 0,6) ='Группа' Then
begin
VedGrid. Canvas. Font. Style: = [fsBold];
VedGrid. Canvas. Font. Color: =clGreen;
VedGrid. Canvas. TextRect (Rect, Rect. Left+2, Rect. Top+2, VedGrid. Cells [ACol, ARow]);
end;
If Copy (VedGrid. Cells [1, ARow], 0,5) ='Всего' Then
begin
VedGrid. Canvas. Font. Style: = [fsBold];
VedGrid. Canvas. Font. Color: =clMaroon;
VedGrid. Canvas. TextRect (Rect, Rect. Left+2, Rect. Top+2, VedGrid. Cells [ACol, ARow]);
end;
end;
procedure TFormVed. VedGridSelectCell (Sender: TObject; ACol, ARow: Integer;
var CanSelect: Boolean);
begin
If (ARow>Length (mRec)) or (Flag=0) then exit;
If VedGrid. Cells [0, ARow] ='' then RowN: =-1
Else RowN: =ARow;
StatusBar1. Repaint;
end;
procedure TFormVed. TBOststkiDannie (Sender: TObject);
begin
MF. VedOstShow: =1;
Application. CreateForm (TVedOst, VedOst);
if (not VedOst. Visible) then VedOst. ShowModal;
end;
procedure TFormVed. TBSumm (Sender: TObject);
var TxtMess, TekOst, D1, D2: String;
RR: Real;
begin
If IBQry1. RecordCount=0 then exit; RR: =0;
If DTPicker2. Date=now () then TekOst: =VedGrid. Cells [6, VedGrid. RowCount-1]
Else
Begin
D1: =MF. MD (DateToStr (DTPicker2. Date));
D2: =MF. MD (DateToStr (now ()));
RR: =StrToFloat (VedGrid. Cells [6, VedGrid. RowCount-1]);
QryText: ='Select Sum (PrihFaktCount) as SumPrih '+
'From PrixodDannie P2, PrixDoc PD2 '+
'Where P2. PrihID=PD2. PrihID and '+
'PD2. DatePrih between '+D1+' and '+D2+' '+
'Group by NomenklID, SeriaID, IstFinansirID, PrihCenNDS';
MF. OpenQry (QryText, MF. IBQuery1);
RR: =RR+MF. IBQuery1. FieldByName ('SumPrih'). asFloat;
QryText: ='Select Sum (RasxCount) as SumRash '+
'From RashodDannie R1, RashodDoc RD1 '+
'Where R1. RashID=RD1. RashID and '+
'RD1. DateRash between '+D1+' and '+D2+' '+
'Group by NomenklID, SeriaID';
MF. OpenQry (QryText, MF. IBQuery1);
RR: =RR-MF. IBQuery1. FieldByName ('SumRash'). asFloat;
end;
TxtMess: ='Данные за период с '+DateToStr (DTPicker1. Date) +' по '+DateToStr (DTPicker2. Date) +#10#13+
'С '+FromPos. Text+' поз. '+ToPos. Text+' симв. '+#10#13+
'_________________________________Сумма, руб. '+#10#13+
'Остаток на начало периода_________'+VedGrid. Cells [3, VedGrid. RowCount-1] +#10#13+
'Приход___________________________' +VedGrid. Cells [4, VedGrid. RowCount-1] +#10#13+
'Расход___________________________' +VedGrid. Cells [5, VedGrid. RowCount-1] +#10#13+
'Остаток на конец периода__________'+VedGrid. Cells [6, VedGrid. RowCount-1] +#10#13+
'Текущий остаток__________________' +FloatToStr (RR);
MessageDlgPos (TxtMess, mtInformation, [mbOK], 0, 200, 200)
end;
procedure TFormVed. TBPoisk (Sender: TObject);
var myRect: TGridRect;
I: Integer;
begin
If not IBQry1. Locate ('NMNKLName', Edit_poisk. Text, [loPartialKey]) then
begin
IBQry1. First;
ShowMessage ('Значение не найдено');
exit;
end;
for I: =0 To Length (mRec) do
If mRec [I] =IBQry1. RecNo then break;
myRect. Left: = 0; myRect. Top: = I;
myRect. Right: = 6; myRect. Bottom: = I;
VedGrid. Selection: =myRect;
VedGrid. TopRow: =I;
end;
procedure TFormVed. StatusBar1DrawPanel (StatusBar: TStatusBar;
Panel: TStatusPanel; const Rect: TRect);
begin
If not IBQry1. Active then exit;
StatusBar1. Canvas. Font. Color: = clMaroon;
StatusBar1. Canvas. Font. Size: = 8;
StatusBar1. Canvas. Font. Style: = [fsBold];
If RowN=-1 then // VedGrid. Cells [0, ARow] =''
begin
if Panel = StatusBar. Panels [0] then
StatusBar1. Canvas. TextOut (Rect. Left, Rect. Top, 'Номенкл. №')
Else
if Panel = StatusBar. Panels [1] then
StatusBar1. Canvas. TextOut (Rect. Left, Rect. Top, 'Источник фин. ')
Else
if Panel = StatusBar. Panels [2] then
StatusBar1. Canvas. TextOut (Rect. Left, Rect. Top, 'Поставщик')
Else
if Panel = StatusBar. Panels [3] then
StatusBar1. Canvas. TextOut (Rect. Left, Rect. Top, 'Серия')
Else
if Panel = StatusBar. Panels [4] then
StatusBar1. Canvas. TextOut (Rect. Left, Rect. Top, 'Срок д. серт')
Else
if Panel = StatusBar. Panels [5] then
Подобные документы
Назначение базы данных для обеспечения работы автобусного парка. Основные возможности админпанели. Выполняемые базой данных и приложением функции. Инфологическое моделирование данных. Описание разработанного web-приложения. Проектирование базы данных.
курсовая работа [2,2 M], добавлен 01.02.2013Основные свойства времени и способы его представления. Временная логика предикатов А. Тейза. Учет временного фактора при разработке баз данных. Разработка концепции базы данных на основе реляционной системы управления. Требования к программному продукту.
дипломная работа [2,8 M], добавлен 02.10.2016Медицинский диагностический центр: информационная система управления данными, минимальные системные требования к аппаратному обеспечению, создание таблиц путем ввода данных. Отчеты базы данных: создание отчетов различными способами, мастер диаграмм.
реферат [588,6 K], добавлен 03.06.2011Разработка базы данных для информационной поддержки деятельности аптеки с целью автоматизированного ведения данных о лекарствах аптеки. Проектирование схемы базы данных с помощью средства разработки структуры базы данных Microsoft SQL Server 2008.
курсовая работа [3,6 M], добавлен 18.06.2012Создание базы данных с помощью ACCESS для автоматизации работы базы отдыха. Оценка возможностей пользователей при работе с данной базой. Построение информационно-логической модели базы данных. Разработка запросов для корректировки и выборки данных.
курсовая работа [1,1 M], добавлен 19.10.2010Характеристика, классификация и структура баз данных. Модель базы данных в Delphi. Разработка базы данных для вуза с целью облегчения процесса поиска нужной информации о студенте. Требования к техническому, методическому и программному обеспечению.
курсовая работа [1,0 M], добавлен 18.08.2009Создание информационно-аналитической системы (базы данных) "Реализация кондитерских изделий". Использование методов сортировка, добавление абонентов, удаление, изменение, поиск данных, фильтрация, диапазон. Среда разработки - язык программирования Delphi.
курсовая работа [761,7 K], добавлен 10.04.2011Анализ существующих разработок и выбор стратегии автоматизации делопроизводства взаимоотношении поставщиков лекарственных препаратов с аптекой. Разработка проекта базы данных аптеки "Ригла". Обоснование экономической эффективности разработки базы данных.
дипломная работа [3,0 M], добавлен 19.09.2013Возможности извлечения информации из баз данных. Программы для создания и обработки базы данных и создания пользовательского интерфейса. Обоснование выбора программных средств для реализации. Создание базы данных, интерфейса и базы данных к интерфейсу.
курсовая работа [2,9 M], добавлен 24.03.2023Этапы создания и разработки базы данных. Построение модели предметной области. Разработка даталогической и физической моделей данных, способы обработки данных о сотрудниках организации. Проектирование приложений пользователя. Создание кнопочной формы.
курсовая работа [2,1 M], добавлен 14.02.2011