![]() |
|
Модераторы: Akina |
![]()
|
|
| ravitex |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 4.11.2010 Где: Таллинн Репутация: нет Всего: нет |
Привет!
оцените, пожалуйста, кто сможет, удачно ли я организовал базу. Таблицы : Материалы (номер, название) Склад (число, материал на склад «+», материал со склада «-»), Период времени для отчета (всегда одна строка : начало, конец периода). Цель: получить расход за указанный период и остаток на складе к концу указанного периода по каждому материалу. Реализация получения расхода: запрос 1.1 с группировкой и ограничением периода и операциям на складе <0 = дата | материал | «-» операция за день запрос 1.2 на запрос 1.1 с группировкой по материалам и суммированием по операциям = материал | сумма всех «-» операций с ним за период Реализация получения остатка: запрос 2.1 с группировкой и ограничением до конца периода и и суммированем по операциям = дата | материал | суммарный приход/расход за день запрос 2.2 на запрос 2.1 с группировкой по материалам и суммированем по сумамм запроса 2.1 = материал | суммарный приход/расход к концу периода (сальдо,остаток). Таких периодов 12 чт. (12 таблиц).Пользователь сам устанавливает начало/конец каждого и в конце получает общий отчет по 12 периодам. Надеюсь вопрос понятен. Присоединённый файл ( Кол-во скачиваний: 7 )
forum_mater_za_mesjac_04.zip 19,38 Kb |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 30 Всего: 454 |
Нет, неэффективен.
"Приход" и "расход" - это не две разных операции, а одна операция "изменение". -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| ravitex |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 4.11.2010 Где: Таллинн Репутация: нет Всего: нет |
А по какому принципу тогда лучше ? Вот здесь ничего понять не могу : http://forum.vingrad.ru/forum/topic-41522.html. |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 30 Всего: 454 |
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| ravitex |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 4.11.2010 Где: Таллинн Репутация: нет Всего: нет |
Слишком узко искал раньше. Покопался в старых вопросах и продолжаю смотреть,но сложно без опыта. Направление правильное : в таблицах инфо о изменениях, а остальное в Отчете (Report)? Т.е. Можно обойтись без кучи запросов? Фигурирует какая-то сумма с накоплением в Отчете... Akina, если можно, просто через запятую - какие штуки использовать в моем случае, а книг и справок у меня полно полно - разберусь, а то штудировать книги и думать по каждой главе - мое или нет - займет месяцы. Это сообщение отредактировал(а) ravitex - 15.11.2010, 17:07 |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 30 Всего: 454 |
В таблицах лежат данные о движении и неких контрольных точках (скажем баланс на начало периода). Состояние на нужный момент времени считается в запросе. А уж куда выводить результат запроса для обозримого вида - в отчёт или форму, на печать или в файл - дело а) десятое б) твоё. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| ravitex |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 4.11.2010 Где: Таллинн Репутация: нет Всего: нет |
Не понял я сразу о чем речь. Долго возился, думал и понял, что способов много.
1.
Была идея при помощи макросов, связанных с обновлением каждой новой записи (+ временные,вспомогательные таблицы), на каждую новую запись вычислять остаток и просто сохранять его для каждого материала. Но пугает, что в этом случае остаток на каждую дату будет просто числом и если что случится придется востанавливать все (хотя, если есть даты, приходы и расходы, то это не так сложно). 2.
А у меня ведь так и получается: остаток на конец периода находится 2 запросами, 12 месяцев - 24 запроса. Как бы найти эти контрольные точки "баланс на начало периода" ? Ряд запросов/группировок или может сделать функцию в VBA (например, FOR от даты до даты). P.S. был очень удивлен после 10 часов у монитора с 1 макросом, что надо было менять чего-то через regedit, и занести папку в Trusted Location. Только тогда SetValue начала работать... Это сообщение отредактировал(а) ravitex - 20.11.2010, 03:34 |
||||
|
|||||
| Dar8650 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 23.11.2010 Репутация: нет Всего: нет |
Ты изначально выбрал неправильное направление с 12 -ю таблицами.
Предствать, что тебе будет необходимо предоставить отчет за квартал, или за неопределенный период неопределенного года, как поступишь? Во первых что у вас торговля? если Торг, то У себя я организовал так, динамическая таблица, остатки в которой изменяются, И статическая таблица, в нее скидивается любые действия с товаром, за любой промежуток времени. Затем через серию запросов строишь все тебе надо. Еще одна таблица - Это начальное сальдо (или ввод начальных остатков). Через СКюЛь запросы подсоединяй ее к общей выборке товара на начало. Это сообщение отредактировал(а) Akina - 23.11.2010, 16:54 |
|||
|
||||
| ravitex |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 4.11.2010 Где: Таллинн Репутация: нет Всего: нет |
Спасибо за ответ.
1. Деятельность : просто склад производства. Материалы, продукты из этих материалов. Пользователь компанует новые продукты из имеющихся материалов. По произведенному продукту высчитывается раход материалов и выводится в виде годового отчета (Список материалов + 12 столбцов-месяцев) . В каждом стобце для каждого материала две ячейки : "израсходовано" и "Остаток на конец месяца". 2. Да, в дополнение к итоговой таблице пользователь должен иметь возможност запроса на любое число. Расход за период, наверное это ведь просто сумма + и - материалов на складе. Важно еще состояние по каждому материалу к определенной дате. 3. Динамическая и стат. таблицы - хорошая идея. Подумаю над реализацией. Статистическая - понятно как : просто действия из форм "Поступило","Произведено". А в динамической как? Продукты-материалы в строках и один столбец "Остаток" на требуемую дату? Это сообщение отредактировал(а) Akina - 23.11.2010, 16:54 |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 30 Всего: 454 |
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| Dar8650 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 23.11.2010 Репутация: нет Всего: нет |
Производство - это сложно.
Хотя разрешимо. Я пошел таким путем. вышлю тебе файл схему движения товара на производстве, а там поговорим. Это сообщение отредактировал(а) Akina - 23.11.2010, 17:44 Присоединённый файл ( Кол-во скачиваний: 11 )
_____.doc 33,50 Kb |
|||
|
||||
| ravitex |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 4.11.2010 Где: Таллинн Репутация: нет Всего: нет |
Спасибо за схему. В данном случае делаю для отца (чтоб удобней было следить за складом) и все ,вроде, не так сложно. База необхдима для примерного контроля. Вот , что пытаюсь сделать : см. фаил. Проблема в принципе построения, в "системе". Расход Компонентов - решается запросами Расход Компонентов на период - решается запросами А вот остаток: пока не вижу способа кроме полного перерасчета всех операций со складом до данного числа (через запросы, суммы и тд). Исхожу из возможности исправить, например, ошибку ввода прихода/расхода за, например, прошлую неделю (вдруг выяснится, что юзер ошибся и сможет по накладным выявить правильное число). Грубо : скажем 20 изменений в день, 7300 изменений в год, 36500 изменений через 5 лет - т.е. в конце 5-го года система должна будет "посчитать" мах 36000 позиций - разве это страшно ? Кажется, что этот способ единственнен и в случае годового отчета. Ну как еще зафиксировать остаток на каждый месяц, например, позапрошлого года ? Итого делаю запросы по компонентам: 1 группа запросов : Все поступления до 31.01, Все поступления до 28.02 , Все поступления до 31.03 .... (год вводится ползователем) 2 группа запросов : Все расходы до 31.01, Все расходы до 28.02 , Все расходы до 31.03 ... Сделано за месяц : [Все расходы до 28.02 ] - [Все расходы до 31.01] Остаток к концу месяца : [Все поступления до 31.01] - [Все расходы до 31.01] + спец запрос на любое число/период Это сообщение отредактировал(а) ravitex - 29.11.2010, 02:09 Присоединённый файл ( Кол-во скачиваний: 8 )
Shema.doc 33,50 Kb |
|||
|
||||
| Akina |
|
||||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 30 Всего: 454 |
Ну совершенно стандартная ситуация. Вот только зачем куча однотипных запросов, отличающихся только датой? сделай один, принимающий дату как параметр...
Есть такое понятие как закрытие периода. Т.е. контрольная точка, на которую считаются и фиксируются остатки. Операции до неё сносятся в архив, а результат считается с этого момента неизменяемым, и является точкой отсчёта для всех расчётов. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
||||
|
|||||
| ravitex |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 4.11.2010 Где: Таллинн Репутация: нет Всего: нет |
Ну тепер кажется начинает прояснятся! Те на основной форме кнопка "Закрытие периода". После нее: 1.Копирование содержимого таблиц "Поступление компонента" и "Производство продукта" в архивы и очищение этих таблиц. /Append Query,..../ 2. Изменение таблицы "Остатки на начало отчетного периода" в соответсвие с запросом по остаткам на дату нажатия кнопки "Закрытие периода". /Update+Append(в случае новых) Query/
Как сделать предствавляю (запрос берет дату из формы, например), но как тогда вывести 12 запросов с разными параметрами в годовой отчет в то время когда это один и тот же запрос? или надо как-то копировать его результаты в отчет, но что будет при изменениях... |
||||
|
|||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 30 Всего: 454 |
Ну не очистка, а удаление перенесённых а архив записей. Обычно закрытие периода выполняется, когда уже следующий в разгаре, и часть записей в таблицах, относящихся к текущему периоду, само собой, остаётся на месте. Нет. Остатки на начало периода - это всего-лишь особый тип операции "Приход". -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
![]()
|
| Правила форума "MS Access" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | MS Access | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |