Таким образом, исходя из вышесказанного, можно сделать вывод о том, что информационная система, разработанная в ходе проведения проектной части может использоваться с целью облегчения учета товаров на любой АГЗС.
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
Программный код:
Клиентское приложение на АГЗС:
Главный модуль:
'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 "Календарь"