Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
 Помогите написать запрос для отчета  [new]
olga.a
Member

Откуда:
Сообщений: 21
Добрый день.
Помогите пожалуйста написать запрос для отчета.
Есть таблица "Расход материала"(tblExpenses) и таблица "Поступление материала"(tblArrivals), в обеих есть поля "Код материала"(MaterialID), "Количество"(Quantity) и "Дата"(Date). Нужен отчет по расходу за период в котором должны быть поля "Код материала", "Расход (кол-во)" и "Остаток (кол-во)". Не понимаю как вывести остаток на конец периода с учетом всех ранее поступивших материалов.
Заранее благодарю!
5 апр 21, 20:54    [22304789]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать запрос для отчета  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 7269
да не должно быть в БД двух таблиц с одинаковыми полями т.к
-получите предпосылки для возникновения ошибок(если не применить специальных мер для их исключения)
-вполне достаточно одной таблицы с полями [поступление],[расход]+материал,дата
-и никаких вычисляемых (остаток) полей в таблице (им место в запросах). Остаток=Sum(поступило)-Sum(расход) если [дата]<даты на которую Вы хотите узнать остаток
-о создании БД по учету материалов в интернете воз и маленькая тележка
6 апр 21, 01:02    [22304859]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать запрос для отчета  [new]
Geizer1
Member

Откуда: Томск
Сообщений: 90
Выложите примерчик. Вам в этом примерчике запрос и сделают. А так только общие пожелания будут)
6 апр 21, 10:44    [22304936]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать запрос для отчета  [new]
Кривцов Анатолий
Member

Откуда:
Сообщений: 616
olga.a, сначала создайте запрос вида:
Select [код товара], Sum(Iif(Дата<[ДатаНач], [Количество], 0)) As [ПриходДо], 
Sum(Iif(Дата>=[ДатаНач], [Количество], 0)) As [ПриходЗа]
From [Приход] 
Where Дата<=[ДатаКон]
GroupBy [код товара] 
затем подобный запрос на таблице Расход, а затем запрос на этих двух запросах, связанных по коду товара, где можно получить входящий/исходящий остаток и оборот.
В дальнейшем всю эту халабуду можно создать в одном запросе с двумя подзапросами.
6 апр 21, 10:54    [22304943]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать запрос для отчета  [new]
Игорь1973
Member

Откуда: Санкт-Петербург
Сообщений: 316
Поле "Остаток", наверное, должно быть Нарастающим итогом?
Иногда делают таблицу Касса с полями Дата, Операция, Приход, Расход, Остаток.
Где последнее поле "Остаток" - нарастающий итог.
14 апр 21, 17:18    [22308965]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать запрос для отчета  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 7269
Игорь1973
....Где последнее поле "Остаток" - нарастающий итог.
Не учитесь плохому-лучше прочтите это
14 апр 21, 18:29    [22308991]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать запрос для отчета  [new]
Tarasios
Member

Откуда: Украина
Сообщений: 552
olga.a,
пожалуй, вам надо предварительно структуру базы продумать и изменить, тогда эту и возможные последующие хотелки легко будет реализовать.
На двух таблицах всё это организовать можно, но будет слишком много избыточной инфы и, соответственно, "извращений".
Например такой вариант:
Одну таблицу сделайте для справочника материалов, где код материала - уникальное значение (тип поля счётчик). Скажем, tblMaterial.
Приход: две таблицы. Одну, скажем, tblPrixodGlav под "шапку", где указываются номер вашей приходной накладной, дата приёмки, по необходимости - поля с указанием поставщика, номером накладной поставщика, датой накладной поставщика и т.д. И подчинённую таблицу tblPrixodPodch к этой "шапке", связь один-ко-многим, с обеспечением целостности. Где указывается номер накладной (по нему связь с tblPrixodGlav), код материала, количество, цена. Остальная инфа по материалу в форме для визуализации подтягивается из tblMaterial.
По аналогии делаете две таблицы для расхода.
И уже тогда легко и непринуждённо вы всегда сможете вывести остатки на любую дату.
Это если очень в примитиве.
Если вы не храните данные, скажем, на начало дня или периода в отдельной таблице, то остатки на начало периода (это конкретная дата) вычисляются как сумма количества материалов по приходу по выбранную дату минус один день (по факту это будут остатки на "вчерашний вечер", они же "остатки на утро сегодняшнего дня", "сегодняшним днём" считать указанную вами дату, на которую формируются остатки) отнять весь расход по выбранную дату минус один день.
Если вы используете промежуточные таблицы - то остатки составят остатки в промежуточной таблице плюс сумма всего прихода с даты формирования данных в промежуточной таблице остатков по выбранную дату минус один день отнять сумму всех расходов
с даты формирования остатков в промежуточной таблице по выбранную дату минус один день.
14 апр 21, 19:49    [22309028]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Access Ответить