Автоматизация учета товаров на АГЗС "Северного объединения по эксплуатации газового хозяйства"

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

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 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

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