Смекни!
smekni.com

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

Таким образом, исходя из вышесказанного, можно сделать вывод о том, что информационная система, разработанная в ходе проведения проектной части может использоваться с целью облегчения учета товаров на любой АГЗС.

Список источников информации

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

DimstrSQLAsString

' Находим имя и пароль в таблице

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

Формакалендарь

OptionCompareDatabase

' переменная для ссылки на активное поле ввода

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 "Календарь"