Автоматизация учета товаров на АГЗС "Северного объединения по эксплуатации газового хозяйства"
"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 Сотрудники.КодСотрудника = Смены.КодСотрудника
GROUP BY Сотрудники.Фамилия;
РГНС:
SELECT Sum([Нач смены]) AS [Нач остаток]
FROM [SELECT Sum(Приход.Количество) AS [Нач смены]
FROM Номенклатура INNER JOIN Приход ON Номенклатура.КодНоменклатуры = Приход.КодНоменклатуры
where (((Номенклатура.Наименование)="Газ") AND ((Приход.ДатаПрихода)<(select начало from смены where кодсмены=[Forms]![РеализацияГаза]![ПолеСоСписком0])))
union
SELECT Sum(Продажа.Количество)*(-1) AS [Нач смены]
FROM Номенклатура INNER JOIN Продажа ON Номенклатура.КодНоменклатуры = Продажа.КодНоменклатуры
where (((Номенклатура.Наименование)="Газ") AND ((Продажа.Дата)<(select начало from смены where кодсмены=[Forms]![РеализацияГаза]![ПолеСоСписком0])))
]. AS Aias1;
РГКС:
SELECT Sum([%$##@_Alias].[Нач смены]) AS [Кон остаток]
FROM [SELECT Sum(Приход.Количество) AS [Нач смены]
FROM Номенклатура INNER JOIN Приход ON Номенклатура.КодНоменклатуры = Приход.КодНоменклатуры
where (((Номенклатура.Наименование)="Газ") AND ((Приход.ДатаПрихода)<(select окончание from смены where кодсмены=[Forms]![РеализацияГаза]![ПолеСоСписком0])))
UNION SELECT Sum(Продажа.Количество)*(-1) AS [Нач смены]
FROM Номенклатура INNER JOIN Продажа ON Номенклатура.КодНоменклатуры = Продажа.КодНоменклатуры
where (((Номенклатура.Наименование)="Газ") AND ((Продажа.Дата)<(select окончание from смены where кодсмены=[Forms]![РеализацияГаза]![ПолеСоСписком0])))
]. AS [%$##@_Alias];
Цена номенклатуры:
SELECT Номенклатура.Цена
FROM Номенклатура
WHERE (((Номенклатура.КодНоменклатуры)=[Forms]![Продажа]![ПолеСоСписком12]));
Серверное приложение:
Должники:
SELECT Контрагенты.Наименование, Sum(РасчетыКонтрагенты.Сумма)*(-1) AS [Сумма долга]
FROM Контрагенты INNER JOIN РасчетыКонтрагенты ON Контрагенты.КодКонтрагента = РасчетыКонтрагенты.КодКонтрагента
WHERE (((РасчетыКонтрагенты.Дата)<=([Forms]![Должники]![Поле1])+1))
GROUP BY Контрагенты.Наименование
HAVING (((Sum(РасчетыКонтрагенты.Сумма))<0));
Должники текущие:
SELECT Контрагенты.Наименование, Sum(РасчетыКонтрагенты.Сумма)*(-1) AS [Сумма долга]
FROM Контрагенты INNER JOIN РасчетыКонтрагенты ON Контрагенты.КодКонтрагента = РасчетыКонтрагенты.КодКонтрагента
GROUP BY Контрагенты.Наименование
HAVING (((Sum(РасчетыКонтрагенты.Сумма))<0));
ОСВ:
PARAMETERS FORMS![ОСВ]![ДАТАОСВ] DateTime;
SELECT Контрагенты.Наименование,sum( РасчетыКонтрагенты.Сумма), "3Обороты Дт"
FROM РасчетыКонтрагенты inner join Контрагенты on РасчетыКонтрагенты.КодКонтрагента=Контрагенты.КодКонтрагента
where (Дата>=DateSerial(year(FORMS![ОСВ]![ДАТАОСВ]), month(FORMS![ОСВ]![ДАТАОСВ]), 1)) and (Дата<DateSerial(year(FORMS![ОСВ]![ДАТАОСВ]), month(FORMS![ОСВ]![ДАТАОСВ])+1,1 ))
group by Контрагенты.Наименование
having sum(РасчетыКонтрагенты.Сумма)>=0
union
SELECT Контрагенты.Наименование,sum( РасчетыКонтрагенты.Сумма)*(-1),"4Обороты Кт"
FROM РасчетыКонтрагенты inner join Контрагенты on РасчетыКонтрагенты.КодКонтрагента=Контрагенты.КодКонтрагента
where (Дата>=DateSerial(year(FORMS![ОСВ]![ДАТАОСВ]), month(FORMS![ОСВ]![ДАТАОСВ]), 1)) and (Дата<DateSerial(year(FORMS![ОСВ]![ДАТАОСВ]), month(FORMS![ОСВ]![ДАТАОСВ])+1,1 ))
group by Контрагенты.Наименование
having sum(РасчетыКонтрагенты.Сумма)<=0
union
SELECT Контрагенты.Наименование,sum( РасчетыКонтрагенты.Сумма), "1Начало Дт"
FROM РасчетыКонтрагенты inner join Контрагенты on РасчетыКонтрагенты.КодКонтрагента=Контрагенты.КодКонтрагента
where (Дата<DateSerial(year(FORMS![ОСВ]![ДАТАОСВ]), month(FORMS![ОСВ]![ДАТАОСВ]), 1))
group by Контрагенты.Наименование
having sum(РасчетыКонтрагенты.Сумма)>=0
union
SELECT Контрагенты.Наименование,sum( РасчетыКонтрагенты.Сумма)*(-1),"2Начало Кт"
FROM РасчетыКонтрагенты inner join Контрагенты on РасчетыКонтрагенты.КодКонтрагента=Контрагенты.КодКонтрагента
where (Дата<DateSerial(year(FORMS![ОСВ]![ДАТАОСВ]), month(FORMS![ОСВ]![ДАТАОСВ]), 1))
group by Контрагенты.Наименование
having sum(РасчетыКонтрагенты.Сумма)<=0
union
SELECT Контрагенты.Наименование,sum( РасчетыКонтрагенты.Сумма), "5Конец Дт"
FROM РасчетыКонтрагенты inner join Контрагенты on РасчетыКонтрагенты.КодКонтрагента=Контрагенты.КодКонтрагента
where (Дата<DateSerial(year(FORMS![ОСВ]![ДАТАОСВ]), month(FORMS![ОСВ]![ДАТАОСВ])+1, 1))
group by Контрагенты.Наименование
having sum(РасчетыКонтрагенты.Сумма)>=0
UNION SELECT Контрагенты.Наименование,sum( РасчетыКонтрагенты.Сумма)*(-1),"6Конец Кт"
FROM РасчетыКонтрагенты inner join Контрагенты on РасчетыКонтрагенты.КодКонтрагента=Контрагенты.КодКонтрагента
where (Дата<DateSerial(year(FORMS![ОСВ]![ДАТАОСВ]), month(FORMS![ОСВ]![ДАТАОСВ])+1, 1))
group by Контрагенты.Наименование
having sum(РасчетыКонтрагенты.Сумма)<=0;
ОСВ перекрестный:
TRANSFORM Sum(запросОСВ.Expr1001) AS [Sum-Expr1001]
SELECT запросОСВ.Наименование AS Контрагенты
FROM запросОСВ
GROUP BY запросОСВ.НАименование
PIVOT запросОСВ.Expr1002;
Остатки:
SELECT Районы.Название, Номенклатура.Наименование, Остатки.Количество, Остатки.Дата
FROM Районы INNER JOIN (Номенклатура INNER JOIN (запрОстатки2 INNER JOIN Остатки ON (запрОстатки2.[Max-Дата] = Остатки.Дата) AND (запрОстатки2.КодЗаправки = Остатки.КодЗаправки) AND (запрОстатки2.КодНоменклатуры = Остатки.КодНоменклатуры)) ON Номенклатура.КодНоменклатуры = Остатки.КодНоменклатуры) ON Районы.КодРайона = Остатки.КодЗаправки;
Остатки1:
SELECT Районы.Название, Номенклатура.Наименование, Остатки.Количество, Остатки.Дата
FROM Районы INNER JOIN (Номенклатура INNER JOIN (запрОстатки3 INNER JOIN Остатки ON (запрОстатки3.[Max-Дата] = Остатки.Дата) AND (запрОстатки3.КодЗаправки = Остатки.КодЗаправки) AND (запрОстатки3.КодНоменклатуры = Остатки.КодНоменклатуры)) ON Номенклатура.КодНоменклатуры = Остатки.КодНоменклатуры) ON Районы.КодРайона = Остатки.КодЗаправки
WHERE (((Номенклатура.Наименование) Like "Г*"));
Остатки2:
PARAMETERS [Forms]![Остатки]![Поле1] DateTime;
SELECT Остатки.КодНоменклатуры, Остатки.КодЗаправки, Max(Остатки.Дата) AS [Max-Дата]
FROM Остатки
WHERE (((Остатки.Дата)<=[Forms]![Остатки]![Поле1]))
GROUP BY Остатки.КодНоменклатуры, Остатки.КодЗаправки;
Остатки3:
SELECT Остатки.КодНоменклатуры, Остатки.КодЗаправки, Max(Остатки.Дата) AS [Max-Дата]
FROM Остатки
WHERE (((Остатки.Дата)<=now()))
GROUP BY Остатки.КодНоменклатуры, Остатки.КодЗаправки;
Расчеты контрагенты:
TRANSFORM Sum(РасчетыКонтрагенты.Сумма) AS [Sum-Сумма]
SELECT РасчетыКонтрагенты.КодКонтрагента, Sum(РасчетыКонтрагенты.Сумма) AS [Итоговое значение Сумма]
FROM РасчетыКонтрагенты
GROUP BY РасчетыКонтрагенты.КодКонтрагента
PIVOT Format([Дата],"mmm");
Страницы: 1, 2, 3, 4, 5
|