Гость
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Помогите написать запрос для отчета / 7 сообщений из 7, страница 1 из 1
05.04.2021, 20:54
    #40060003
olga.a
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать запрос для отчета
Добрый день.
Помогите пожалуйста написать запрос для отчета.
Есть таблица "Расход материала"(tblExpenses) и таблица "Поступление материала"(tblArrivals), в обеих есть поля "Код материала"(MaterialID), "Количество"(Quantity) и "Дата"(Date). Нужен отчет по расходу за период в котором должны быть поля "Код материала", "Расход (кол-во)" и "Остаток (кол-во)". Не понимаю как вывести остаток на конец периода с учетом всех ранее поступивших материалов.
Заранее благодарю!
...
Рейтинг: 0 / 0
06.04.2021, 01:02
    #40060034
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать запрос для отчета
да не должно быть в БД двух таблиц с одинаковыми полями т.к
-получите предпосылки для возникновения ошибок(если не применить специальных мер для их исключения)
-вполне достаточно одной таблицы с полями [поступление],[расход]+материал,дата
-и никаких вычисляемых (остаток) полей в таблице (им место в запросах). Остаток=Sum(поступило)-Sum(расход) если [дата]<даты на которую Вы хотите узнать остаток
-о создании БД по учету материалов в интернете воз и маленькая тележка
...
Рейтинг: 0 / 0
06.04.2021, 10:44
    #40060075
Geizer1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать запрос для отчета
Выложите примерчик. Вам в этом примерчике запрос и сделают. А так только общие пожелания будут)
...
Рейтинг: 0 / 0
06.04.2021, 10:54
    #40060080
Помогите написать запрос для отчета
olga.a, сначала создайте запрос вида:
Код: sql
1.
2.
3.
4.
5.
Select [код товара], Sum(Iif(Дата<[ДатаНач], [Количество], 0)) As [ПриходДо], 
Sum(Iif(Дата>=[ДатаНач], [Количество], 0)) As [ПриходЗа]
From [Приход] 
Where Дата<=[ДатаКон]
GroupBy [код товара] 

затем подобный запрос на таблице Расход, а затем запрос на этих двух запросах, связанных по коду товара, где можно получить входящий/исходящий остаток и оборот.
В дальнейшем всю эту халабуду можно создать в одном запросе с двумя подзапросами.
...
Рейтинг: 0 / 0
14.04.2021, 17:18
    #40062522
Игорь1973
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать запрос для отчета
Поле "Остаток", наверное, должно быть Нарастающим итогом?
Иногда делают таблицу Касса с полями Дата, Операция, Приход, Расход, Остаток.
Где последнее поле "Остаток" - нарастающий итог.
...
Рейтинг: 0 / 0
14.04.2021, 18:29
    #40062538
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать запрос для отчета
Игорь1973
....Где последнее поле "Остаток" - нарастающий итог.
Не учитесь плохому-лучше прочтите это
...
Рейтинг: 0 / 0
14.04.2021, 19:49
    #40062564
Tarasios
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать запрос для отчета
olga.a,
пожалуй, вам надо предварительно структуру базы продумать и изменить, тогда эту и возможные последующие хотелки легко будет реализовать.
На двух таблицах всё это организовать можно, но будет слишком много избыточной инфы и, соответственно, "извращений".
Например такой вариант:
Одну таблицу сделайте для справочника материалов, где код материала - уникальное значение (тип поля счётчик). Скажем, tblMaterial.
Приход: две таблицы. Одну, скажем, tblPrixodGlav под "шапку", где указываются номер вашей приходной накладной, дата приёмки, по необходимости - поля с указанием поставщика, номером накладной поставщика, датой накладной поставщика и т.д. И подчинённую таблицу tblPrixodPodch к этой "шапке", связь один-ко-многим, с обеспечением целостности. Где указывается номер накладной (по нему связь с tblPrixodGlav), код материала, количество, цена. Остальная инфа по материалу в форме для визуализации подтягивается из tblMaterial.
По аналогии делаете две таблицы для расхода.
И уже тогда легко и непринуждённо вы всегда сможете вывести остатки на любую дату.
Это если очень в примитиве.
Если вы не храните данные, скажем, на начало дня или периода в отдельной таблице, то остатки на начало периода (это конкретная дата) вычисляются как сумма количества материалов по приходу по выбранную дату минус один день (по факту это будут остатки на "вчерашний вечер", они же "остатки на утро сегодняшнего дня", "сегодняшним днём" считать указанную вами дату, на которую формируются остатки) отнять весь расход по выбранную дату минус один день.
Если вы используете промежуточные таблицы - то остатки составят остатки в промежуточной таблице плюс сумма всего прихода с даты формирования данных в промежуточной таблице остатков по выбранную дату минус один день отнять сумму всех расходов
с даты формирования остатков в промежуточной таблице по выбранную дату минус один день.
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Помогите написать запрос для отчета / 7 сообщений из 7, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]