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

"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

' Записываем и посылаем обороты

Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.