Автоматизация учета товаров на АГЗС "Северного объединения по эксплуатации газового хозяйства"
Структура сети, ее характеристика и конфигурация рабочих мест. Описание информационной системы и работы автогазозаправочной станции. Сущность информационного комплекса, инфологическая модель данных и ее описание. Безопасность в корпоративных сетях.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 14.02.2010 |
Размер файла | 2,5 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Для разграничения доступа извне (из информационной системы предприятия - для внутренних пользователей и из сети Интернет - для мобильных) к рабочему месту пользователя и информирования пользователя о попытках подключения к его компьютеру, с возможностью принятия решения о блокировке или разрешении доступа необходимо использовать добавочные средства защиты.
Попытки несанкционированного доступа позволяет выявить защита информации через межсетевой экран.
Основные требования к средствам защиты информации:
- защита должна быть многоцелевой, т.е. эффективно защищать от широкого спектра вредоносных приложений;
- защита должна обеспечивать не только обнаружение, но и эффективное предотвращение атаки в любой момент времени, в том числе в процессе загрузки операционной системы;
- защита должна находиться непосредственно на компьютере пользователя, а не в самой сети соединяющей компьютеры, обнаружение атаки на сетевом уровне часто оказывается бесполезным из-за невозможности её блокирования;
- защита должна быть "высокоинтеллектуальной" и "обучаемой", способной обнаруживать сложные атаки и сводя к минимуму ложные срабатывания;
- защита должна иметь точную информацию о состоянии и конфигурации компьютера.
В таблице 4.1 представлены результаты тестирования самых известных программ Firewall а также их общая оценка.
Таблица 4.1
Продукт |
Результат |
Оценка |
|
Comodo Firewall Pro 2.4.16.174 |
9475 |
Отлично |
|
Jetico Personal Firewall 2.0.0.16 beta |
9125 |
Отлично |
|
ZoneAlarm PRO 7.0.302.000 |
8850 |
Очень хорошо |
|
Kaspersky Internet Security 6.0.2.614 |
7950 |
Очень хорошо |
|
Privatefirewall 5.0.8.11 |
7625 |
Очень хорошо |
|
Trend Micro PC-cillin Internet Security 2007 |
7500 |
Очень хорошо |
|
F-Secure Internet Security 2007 7.01.128 |
6625 |
Хорошо |
|
Outpost Firewall PRO 4.0 (1007.591.145) |
6550 |
Хорошо |
|
Lavasoft Personal Firewall 1.0.543.5722 (433) |
6500 |
Хорошо |
|
BlackICE PC Protection 3.6.cpv |
5750 |
Удовлетворительно |
|
Sunbelt Kerio Personal Firewall 4.3.268 |
4825 |
Удовлетворительно |
|
Look 'n' Stop 2.05p2 |
4800 |
Удовлетворительно |
|
Norton Personal Firewall 2006 9.1.0.33 |
4600 |
Удовлетворительно |
|
Safety.Net 3.61.0002 |
4000 |
Удовлетворительно |
|
Avira Premium Security Suite 7 build 98 |
2450 |
Неудовлетворительно |
|
Sygate Personal Firewall 5.6.2808 |
2350 |
Неудовлетворительно |
|
McAfee Internet Security Suite 2006 8.0 |
2325 |
Неудовлетворительно |
|
CA Personal Firewall 2007 3.0.0.196 |
1000 |
Очень плохо |
|
BitDefender Internet Security 10.108 |
750 |
Очень плохо |
|
Panda Antivirus + Firewall 2007 6.00.00 |
650 |
Очень плохо |
|
AVG Anti-Virus plus Firewall 7.5.431 |
500 |
Очень плохо |
|
Ashampoo FireWall Pro 1.14 |
500 |
Очень плохо |
|
Filseclab Personal Firewall 3.0.0.8686 |
500 |
Очень плохо |
|
Windows Firewall XP SP2 |
0 |
Очень плохо |
Из результатов тестирования видно, что одним из лучших сетевых экранов является Comodo Firewall Pro.
Так согласно классификации средств криптографической защиты информационных ресурсов в корпоративных они делятся на:
1. Криптосистемы с одним ключом, их часто называют традиционной, симметричной или с одним ключом. Пользователь создает открытое сообщение, элементами которого являются символы конечного алфавита. Для шифрования открытого сообщения генерируется ключ шифрования. С помощью алгоритма шифрования формируется шифрованное сообщение
Приведенная модель предусматривает, что ключ шифрования генерируется там же, где само сообщение. Однако, возможно и другое решение создания ключа - ключ шифрования создается третьей стороной (центром распределения ключей), которой доверяют оба пользователя. В данном случае за доставку ключа обоим пользователям ответственность несет третья сторона. Вообще говоря, данное решение противоречит самой сущности криптографии - обеспечение секретности передаваемой информации пользователей.
Криптосистемы с одним ключом используют принципы подстановки (замены), перестановки (транспозиции) и композиции. При подстановке отдельные символы открытого сообщения заменяются другими символами. Шифрование с применением принципа перестановки подразумевает изменение порядка следования символов в открытом сообщении. С целью повышения надежности шифрования шифрованное сообщение, полученное применением некоторого шифра, может быть еще раз зашифровано с помощью другого шифра. Говорят, что в данном случае применен композиционный подход. Следовательно, симметричные криптосистемы (с одним ключом) можно классифицировать на системы, которые используют шифры подстановки, перестановки и композиции.
2. Криптосистема с открытым ключом. Она имеет место только еесли пользователи при шифровании и дешифровании используют разные ключи KО и KЗ. Эту криптосистему называют асимметричной, с двумя ключами или с открытым ключом.
Получатель сообщения (пользователь 2) генерирует связанную пару ключей:
KО - открытый ключ, который публично доступен и, таким образом, оказывается доступным отправителю сообщения (пользователь 1);
Kз - секретный, личный ключ, который остается известным только получателю сообщения (пользователь 1).
Пользователь 1, имея ключ шифрования KО, с помощью определенного алгоритма шифрования формирует шифрованный текст.
Пользователь 2, владея секретным ключом Kс, имеет возможность выполнить обратное действие.
В этом случае пользователь 1 готовит сообщение пользователю 2 и перед отправлением шифрует это сообщение с помощью личного ключа Kз. Пользователь 2 может дешифрировать это сообщение, используя открытый ключ Kо. Так как, сообщение было зашифровано личным ключом отправителя, то оно может выступать в качестве цифровой подписи. Кроме того, в данном случае невозможно изменить сообщение без доступа к личному ключу пользователя 1, поэтому сообщение решает так же задачи идентификации отправителя и целостности данных.
Напоследок хотелось бы сказать, что посредством установки криптографических средств защиты можно достаточно надежно защитить рабочее место сотрудника организации, который непосредственно работает с информацией, имеющей особое значение для существования этой организации, от несанкционированного доступа.
4.3 Защита данных в Access
Средства защиты БД, реализованные в Access, позволяют предотвратить умышленные или случайные просмотр, изменение и удаление информации лицами, которые не имеют ответствующих прав доступа. Эти средства особенно важны при функционировании БД в сети.
В Access предусмотрены различные уровни защиты данных и администрирования доступа к ним. Возможности Access позволяют обеспечить безопасность, как самого приложения, так и файла БД. Простейшим средством защиты БД от несанкционированного доступа является пароль.
После того как пароль установлен, при каждом открытии БД будет появляться диалоговое окно, в которое требуется ввести пароль. Пользователи смогут открыть БД, только после ввода правильного пароля. Этот способ достаточно надежен, поскольку Access шифрует пароль, так что к нему нет прямого доступа при чтении файла БД. Недостаток такого способа защиты в том, что он применяется только при открытии БД. После открытия БД все объекты становятся доступными для пользователя (если не определена защита на уровне пользователей). Для БД, которая совместно используется небольшой группой пользователей или на автономном компьютере, установка пароля обычно оказывается достаточной.
Усовершенствовать защиту позволяют средства поддержки рабочих групп, ведения учетных (регистрационных) записей, задания прав владения и прав доступа. С помощью средств защиты можно указать, какие операции по обработке объектов БД разрешается выполнять пользователю или группе пользователей. О каждом пользователе или группе ведутся учетные записи с указанием прав доступа.
4.4 Защита данных в SQL Server
SQL Server 2005 имеет улучшенные в модели безопасности платформы базы данных, с намерением предоставить более точный и гибкий контроль для обеспечения безопасности данных. Значительные вложения были сделаны в большое количество функций для обеспечения высокого уровня безопасности данных вашего предприятия, включая:
· Применение политик для паролей учётных записей SQL Server в области аутентификации
· Обеспечение большей модульности дл указания разрешений на различных уровнях в области авторизации
· Разделение владельца и схемы в области управления безопасностью.
Авторизация
Новая модель безопасности SQL Server 2005 позволяет администраторам управлять разрешениями на модульном уровне и в указанной области, делая управление разрешениями проще, а также обеспечивает выполнения принципа наименьших привилегий. SQL Server 2005 позволяет указать контекст, в котором будут выполняться операторы модуля. Эта функция также работает как отличный механизм для модульного управления разрешениями.
Аутентификация
Кластеры SQL Server 2005 поддерживают аутентификацию Kerberos для виртуальных серверов SQL Server 2005. Администраторы могут указать политики типа Windows для стандартных учётных записей, так что единообразная политика применяется ко всем учётным записям домена.
Встроенное шифрование
SQL Server 2005 поддерживает шифрование внутри базы данных, полностью интегрированное с инфраструктурой управления ключами. По умолчанию, коммуникации между клиентом и сервером шифруются. Для того, чтобы концентрировать гарантии безопасности, может быть определена серверная политика, которая будет отвергать незашифрованные коммуникации.
SQL и Trustworthy Computing
Инициатива Trustworthy Computing описывает структуру, которая определяет шаги, необходимые для поддержки безопасных вычислений, также как и меры, которые помогают развертывать и поддерживать безопасную среду. Эти шаги помогают защитить конфиденциальность, целостность и доступность данных и систем в каждой фазе жизни программного продукта - от разработки до поставки и сопровождения. Для поддержки четырёх принципов инициативы Trustworthy Computing, Microsoft и команда SQL Server предприняли следующие шаги:
· Безопасный изначально. Команда разработчиков SQL Server провела несколько аудитов в области безопасности и потратила более двух месяцев на изучение компонентов SQL Server и взаимодействия между ними. Для каждой потенциальной угрозы безопасности команда провела анализ для оценки проблемы и выполнила дополнительную проектную и тестовую работу для устранения потенциальных угроз безопасности. В результате этих усилий SQL Server 2005 содержит множество новых функций безопасности сервера.
· Безопасный по умолчанию. После установки SQL Server 2005 выбирает правильный набор конфигурационных значений для всех установочных опций, гарантируя, что после установки новой системы она будет в безопасном состоянии по умолчанию.
· Безопасный в развёртывании. Microsoft подготовила материалы, помогающие организациям развёртывать SQL Server, используя правильные учётные записи и полностью понимать шаги и разрешения, требуемые для этого. Инструменты развёртывания SQL Server предоставляют информацию, необходимую для понимания решений, принимаемых во время развертывания. Обновления безопасности легко найти и установить - и, если выбрать соответствующую опцию, эти обновления будут устанавливаться автоматически. Существуют инструменты для оценки и управления рисками безопасности в рамках организации.
·
Заключение
Квалификационная работа была разработана в соответствии с техническим заданием. При разработке была проанализирована работа отдела материально-технического снабжения и АГЗС «Северного объединения по эксплуатации газового хозяйства», в результате которого была поставлена задача разработки информационной системы учета товаров на примере АГЗС «Северного объединения по эксплуатации газового хозяйства» и выбраны комплекс технических средств, пакет программ, посредствам которых была реализована данная задача.
Для достижения этой задачи были проведены: сбор и предварительная обработка необходимых статистических и технико-экономических данных, связанных с деятельностью предприятия, сбор и анализ информации по теме дипломного проекта, также был проведён обзор рынка существующих информационных систем, решающих задачи автоматизации предприятия.
Результатом данной квалификационной работы является разработка информационной системы учета товаров на примере АГЗС «Северного объединения по эксплуатации газового хозяйства». В процессе выполнения работы были составлены алгоритмы, необходимые для работы системы, был осуществлен выбор необходимых технических средств.
В процессе разработки программы выполнены требования к функциональным характеристикам, условия эксплуатации и требования к операционной и программной совместимости. Разработка информационной системы учета товаров на примере АГЗС «Северного объединения по эксплуатации газового хозяйства» и ее внедрение позволяет связать информационные потоки АГЗС и отдела ОМТС главного офиса, сократить затраты рабочего времени оператора АГЗС, затрачиваемого на заполнение бумажной отчетности, повысить точность и оперативность обмена информацией между АГЗС и главным офисом.
В разделе «Экономическая эффективность» была рассчитана оптимальность проекта.
В разделе «информационная безопасность» были рассмотрены системы защиты информации, представленные на рынке ИТ, и произведен их анализ.
Таким образом, исходя из вышесказанного, можно сделать вывод о том, что информационная система, разработанная в ходе проведения проектной части может использоваться с целью облегчения учета товаров на любой АГЗС.
Список источников информации
1. Введение в практическую эргономику. Учебное пособие. Под ред. Зинченко В.П., Моргунова Е.Б., изд. МИРЭА, 1990 г
2. Гамбург К.С. Методическое пособие по оформлению пояснительной записки и графического материала дипломных и курсовых проектов и работ. - СТИ МИСиС, 2007 г.
3. Глушаков С.В., Ломотько Д.В. Базы данных. Учебный курс. - М.: ООО «Издательство АТС», 2001 г.-504с
4. Информатика и математика для юристов. Под. ред. Х.А. Андриашина, С. Я. Казанцева. - М.: ЮНИТИ-ДАНА, Закон и право, 2001. - 308 с.
5. И. Б. Львов, Г. Г. Казеева, И. А. Морев Информатика. Владивосток. 1999-2001 гг. - 260 с.
6. Исследование операций в экономике. Под ред. проф. Н.Ш. Кремера. - М.: Банки и биржи, ЮНИТИ, 1999. - 407 с.
7. Колесник А.П. Компьютерные системы в управлении финансами. - М.: «Финансы и статистика»,2002 г.
8. Кузнецов С.Д. СУБД (системы управления базами данных) и файловые системы.- М: Майор, 2001 г.
9. Левин В.К. Защита информации в информационно-вычислительных cистемах и сетях // Программирование. - 2001 г. - N5. -354 с.
10. Проектирование баз данных СУБД Microsoft Access: Учеб. пособие для вузов / Гринченко Н. Н., Гусев Е. В., Макаров Н. П. и др. -- М.: Горячая линия-Телеком, 2004. -- 240 с.
11. С.Н. Новиков. Защита информации в сетях связи с гарантированным качеством обслуживания. Новосибирск. 2003. - 480 с.
12. www.citforum.ru/database/mssql/overview/
13. www.citforum.ru/operating_systems/windows.shtml
14. www.kunegin.narod.ru/ref6/lan/4.htm
15. www.la2-ua.clan.su/forum/11-22-1
16. www.netnsk.ru/publica/inet/mbr_05.htm
17. www.opersys.ru
18. www.referatzakaz.ru/Predmet/informatika/9.htm
19. www.sider.home.nov.ru/book/side3
20. www.windxp.com.ru
Приложение 1
Программный код:
Клиентское приложение на АГЗС:
Главный модуль:
'Dim Nempl As Integer
'Public Function Ndep_()
' MsgBox (Ndep)
' Ndep_ = Ndep
'End Function
' Возвращает название серверной базы
Public Function SDB()
SDB = rz("select Сервер from Константы") '"[\\C:\gaz\gazserver.mdb]."
End Function
' Возвращает код этой заправки
Public Function KZ()
KZ = rz("select КодЗаправки from Константы")
End Function
' Посылает на сервер остатки
Public Function SendOstatki()
DoCmd.RunSQL "insert into " & SDB & "Остатки(КодЗаправки, КодНоменклатуры, Количество, Дата) select ЗапросОстатки.K1,ЗапросОстатки.N,ЗапросОстатки.s,ЗапросОстатки.d from ЗапросОстатки"
End Function
' Посылает на сервер обороты
Public Function SendOboroti()
' Записываем обороты в локальную таблицу
DoCmd.RunSQL "INSERT INTO Обороты ( Дата, КодНоменклатуры, КодКонтрагента, Количество, Сумма, КодЗаправки )" & _
"SELECT DateValue(Продажа.Дата) AS Выражение1, Продажа.КодНоменклатуры, Продажа.КодКонтрагента, Sum(Продажа.Количество) AS [Sum-Количество], Sum(Продажа.Стоимость) AS [Sum-Стоимость], Константы.КодЗаправки " & _
"FROM Продажа, Константы " & _
"WHERE (((Продажа.Дата)> all(select max(Начало) from Смены)))" & _
"GROUP BY DateValue(Продажа.Дата), Продажа.КодНоменклатуры, Продажа.КодКонтрагента, Константы.КодЗаправки"
' Записываем обороты в таблицу сервера
DoCmd.RunSQL "INSERT INTO " & SDB() & "Обороты ( Дата, КодНоменклатуры, КодКонтрагента, Количество, Сумма, КодЗаправки )" & _
"SELECT DateValue(Продажа.Дата) AS Выражение1, Продажа.КодНоменклатуры, Продажа.КодКонтрагента, Sum(Продажа.Количество) AS [Sum-Количество], Sum(Продажа.Стоимость) AS [Sum-Стоимость], Константы.КодЗаправки " & _
"FROM Продажа, Константы " & _
"WHERE (((Продажа.Дата)> all(select max(Начало) from Смены)))" & _
"GROUP BY DateValue(Продажа.Дата), Продажа.КодНоменклатуры, Продажа.КодКонтрагента, Константы.КодЗаправки"
' Записываем обороты по клиенту на сервер
DoCmd.RunSQL "INSERT INTO " & SDB() & "РасчетыКонтрагенты ( Дата, КодКонтрагента, Сумма, КодРайона )" & _
"SELECT DateValue(Продажа.Дата) AS Выражение1, Продажа.КодКонтрагента, Sum(Продажа.Стоимость)*(-1) AS [Sum-Стоимость], Константы.КодЗаправки " & _
"FROM Продажа, Константы " & _
"WHERE (((Продажа.Дата)> all(select max(Начало) from Смены)))" & _
"GROUP BY DateValue(Продажа.Дата), Продажа.КодКонтрагента, Константы.КодЗаправки"
End Function
' Посылает на сервер все обороты
Public Function SendAllOboroti()
' Удаляем все обороты из локальной таблицы
DoCmd.RunSQL "Delete from Обороты"
' Записываем все обороты в локальную таблицу
DoCmd.RunSQL "INSERT INTO Обороты ( Дата, КодНоменклатуры, КодКонтрагента, Количество, Сумма, КодЗаправки )" & _
"SELECT DateValue(Продажа.Дата) AS Выражение1, Продажа.КодНоменклатуры, Продажа.КодКонтрагента, Sum(Продажа.Количество) AS [Sum-Количество], Sum(Продажа.Стоимость) AS [Sum-Стоимость], Константы.КодЗаправки " & _
"FROM Продажа , Константы " & _
"GROUP BY DateValue(Продажа.Дата), Продажа.КодНоменклатуры, Продажа.КодКонтрагента, Константы.КодЗаправки"
' Удаляем все обороты из таблицы сервера по этой заправке
DoCmd.RunSQL "Delete * from " & SDB() & "Обороты where КодЗаправки=" & KZ()
' Записываем все обороты в таблицу сервера
DoCmd.RunSQL "INSERT INTO " & SDB() & "Обороты ( Дата, КодНоменклатуры, КодКонтрагента, Количество, Сумма, КодЗаправки )" & _
"SELECT DateValue(Продажа.Дата) AS Выражение1, Продажа.КодНоменклатуры, Продажа.КодКонтрагента, Sum(Продажа.Количество) AS [Sum-Количество], Sum(Продажа.Стоимость) AS [Sum-Стоимость], Константы.КодЗаправки " & _
"FROM Продажа, Константы " & _
"GROUP BY DateValue(Продажа.Дата), Продажа.КодНоменклатуры, Продажа.КодКонтрагента, Константы.КодЗаправки"
End Function
' Универсальная функция: возращает результат работы запроса (первое поле, первая запись)
Public Function rz(strSQL As String)
Dim rstData As DAO.Recordset
Set db = CurrentDb
' открываем рекордсет
Set rstData = db.OpenRecordset(strSQL)
' определяем количество записей в рекордсете
rstData.MoveLast ' перемещение в конец рекордсета
rstData.MoveFirst ' перемещение в начало рекордсета
rz = rstData.Fields(0)
rstData.Close
End Function
'Получает справочники номенклатура и контрагенты
Public Function GetInfo()
' Удаляем всю номенклатуру
DoCmd.RunSQL "Delete from Номенклатура"
' Записываем номенклатуру
DoCmd.RunSQL "INSERT INTO Номенклатура Select * from " & SDB() & "Номенклатура"
' Удаляем всех Контрагентов
DoCmd.RunSQL "Delete from Контрагенты"
' Записываем Контрагентов
DoCmd.RunSQL "INSERT INTO Контрагенты Select * from " & SDB() & "Контрагенты"
End Function
'Проверяет необходимость заказа газа
Public Function Proverka()
Dim pr As Variant
' вычисляем продажи газа в среднем за посленюю неделю
pr = rz("SELECT Sum(Продажа.Количество)/7 AS [SumK] FROM Продажа WHERE (((Продажа.Дата)>=Date()-7)) and (((Продажа.КодНоменклатуры)=1))")
' если продаж нет, то присваиваем 0
If (IsNull(pr)) Then
pr = 0
End If
' вычисляем остатки газа
Ost = rz(" SELECT sum(s1) FROM (SELECT sum(Приход.Количество) as s1 FROM Приход WHERE (((Приход.КодНоменклатуры)=1)) union" & _
" SELECT sum(Количество)*-1 as s1 FROM Продажа WHERE (((КодНоменклатуры)=1)) ) AS [Alias1]")
' формируем строку сообщения
Str1 = "Продажи за день в среднем: " & Round(pr, 2) & vbCrLf & "Остаток на данный момент: " & Round(Ost, 2) & vbCrLf
' если остатки меньше средей продажи то выдаем предупреждение
If (pr > Ost) Then
MsgBox Str1 & "Внимание! Необходимо пополнить запасы"
Else
MsgBox Str1 & "У Вас достаточно запасов"
End If
End Function
Форма авторизация
Нажатие кнопки вход
Private Sub Кнопка4_Click()
Dim db As Database
Dim rstData As DAO.Recordset
Dim strSQL As String
' Находим имя и пароль в таблице
x = DLookup("КодСотрудника", "Сотрудники", "(Фамилия=forms![Авторизация]!Поле1)and(Пароль=forms![Авторизация]!Поле2)")
If (x > 0) Then
Nempl = x
DoCmd.OpenForm "Продажа", , , ""
DoCmd.GoToRecord , , acNewRec
Forms!Продажа!КодСотрудника.DefaultValue = x
' Добавляем новую смену
DoCmd.RunSQL "insert into смены(КодСотрудника,Начало) values(" & x & ",'" & Now() & "')"
Set db = CurrentDb
' задаем текст запроса
strSQL = "SELECT max(КодСмены) from Смены"
' открываем рекордсет
Set rstData = db.OpenRecordset(strSQL)
' определяем количество записей в рекордсете
rstData.MoveLast
rstData.MoveFirst
y = rstData.Fields(0)
rstData.Close
Forms!Продажа!КодСмены.DefaultValue = y
DoCmd.Close acForm, "Авторизация", acSaveYes
Else
MsgBox ("Ошибка авторизации!Повторите ввод имени и пароля")
End If
End Sub
Форма календарь
Option Compare Database
' переменная для ссылки на активное поле ввода
Private objActive As Control
Private Sub Form_Load()
' сохранить ссылку на активное поле
Set objActive = Screen.ActiveControl
End Sub
Private Sub Form_Unload(Cancel As Integer)
' при выгрузке форму уничтожить ссылку
Set objActive = Nothing
End Sub
Private Sub Кнопка1_Click()
If Not objActive Is Nothing Then
' передать значение указанному полю ввода
objActive = Calendar0
End If
DoCmd.Close
End Sub
Форма материальный отчет
Option Compare Database
Private Sub Кнопка7_Click()
On Error GoTo Err_Кнопка7_Click
Dim stDocName As String
stDocName = ChrW(1054) & ChrW(1090) & ChrW(1095) & ChrW(1077) & ChrW(1090) & ChrW(67) & ChrW(1056) & ChrW(1072) & ChrW(1079) & ChrW(1073) & ChrW(1080) & ChrW(1074) & ChrW(1082) & ChrW(1086) & ChrW(1081) & ChrW(1055) & ChrW(1086) & ChrW(1050) & ChrW(1083) & ChrW(1080) & ChrW(1077) & ChrW(1085) & ChrW(1090) & ChrW(1072) & ChrW(1084)
DoCmd.OpenReport stDocName, acPreview
Exit_Кнопка7_Click:
Exit Sub
Err_Кнопка7_Click:
MsgBox Err.Description
Resume Exit_Кнопка7_Click
End Sub
Private Sub Кнопка12_Click()
On Error GoTo Err_Кнопка12_Click
Dim stDocName As String
stDocName = ChrW(1054) & ChrW(1090) & ChrW(1095) & ChrW(1077) & ChrW(1090) & ChrW(1055) & ChrW(1088) & ChrW(1086) & ChrW(1076) & ChrW(1072) & ChrW(1078) & ChrW(1072) & ChrW(1054) & ChrW(1087) & ChrW(1077) & ChrW(1088) & ChrW(1072) & ChrW(1090) & ChrW(1086) & ChrW(1088) & ChrW(1072) & ChrW(1084) & ChrW(1080)
DoCmd.OpenReport stDocName, acPreview
Exit_Кнопка12_Click:
Exit Sub
Err_Кнопка12_Click:
MsgBox Err.Description
Resume Exit_Кнопка12_Click
End Sub
Private Sub Кнопка10_Click()
' сделать активным поле, в которое нужно ввести дату
Поле1.SetFocus
' открыть форму ввода даты
DoCmd.OpenForm "Календарь"
End Sub
Private Sub Кнопка13_Click()
On Error GoTo Err_Кнопка13_Click
Dim stDocName As String
stDocName = ChrW(1054) & ChrW(1090) & ChrW(1095) & ChrW(1077) & ChrW(1090) & ChrW(1052) & ChrW(1072) & ChrW(1090) & ChrW(1054) & ChrW(1090) & ChrW(1095) & ChrW(1077) & ChrW(1090)
DoCmd.OpenReport stDocName, acPreview
Exit_Кнопка13_Click:
Exit Sub
Err_Кнопка13_Click:
MsgBox Err.Description
Resume Exit_Кнопка13_Click
End Sub
Private Sub Кнопка14_Click()
' сделать активным поле, в которое нужно ввести дату
Поле2.SetFocus
' открыть форму ввода даты
DoCmd.OpenForm "Календарь"
End Sub
Форма продажа
Option Compare Database
' Закрытие смены и отправка информации на сервер
Private Sub Кнопка16_Click()
DoCmd.RunSQL "Update Смены set Окончание = '" & Now() & "' where КодСмены = (select max(КодСмены) from Смены)"
' Посылаем остатки на этот день
Module1.SendOstatki
' Записываем и посылаем обороты
Module1.SendOboroti
' Закрываем текущую форму
Proverka ' проверяем запасы
DoCmd.Close acForm, "Продажа", acSaveYes
End Sub
Private Sub Кнопка20_Click()
Стоимость = [Количество] * [Поле18]
End Sub
Private Sub Кнопка26_Click()
On Error GoTo Err_Кнопка26_Click
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
Exit_Кнопка26_Click:
Exit Sub
Err_Кнопка26_Click:
MsgBox Err.Description
Resume Exit_Кнопка26_Click
End Sub
Private Sub Кнопка38_Click()
[Количество] = [Стоимость] / [Поле18]
End Sub
' устанавливает поле Безнал в соответствии со значением контрагента
Private Sub ПолеСоСписком14_AfterUpdate()
[Безнал] = [КодКонтрагента] <> 1
End Sub
Private Sub Кнопка39_Click()
On Error GoTo Err_Кнопка39_Click
DoCmd.GoToRecord , , acNewRec
Exit_Кнопка39_Click:
Exit Sub
Err_Кнопка39_Click:
MsgBox Err.Description
Resume Exit_Кнопка39_Click
End Sub
Private Sub Кнопка40_Click()
On Error GoTo Err_Кнопка40_Click
DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70
DoCmd.DoMenuItem acFormBar, acEditMenu, 6, , acMenuVer70
Exit_Кнопка40_Click:
Exit Sub
Err_Кнопка40_Click:
MsgBox Err.Description
Resume Exit_Кнопка40_Click
End Sub
Форма Продажа операторами
Option Compare Database
Private Sub Кнопка7_Click()
On Error GoTo Err_Кнопка7_Click
Dim stDocName As String
stDocName = ChrW(1054) & ChrW(1090) & ChrW(1095) & ChrW(1077) & ChrW(1090) & ChrW(67) & ChrW(1056) & ChrW(1072) & ChrW(1079) & ChrW(1073) & ChrW(1080) & ChrW(1074) & ChrW(1082) & ChrW(1086) & ChrW(1081) & ChrW(1055) & ChrW(1086) & ChrW(1050) & ChrW(1083) & ChrW(1080) & ChrW(1077) & ChrW(1085) & ChrW(1090) & ChrW(1072) & ChrW(1084)
DoCmd.OpenReport stDocName, acPreview
Exit_Кнопка7_Click:
Exit Sub
Err_Кнопка7_Click:
MsgBox Err.Description
Resume Exit_Кнопка7_Click
End Sub
Private Sub Кнопка10_Click()
' сделать активным поле, в которое нужно ввести дату
Поле1.SetFocus
' открыть форму ввода даты
DoCmd.OpenForm "Календарь"
End Sub
Private Sub Кнопка12_Click()
On Error GoTo Err_Кнопка12_Click
Dim stDocName As String
stDocName = ChrW(1054) & ChrW(1090) & ChrW(1095) & ChrW(1077) & ChrW(1090) & ChrW(1055) & ChrW(1088) & ChrW(1086) & ChrW(1076) & ChrW(1072) & ChrW(1078) & ChrW(1072) & ChrW(1054) & ChrW(1087) & ChrW(1077) & ChrW(1088) & ChrW(1072) & ChrW(1090) & ChrW(1086) & ChrW(1088) & ChrW(1072) & ChrW(1084) & ChrW(1080)
DoCmd.OpenReport stDocName, acPreview
Exit_Кнопка12_Click:
Exit Sub
Err_Кнопка12_Click:
MsgBox Err.Description
Resume Exit_Кнопка12_Click
End Sub
Private Sub Кнопка13_Click()
' сделать активным поле, в которое нужно ввести дату
Поле2.SetFocus
' открыть форму ввода даты
DoCmd.OpenForm "Календарь"
End Sub
Форма реализация газа
Option Compare Database
Private Sub Кнопка2_Click()
On Error GoTo Err_Кнопка2_Click
Dim stDocName As String
stDocName = ChrW(1047) & ChrW(1072) & ChrW(1087) & ChrW(1088) & ChrW(1086) & ChrW(1089) & ChrW(1057) & ChrW(1084) & ChrW(1077) & ChrW(1085) & ChrW(1085) & ChrW(1099) & ChrW(1081) & ChrW(1054) & ChrW(1090) & ChrW(1095) & ChrW(1077) & ChrW(1090) & ChrW(50)
DoCmd.OpenReport stDocName, acPreview
Exit_Кнопка2_Click:
Exit Sub
Err_Кнопка2_Click:
MsgBox Err.Description
Resume Exit_Кнопка2_Click
End Sub
Private Sub Кнопка3_Click()
On Error GoTo Err_Кнопка3_Click
Dim stDocName As String
stDocName = ChrW(1054) & ChrW(1090) & ChrW(1095) & ChrW(1077) & ChrW(1090) & ChrW(1056) & ChrW(1077) & ChrW(1072) & ChrW(1083) & ChrW(1080) & ChrW(1079) & ChrW(1072) & ChrW(1094) & ChrW(1080) & ChrW(1103) & ChrW(1043) & ChrW(1072) & ChrW(1079) & ChrW(1072) & ChrW(1054) & ChrW(1073) & ChrW(1097) & ChrW(1080) & ChrW(1081)
DoCmd.OpenReport stDocName, acPreview
Exit_Кнопка3_Click:
Exit Sub
Err_Кнопка3_Click:
MsgBox Err.Description
Resume Exit_Кнопка3_Click
End Sub
Private Sub Кнопка4_Click()
On Error GoTo Err_Кнопка4_Click
Dim stDocName As String
stDocName = ChrW(1054) & ChrW(1090) & ChrW(1095) & ChrW(1077) & ChrW(1090) & ChrW(1056) & ChrW(1077) & ChrW(1083) & ChrW(1080) & ChrW(1079) & ChrW(1072) & ChrW(1094) & ChrW(1080) & ChrW(1103) & ChrW(1043) & ChrW(1072) & ChrW(1079) & ChrW(1072)
DoCmd.OpenReport stDocName, acPreview
Exit_Кнопка4_Click:
Exit Sub
Err_Кнопка4_Click:
MsgBox Err.Description
Resume Exit_Кнопка4_Click
End Sub
Форма реализация газа с разбивкой по контрагентам
Option Compare Database
Private Sub Кнопка10_Click()
' сделать активным поле, в которое нужно ввести дату
Поле1.SetFocus
' открыть форму ввода даты
DoCmd.OpenForm "Календарь"
End Sub
Private Sub Кнопка13_Click()
' сделать активным поле, в которое нужно ввести дату
Поле2.SetFocus
' открыть форму ввода даты
DoCmd.OpenForm "Календарь"
End Sub
Private Sub Кнопка7_Click()
On Error GoTo Err_Кнопка7_Click
Dim stDocName As String
stDocName = ChrW(1054) & ChrW(1090) & ChrW(1095) & ChrW(1077) & ChrW(1090) & ChrW(67) & ChrW(1056) & ChrW(1072) & ChrW(1079) & ChrW(1073) & ChrW(1080) & ChrW(1074) & ChrW(1082) & ChrW(1086) & ChrW(1081) & ChrW(1055) & ChrW(1086) & ChrW(1050) & ChrW(1083) & ChrW(1080) & ChrW(1077) & ChrW(1085) & ChrW(1090) & ChrW(1072) & ChrW(1084)
DoCmd.OpenReport stDocName, acPreview
Exit_Кнопка7_Click:
Exit Sub
Err_Кнопка7_Click:
MsgBox Err.Description
Resume Exit_Кнопка7_Click
End Sub
Форма сменный отчет
Option Compare Database
Private Sub Кнопка2_Click()
On Error GoTo Err_Кнопка2_Click
Dim stDocName As String
stDocName = ChrW(1047) & ChrW(1072) & ChrW(1087) & ChrW(1088) & ChrW(1086) & ChrW(1089) & ChrW(1057) & ChrW(1084) & ChrW(1077) & ChrW(1085) & ChrW(1085) & ChrW(1099) & ChrW(1081) & ChrW(1054) & ChrW(1090) & ChrW(1095) & ChrW(1077) & ChrW(1090) & ChrW(50)
DoCmd.OpenReport stDocName, acPreview
Exit_Кнопка2_Click:
Exit Sub
Err_Кнопка2_Click:
MsgBox Err.Description
Resume Exit_Кнопка2_Click
End Sub
Состояние склада
Option Compare Database
Private Sub Кнопка7_Click()
On Error GoTo Err_Кнопка7_Click
Dim stDocName As String
DoCmd.OpenReport [ОтчетСостояниеСклада], acPreview
Exit_Кнопка7_Click:
Exit Sub
Err_Кнопка7_Click:
MsgBox Err.Description
Resume Exit_Кнопка7_Click
End Sub
Private Sub Кнопка10_Click()
' сделать активным поле, в которое нужно ввести дату
Поле1.SetFocus
' открыть форму ввода даты
DoCmd.OpenForm "Календарь"
End Sub
Private Sub Кнопка8_Click()
On Error GoTo Err_Кнопка8_Click
Dim stDocName As String
stDocName = ChrW(1054) & ChrW(1090) & ChrW(1095) & ChrW(1077) & ChrW(1090) & ChrW(1057) & ChrW(1086) & ChrW(1089) & ChrW(1090) & ChrW(1086) & ChrW(1103) & ChrW(1085) & ChrW(1080) & ChrW(1077) & ChrW(1057) & ChrW(1082) & ChrW(1083) & ChrW(1072) & ChrW(1076) & ChrW(1072)
DoCmd.OpenReport stDocName, acPreview
Exit_Кнопка8_Click:
Exit Sub
Err_Кнопка8_Click:
MsgBox Err.Description
Resume Exit_Кнопка8_Click
End Sub
Серверное приложение главного офиса:
Главная форма:
Option Compare Database
Private Sub Кнопка0_Click()
On Error GoTo Err_Кнопка0_Click
DoCmd.RunSQL "insert"
Exit_Кнопка0_Click:
Exit Sub
Err_Кнопка0_Click:
MsgBox Err.Description
Resume Exit_Кнопка0_Click
End Sub
Private Sub Кнопка13_Click()
On Error GoTo Err_Кнопка13_Click
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = ChrW(1054) & ChrW(1089) & ChrW(1090) & ChrW(1072) & ChrW(1090) & ChrW(1082) & ChrW(1080)
DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_Кнопка13_Click:
Exit Sub
Err_Кнопка13_Click:
MsgBox Err.Description
Resume Exit_Кнопка13_Click
End Sub
Private Sub Кнопка14_Click()
On Error GoTo Err_Кнопка14_Click
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = ChrW(1044) & ChrW(1086) & ChrW(1083) & ChrW(1078) & ChrW(1085) & ChrW(1080) & ChrW(1082) & ChrW(1080)
DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_Кнопка14_Click:
Exit Sub
Err_Кнопка14_Click:
MsgBox Err.Description
Resume Exit_Кнопка14_Click
End Sub
Private Sub Кнопка15_Click()
On Error GoTo Err_Кнопка15_Click
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = ChrW(1054) & ChrW(1057) & ChrW(1042)
DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_Кнопка15_Click:
Exit Sub
Err_Кнопка15_Click:
MsgBox Err.Description
Resume Exit_Кнопка15_Click
End Sub
Private Sub Кнопка20_Click()
On Error GoTo Err_Кнопка20_Click
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = ChrW(1054) & ChrW(1089) & ChrW(1090) & ChrW(1072) & ChrW(1090) & ChrW(1082) & ChrW(1080)
DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_Кнопка20_Click:
Exit Sub
Err_Кнопка20_Click:
MsgBox Err.Description
Resume Exit_Кнопка20_Click
End Sub
Private Sub Кнопка21_Click()
On Error GoTo Err_Кнопка21_Click
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = ChrW(1044) & ChrW(1086) & ChrW(1083) & ChrW(1078) & ChrW(1085) & ChrW(1080) & ChrW(1082) & ChrW(1080)
DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_Кнопка21_Click:
Exit Sub
Err_Кнопка21_Click:
MsgBox Err.Description
Resume Exit_Кнопка21_Click
End Sub
Private Sub Кнопка22_Click()
On Error GoTo Err_Кнопка22_Click
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = ChrW(1054) & ChrW(1057) & ChrW(1042)
DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_Кнопка22_Click:
Exit Sub
Err_Кнопка22_Click:
MsgBox Err.Description
Resume Exit_Кнопка22_Click
End Sub
Private Sub Кнопка28_Click()
On Error GoTo Err_Кнопка28_Click
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = ChrW(1054) & ChrW(1089) & ChrW(1090) & ChrW(1072) & ChrW(1090) & ChrW(1082) & ChrW(1080)
DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_Кнопка28_Click:
Exit Sub
Err_Кнопка28_Click:
MsgBox Err.Description
Resume Exit_Кнопка28_Click
End Sub
Private Sub Кнопка29_Click()
On Error GoTo Err_Кнопка29_Click
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = ChrW(1054) & ChrW(1087) & ChrW(1083) & ChrW(1072) & ChrW(1090) & ChrW(1099) & ChrW(32) & ChrW(1082) & ChrW(1086) & ChrW(1085) & ChrW(1090) & ChrW(1088) & ChrW(1072) & ChrW(1075) & ChrW(1077) & ChrW(1085) & ChrW(1090) & ChrW(1086) & ChrW(1074)
DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_Кнопка29_Click:
Exit Sub
Err_Кнопка29_Click:
MsgBox Err.Description
Resume Exit_Кнопка29_Click
End Sub
Private Sub Кнопка34_Click()
On Error GoTo Err_Кнопка34_Click
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = ChrW(1044) & ChrW(1086) & ChrW(1083) & ChrW(1078) & ChrW(1085) & ChrW(1080) & ChrW(1082) & ChrW(1080)
DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_Кнопка34_Click:
Exit Sub
Err_Кнопка34_Click:
MsgBox Err.Description
Resume Exit_Кнопка34_Click
End Sub
Private Sub Кнопка35_Click()
On Error GoTo Err_Кнопка35_Click
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = ChrW(1054) & ChrW(1057) & ChrW(1042)
DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_Кнопка35_Click:
Exit Sub
Err_Кнопка35_Click:
MsgBox Err.Description
Resume Exit_Кнопка35_Click
End Sub
Форма должники:
Option Compare Database
Private Sub Кнопка7_Click()
On Error GoTo Err_Кнопка7_Click
Dim stDocName As String
DoCmd.OpenReport [ОтчетСостояниеСклада], acPreview
Exit_Кнопка7_Click:
Exit Sub
Err_Кнопка7_Click:
MsgBox Err.Description
Resume Exit_Кнопка7_Click
End Sub
Private Sub Кнопка8_Click()
On Error GoTo Err_Кнопка8_Click
Dim stDocName As String
stDocName = ChrW(1054) & ChrW(1090) & ChrW(1095) & ChrW(1077) & ChrW(1090) & ChrW(1057) & ChrW(1086) & ChrW(1089) & ChrW(1090) & ChrW(1086) & ChrW(1103) & ChrW(1085) & ChrW(1080) & ChrW(1077) & ChrW(1057) & ChrW(1082) & ChrW(1083) & ChrW(1072) & ChrW(1076) & ChrW(1072)
DoCmd.OpenReport stDocName, acPreview
Exit_Кнопка8_Click:
Exit Sub
Err_Кнопка8_Click:
MsgBox Err.Description
Resume Exit_Кнопка8_Click
End Sub
Private Sub Кнопка5_Click()
' сделать активным поле, в которое нужно ввести дату
Поле1.SetFocus
' открыть форму ввода даты
DoCmd.OpenForm "Календарь"
End Sub
Private Sub Кнопка9_Click()
On Error GoTo Err_Кнопка9_Click
Dim stDocName As String
stDocName = ChrW(1047) & ChrW(1072) & ChrW(1087) & ChrW(1088) & ChrW(1086) & ChrW(1089) & ChrW(1044) & ChrW(1086) & ChrW(1083) & ChrW(1078) & ChrW(1085) & ChrW(1080) & ChrW(1082) & ChrW(1080)
DoCmd.OpenReport stDocName, acPreview
Exit_Кнопка9_Click:
Exit Sub
Err_Кнопка9_Click:
MsgBox Err.Description
Resume Exit_Кнопка9_Click
End Sub
Форма ОСВ
Option Compare Database
Private Sub Calendar4_Updated(Code As Integer)
MsgBox Format(Calendar4.Object.Value, "dd/mm/yy")
ДатаОСВ = Format(Calendar4.Object.Value, "dd/mm/yy")
End Sub
' Изменяет формат отображения даты
Private Sub Form_Open(Cancel As Integer)
Form_ОСВ!ДатаОСВ.Format = "mmmm yyyy"
End Sub
Private Sub Кнопка3_Click()
On Error GoTo Err_Кнопка3_Click
Dim stDocName As String
stDocName = ChrW(1079) & ChrW(1072) & ChrW(1087) & ChrW(1088) & ChrW(1086) & ChrW(1089) & ChrW(1054) & ChrW(1057) & ChrW(1042) & ChrW(95) & ChrW(1087) & ChrW(1077) & ChrW(1088) & ChrW(1077) & ChrW(1082) & ChrW(1088) & ChrW(1077) & ChrW(1089) & ChrW(1090) & ChrW(1085) & ChrW(1099) & ChrW(1081)
DoCmd.OpenReport stDocName, acPreview
Exit_Кнопка3_Click:
Exit Sub
Err_Кнопка3_Click:
MsgBox Err.Description
Resume Exit_Кнопка3_Click
End Sub
' кнопка вызова формы с календарём
Private Sub Кнопка5_Click()
' сделать активным поле, в которое нужно ввести дату
ДатаОСВ.SetFocus
' открыть форму ввода даты
DoCmd.OpenForm "Календарь"
End Sub
Форма остатки
Option Compare Database
Private Sub Кнопка7_Click()
On Error GoTo Err_Кнопка7_Click
Dim stDocName As String
DoCmd.OpenReport [ОтчетСостояниеСклада], acPreview
Exit_Кнопка7_Click:
Exit Sub
Err_Кнопка7_Click:
MsgBox Err.Description
Resume Exit_Кнопка7_Click
End Sub
Private Sub Кнопка8_Click()
On Error GoTo Err_Кнопка8_Click
Dim stDocName As String
stDocName = ChrW(1054) & ChrW(1090) & ChrW(1095) & ChrW(1077) & ChrW(1090) & ChrW(1057) & ChrW(1086) & ChrW(1089) & ChrW(1090) & ChrW(1086) & ChrW(1103) & ChrW(1085) & ChrW(1080) & ChrW(1077) & ChrW(1057) & ChrW(1082) & ChrW(1083) & ChrW(1072) & ChrW(1076) & ChrW(1072)
DoCmd.OpenReport stDocName, acPreview
Exit_Кнопка8_Click:
Exit Sub
Err_Кнопка8_Click:
MsgBox Err.Description
Resume Exit_Кнопка8_Click
End Sub
Private Sub Кнопка10_Click()
On Error GoTo Err_Кнопка10_Click
Dim stDocName As String
stDocName = [ЗапросОстатки]
DoCmd.OpenReport stDocName, acPreview
Exit_Кнопка10_Click:
Exit Sub
Err_Кнопка10_Click:
MsgBox Err.Description
Resume Exit_Кнопка10_Click
End Sub
Private Sub Кнопка11_Click()
On Error GoTo Err_Кнопка11_Click
Dim stDocName As String
stDocName = ChrW(1047) & ChrW(1072) & ChrW(1087) & ChrW(1088) & ChrW(1086) & ChrW(1089) & ChrW(1054) & ChrW(1089) & ChrW(1090) & ChrW(1072) & ChrW(1090) & ChrW(1082) & ChrW(1080)
DoCmd.OpenReport stDocName, acPreview
Exit_Кнопка11_Click:
Exit Sub
Err_Кнопка11_Click:
MsgBox Err.Description
Resume Exit_Кнопка11_Click
End Sub
Private Sub Кнопка12_Click()
On Error GoTo Err_Кнопка12_Click
Dim stDocName As String
stDocName = ChrW(1044) & ChrW(1080) & ChrW(1072) & ChrW(1075) & ChrW(1088) & ChrW(1072) & ChrW(1084) & ChrW(1084) & ChrW(1072) & ChrW(1054) & ChrW(1089) & ChrW(1090) & ChrW(1072) & ChrW(1090) & ChrW(1082) & ChrW(1080)
DoCmd.OpenReport stDocName, acPreview
Exit_Кнопка12_Click:
Exit Sub
Err_Кнопка12_Click:
MsgBox Err.Description
Resume Exit_Кнопка12_Click
End Sub
Private Sub Кнопка5_Click()
' сделать активным поле, в которое нужно ввести дату
Поле1.SetFocus
' открыть форму ввода даты
DoCmd.OpenForm "Календарь"
End Sub
Приложение 2
Запросы:
Клиентское приложение:
Выручка за смену по товарам:
SELECT DateValue(Продажа.Дата) AS Выражение1, Продажа.КодНоменклатуры, Sum(Продажа.Количество) AS [Sum-Количество], Sum(Продажа.Стоимость) AS [Sum-Стоимость], Константы.КодЗаправки
FROM Продажа, Константы
WHERE (((Продажа.Дата)>All (select Начало from Смены Order by Начало desc)))
GROUP BY DateValue(Продажа.Дата), Продажа.КодНоменклатуры, Константы.КодЗаправки;
Выручка по дням по товарам:
SELECT DateValue(Продажа.Дата) AS Выражение1, Номенклатура.Наименование, Sum(Продажа.Количество) AS [Sum-Количество], Sum(Продажа.Стоимость) AS [Sum-Стоимость]
FROM Номенклатура INNER JOIN Продажа ON Номенклатура.КодНоменклатуры=Продажа.КодНоменклатуры
GROUP BY DateValue(Продажа.Дата), Номенклатура.Наименование;
Запрос с разбивкой поклиентам:
SELECT Контрагенты.Наименование, Sum(Продажа.Количество) AS Доза, Sum(Продажа.Стоимость) AS Сумма, Count(Продажа.КодКонтрагента) AS [Кол-во]
FROM Номенклатура INNER JOIN (Контрагенты INNER JOIN Продажа ON Контрагенты.КодКонтрагента = Продажа.КодКонтрагента) ON Номенклатура.КодНоменклатуры = Продажа.КодНоменклатуры
WHERE (((Продажа.Дата)>[Forms]![РеализацияГазаСРазбивкойПоКлиентам]![Поле1] And (Продажа.Дата)<[Forms]![РеализацияГазаСРазбивкойПоКлиентам]![Поле2]) AND ((Продажа.КодНоменклатуры)=1))
GROUP BY Контрагенты.Наименование;
МатОтчет:
SELECT ЗапросМатОтчетОстатокНач.Наименование, ЗапросМатОтчетОстатокНач.[Остаток(нач)], ЗапросМатОтчетПриход.ПриходОб, ЗапросМатОтчетПродажа.ПродажаОб, ЗапросМатОтчетКон.[Остаток(кон)]
FROM ((ЗапросМатОтчетПриход RIGHT JOIN ЗапросМатОтчетОстатокНач ON ЗапросМатОтчетПриход.Наименование = ЗапросМатОтчетОстатокНач.Наименование) LEFT JOIN ЗапросМатОтчетПродажа ON ЗапросМатОтчетОстатокНач.Наименование = ЗапросМатОтчетПродажа.Наименование) LEFT JOIN ЗапросМатОтчетКон ON ЗапросМатОтчетОстатокНач.Наименование = ЗапросМатОтчетКон.Наименование;
МатОтчет1:
SELECT Номенклатура.Наименование, Sum(Приход.Количество) AS нач
FROM Номенклатура LEFT JOIN Приход ON Номенклатура.КодНоменклатуры=Приход.КодНоменклатуры
WHERE (((Приход.ДатаПрихода)<Forms!МатериальныйОтчет!Поле1))
GROUP BY Номенклатура.Наименование;
МатОтчет2:
SELECT Номенклатура.Наименование, Sum(Продажа.Количество)*(-1) AS нач
FROM Номенклатура LEFT JOIN Продажа ON Номенклатура.КодНоменклатуры=Продажа.КодНоменклатуры
WHERE (((Продажа.Дата)<Forms!МатериальныйОтчет!Поле1))
GROUP BY Номенклатура.Наименование;
МатОтчет3:
SELECT Номенклатура.Наименование, Sum(Приход.Количество) AS [Приход(кон)]
FROM Номенклатура LEFT JOIN Приход ON Номенклатура.КодНоменклатуры = Приход.КодНоменклатуры
WHERE (((Приход.ДатаПрихода)<=[Forms]![МатериальныйОтчет]![Поле2]))
GROUP BY Номенклатура.Наименование;
МатОтчет4:
SELECT Номенклатура.Наименование, Sum(Продажа.Количество)*(-1) AS [Расход(кон)]
FROM Номенклатура INNER JOIN Продажа ON Номенклатура.КодНоменклатуры = Продажа.КодНоменклатуры
WHERE (((Продажа.Дата)<=[Forms]![МатериальныйОтчет]![Поле2]))
GROUP BY Номенклатура.Наименование;
МатОтчет контрагенты:
SELECT ЗапросМатОтчет3.Наименование, (ЗапросМатОтчет3.[Приход(кон)]+ЗапросМатОтчет4.[Расход(кон)]) AS [Остаток(кон)]
FROM ЗапросМатОтчет3 INNER JOIN ЗапросМатОтчет4 ON ЗапросМатОтчет3.Наименование=ЗапросМатОтчет4.Наименование;
МатОтчет остаток начальный:
SELECT ЗапросМатОтчет1.Наименование, Sum(ЗапросМатОтчет1.нач+ЗапросМатОтчет2.нач) AS [Остаток(нач)]
FROM ЗапросМатОтчет1 LEFT JOIN ЗапросМатОтчет2 ON ЗапросМатОтчет1.Наименование = ЗапросМатОтчет2.Наименование
GROUP BY ЗапросМатОтчет1.Наименование;
МатОтчет приход:
SELECT Номенклатура.Наименование, Sum(Приход.Количество) AS ПриходОб
FROM Номенклатура LEFT JOIN Приход ON Номенклатура.КодНоменклатуры=Приход.КодНоменклатуры
WHERE (((Приход.ДатаПрихода)>=Forms!МатериальныйОтчет!Поле1) And ((Приход.ДатаПрихода)<=Forms!МатериальныйОтчет!Поле2))
GROUP BY Номенклатура.Наименование;
МатОтчет продажа:
SELECT Номенклатура.Наименование, Sum(Продажа.Количество) AS ПродажаОб
FROM Номенклатура INNER JOIN Продажа ON Номенклатура.КодНоменклатуры=Продажа.КодНоменклатуры
WHERE (((Продажа.Дата)>=Forms!МатериальныйОтчет!Поле1) And ((Продажа.Дата)<=Forms!МатериальныйОтчет!Поле2))
GROUP BY Номенклатура.Наименование;
Остатки:
SELECT КодЗаправки AS K1, Alias.кодНоменклатуры AS N, now() AS D, Sum(K) AS S
FROM Константы, [SELECT приход.кодНоменклатуры , sum(количество) as K
from (приход INNER JOIN Номенклатура on приход.КодНоменклатуры=Номенклатура.КодНоменклатуры)
where Номенклатура.Товар=True
group by приход.кодНоменклатуры
union (SELECT продажа.кодНоменклатуры , sum(количество)*(-1) as K from (продажа INNER JOIN Номенклатура on продажа.КодНоменклатуры=Номенклатура.КодНоменклатуры)
where Номенклатура.Товар=True
group by продажа.кодНоменклатуры) ]. AS Alias
GROUP BY КодЗаправки, Alias.кодНоменклатуры;
Продажа операторами:
SELECT Сотрудники.Фамилия, DateValue(Продажа.Дата) AS Выражение1, Sum(Продажа.Количество) AS [Количество номен-ры], Count(Продажа.Количество) AS Количество
FROM Сотрудники INNER JOIN (Номенклатура INNER JOIN Продажа ON Номенклатура.КодНоменклатуры=Продажа.КодНоменклатуры) ON Сотрудники.КодСотрудника=Продажа.КодСотрудника
WHERE (Forms!ПродажаОператорами!ПолеСоСписком10=Номенклатура.КодНоменклатуры) And (((Продажа.Дата)>Forms!ПродажаОператорами!Поле1 And (Продажа.Дата)<Forms!ПродажаОператорами!Поле2))
GROUP BY Сотрудники.Фамилия, DateValue(Продажа.Дата);
Реализация газа общий:
SELECT ЗапросРеализацияГазаПриход.Приход AS [Приход газа], ЗапросРеализацияГазаПродажа.Продажа AS [Продажа газа], РГКС.[Кон остаток], РГНС.[Нач остаток]
FROM ЗапросРеализацияГазаПриход, ЗапросРеализацияГазаПродажа, РГКС, РГНС;
Реализация газа приход:
SELECT iif((Sum(количество)>0),Sum(количество),0) AS Приход
FROM Номенклатура INNER JOIN приход ON Номенклатура.КодНоменклатуры=приход.КодНоменклатуры
WHERE (((приход.ДатаПрихода)>=(SELECT Смены.Начало FROM Смены WHERE (((Смены.КодСмены)=[Forms]![РеализацияГаза]![ПолеСоСписком0])) ) And (приход.ДатаПрихода)<=(SELECT Смены.Окончание FROM Смены WHERE (((Смены.КодСмены)=[Forms]![РеализацияГаза]![ПолеСоСписком0])) )) AND ((Номенклатура.Наименование)="Газ"));
Реализация газа продажа:
SELECT Iif((Sum(количество)>0),Sum(количество),0) AS Продажа
FROM Номенклатура INNER JOIN продажа ON Номенклатура.КодНоменклатуры=продажа.КодНоменклатуры
WHERE (((продажа.Дата)>=(SELECT Смены.Начало FROM Смены WHERE (((Смены.КодСмены)=[Forms]![РеализацияГаза]![ПолеСоСписком0])) ) And (продажа.Дата)<=(SELECT Смены.Окончание FROM Смены WHERE (((Смены.КодСмены)=[Forms]![РеализацияГаза]![ПолеСоСписком0])) )) AND ((Номенклатура.Наименование)="Газ"));
Реализация газа:
SELECT Switch(Продажа.Безнал=0,"НАЛИЧНЫЕ",Продажа.Безнал=-1,"БЕЗНАЛ") AS Оплата, Номенклатура.Цена, Sum(Продажа.Количество) AS [Sum-Количество], Sum(Продажа.Стоимость) AS [Sum-Стоимость], Count(Продажа.Количество) AS [Count-Количество]
FROM Номенклатура LEFT JOIN Продажа ON Номенклатура.КодНоменклатуры=Продажа.КодНоменклатуры
WHERE (((Номенклатура.Наименование)="Газ") And ((Продажа.КодСмены)=Forms!РеализацияГаза!ПолеСоСписком0))
GROUP BY Номенклатура.Цена, Продажа.Безнал, Продажа.КодСмены;
Сменный отчет:
SELECT Номенклатура.Наименование, Sum(Продажа.Количество) AS [Сум-Количество], Sum(Продажа.Стоимость) AS [Сум-Стоимость]
FROM Номенклатура INNER JOIN Продажа ON Номенклатура.КодНоменклатуры=Продажа.КодНоменклатуры
WHERE (((Продажа.Дата)>(select max(Начало)from Смены)))
GROUP BY Номенклатура.Наименование;
Сменный отчет1:
SELECT Смены.Начало, Смены.Окончание, Сотрудники.Фамилия, Номенклатура.Наименование, Контрагенты.Безнал, Контрагенты.Наименование, Sum(Продажа.Количество) AS [Sum-Количество], Sum(Продажа.Стоимость) AS [Sum-Стоимость]
FROM Сотрудники INNER JOIN ((Контрагенты INNER JOIN (Номенклатура INNER JOIN Продажа ON Номенклатура.КодНоменклатуры = Продажа.КодНоменклатуры) ON Контрагенты.КодКонтрагента = Продажа.КодКонтрагента) INNER JOIN Смены ON Продажа.КодСмены = Смены.КодСмены) ON Сотрудники.КодСотрудника = Смены.КодСотрудника
WHERE (((Продажа.КодСмены)=[Forms]![СменныйОтчет]![ПолеСоСписком0]))
GROUP BY Смены.Начало, Смены.Окончание, Сотрудники.Фамилия, Номенклатура.Наименование, Контрагенты.Безнал, Контрагенты.Наименование;
Состояние склада:
SELECT Номенклатура.Наименование AS Наименование, Номенклатура.Цена AS Цена, Sum([Кол-во]) AS Склад, Номенклатура.Цена*Sum([Кол-во]) AS Сумма
FROM [SELECT Номенклатура.Наименование, Номенклатура.Цена, sum(Приход.Количество) as [Кол-во]
FROM (Номенклатура INNER JOIN Приход ON Номенклатура.КодНоменклатуры = Приход.КодНоменклатуры)
WHERE (((Номенклатура.Товар)=Yes)) and (Приход.ДатаПрихода<=[Forms]![СостояниеСклада]![Поле1])
group by Номенклатура.Наименование, Номенклатура.Цена
UNION SELECT Номенклатура.Наименование, Номенклатура.Цена, sum(Продажа.Количество)*(-1) as [Кол-во]
FROM (Номенклатура INNER JOIN Продажа ON Номенклатура.КодНоменклатуры = Продажа.КодНоменклатуры)
WHERE (((Номенклатура.Товар)=Yes)) and (Продажа.Дата<=[Forms]![СостояниеСклада]![Поле1])
group by Номенклатура.Наименование, Номенклатура.Цена]. AS Alias
GROUP BY Номенклатура.Наименование, Номенклатура.Цена;
Последняя смена:
SELECT Max(Смены.Начало) AS [Max-Начало], Сотрудники.Фамилия
FROM Сотрудники INNER JOIN Смены ON Сотрудники.КодСотрудника = Смены.КодСотрудника
Подобные документы
Системный анализ и краткая характеристика предметной области. Функции для работы с буферизованной таблицей. Описание предметной области и инфологическое моделирование. Модель "сущность-связь". Проектирование баз данных на основе принципов нормализации.
курсовая работа [112,9 K], добавлен 27.02.2009Описание предметной области автоматизации предприятия по покупке и продаже товаров на заказ по каталогу. Заключение договора с клиентами на единовременную поставку товара. Инфологическая модель и интерфейс программы для работы с базой данных магазина.
курсовая работа [862,5 K], добавлен 10.02.2015Анализ и разработка информационной системы, структура сети предприятия. Описание процесса разработки конфигураций и выявление потребностей в автоматизации функций. Средства разработки проектирования и архитектура базы данных. Разработка модели угроз.
дипломная работа [1,4 M], добавлен 13.07.2011Описание предметной области: работа с данными сети автосалонов. Структурная схема системы. Инфологическая модель: графическая диаграмма и спецификация. Связи между атрибутами сущности. Описание графа диалога системы. Формы входных и выходных сообщений.
курсовая работа [2,0 M], добавлен 21.10.2012Описание информационных технологий и модель угроз. Средства защиты периметра сети, межсетевые экраны. Системы обнаружения вторжений, их классификация по уровням информационной системы. Подходы к автоматическому отражению атак и предотвращению вторжений.
дипломная работа [2,0 M], добавлен 05.06.2011Сущность и роль бухгалтерской отчетности. Характеристика хозяйственных операции и системы обработки данных в первичные учетные документы. Особенности логической структуры реляционной базы данных. Описание методов работы с информационной системой.
курсовая работа [1,1 M], добавлен 26.04.2015Проектирование информационной системы для удобного ведения учета товара. Функциональная модель предметной области. Обоснование выбора языка программирования. Описание программы, руководство пользователя. Протокол тестирования программного продукта.
курсовая работа [537,6 K], добавлен 18.09.2014Общая характеристика и структура, преимущества использования и описание локальной вычислительной сети, основные требования к ней. Определение функций пользователей. Анализ существующей инфраструктуры, конфигурация сервера и рабочих станций, оборудование.
отчет по практике [401,6 K], добавлен 11.09.2015Проектирование логической модели системы: контекстная диаграмма и детализация процессов, реализация ссылочной целостности. Описание работоспособного программного обеспечения для проекта. SQL-определения запросов. Описание базы данных контрольного примера.
курсовая работа [91,4 K], добавлен 01.09.2010Детализация функций системы и требования к информационной системе. Анализ категорий пользователей. Этапы внедрения автоматизированной информационной системы на предприятии. Описание таблиц базы данных. Защита данных от несанкционированного доступа.
дипломная работа [1,0 M], добавлен 22.07.2015