бесплатные рефераты

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

"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


© 2010 РЕФЕРАТЫ