|
К сумме за текущий месяц прибавить сумму за предыдущий
|
|||
---|---|---|---|
#18+
Добрый день! Помогите разработать алгоритм в Access 2012: Есть таблица итоговая таблица с разбивкой по году и месяцу: id monthP yearP sumR 1 12 2011 9000.00 1 1 2012 60006.00 1 2 2012 22323.00 1 3 2012 80010.00 1 4 2012 10560.00 мне необходимо получить: Сумму по столбцу sumR (текущий месяц) + sumR (предыдущий месяц), если текущий месяц январь, то надо прибавить декабрь предыдущего года. На выходе хотелось бы увидеть: id monthP yearP sumR sumRP 1 12 2011 9000.00 0 1 1 2012 60006.00 69006.00 1 2 2012 22323.00 82329.00 1 3 2012 80010.00 102333.00 1 4 2012 10560.00 90570.00 sumRP - сумма сумм за период. !При этом один нюанс - бывает что данных за прошлый период нет. И если данных нет- то вычислять не нужно. Оставлять пустое поле: id monthP yearP sumR sumRP 1 12 2011 9000.00 0 1 1 2012 60006.00 69006.00 1 3 2012 80010.00 0 1 4 2012 10560.00 90570.00 Заранее благодарю за ответы и советы! ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2012, 09:48 |
|
К сумме за текущий месяц прибавить сумму за предыдущий
|
|||
---|---|---|---|
#18+
Andrey3000, Было бы хорошо, если бы вы приложили пример БД. Пока могу сказать только, что сумма за предыдущий месяц будет: Код: vbnet 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2012, 10:03 |
|
К сумме за текущий месяц прибавить сумму за предыдущий
|
|||
---|---|---|---|
#18+
Код: vbnet 1.
надо предусмотреть вариант когда текущий месяц меньше предыдущего (январь-декабрь) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2012, 10:21 |
|
К сумме за текущий месяц прибавить сумму за предыдущий
|
|||
---|---|---|---|
#18+
sdku, даже не знаю что тогда в нашем случае сделать, у ТС нет даты. Тогда так(поле в запросе): Код: vbnet 1.
Надо проверять. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2012, 10:36 |
|
К сумме за текущий месяц прибавить сумму за предыдущий
|
|||
---|---|---|---|
#18+
Интересно-а зачем 2 поля "месяц" и "год" если суть это одно поле "дата" в котором есть еще и день (который когда нибудь обязательно понадобится-может стоит подумать над структурой) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2012, 10:52 |
|
К сумме за текущий месяц прибавить сумму за предыдущий
|
|||
---|---|---|---|
#18+
Спасибо за ответы! Прилагаю для примера образец ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2012, 11:44 |
|
К сумме за текущий месяц прибавить сумму за предыдущий
|
|||
---|---|---|---|
#18+
sdku, Мопед не совсем мой, а данных набрано много ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2012, 11:45 |
|
К сумме за текущий месяц прибавить сумму за предыдущий
|
|||
---|---|---|---|
#18+
alвк, Я конечно забыл указать, что id разные (необходимо для каждого свое) - в примере указал ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2012, 11:55 |
|
К сумме за текущий месяц прибавить сумму за предыдущий
|
|||
---|---|---|---|
#18+
Andrey3000, Код: sql 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2012, 11:56 |
|
К сумме за текущий месяц прибавить сумму за предыдущий
|
|||
---|---|---|---|
#18+
alвк, Спасибо! но такой вопрос - у клиента 1 в 5 месяце считает в "пред", а не нужно начинаю понимать понемногу, но конечно туговато ... ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2012, 12:14 |
|
К сумме за текущий месяц прибавить сумму за предыдущий
|
|||
---|---|---|---|
#18+
Andrey3000Спасибо! но такой вопрос - у клиента 1 в 5 месяце считает в "пред", а не нужно тогда воспользуйтесь первым моим вариантом в этой теме. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2012, 12:47 |
|
К сумме за текущий месяц прибавить сумму за предыдущий
|
|||
---|---|---|---|
#18+
alвк, Неудобно даже просить, но не могли бы вы прислать код запроса, я сам наверное еще битый час буду "пробовать"? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2012, 12:58 |
|
К сумме за текущий месяц прибавить сумму за предыдущий
|
|||
---|---|---|---|
#18+
Andrey3000, вот, с учётом клиентов: Код: sql 1. 2. 3. 4. 5. 6.
Если же вдруг надо пропускать пустые месяцы и брать реально предыдущий, то Код: sql 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2012, 13:13 |
|
К сумме за текущий месяц прибавить сумму за предыдущий
|
|||
---|---|---|---|
#18+
alвк, Спасибо большое за помощь! Разобрался! ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2012, 17:41 |
|
К сумме за текущий месяц прибавить сумму за предыдущий
|
|||
---|---|---|---|
#18+
alвк, Первый запрос отлично работает, но, если оба поля с Мес и Годом - числовые, а как будет если вместо двух числовых полей одно поле Дата (dd.mm.yyyy)? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2019, 09:43 |
|
К сумме за текущий месяц прибавить сумму за предыдущий
|
|||
---|---|---|---|
#18+
knigaа как будет если вместо двух числовых полей одно поле Дата (dd.mm.yyyy)? Покажите пример данных. Поле "Дата" типа "Дата/Время" или "Текст"? Сколько записей для каждого клиент/месяц/год? Если одна, то какое число дня используется? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2019, 12:09 |
|
К сумме за текущий месяц прибавить сумму за предыдущий
|
|||
---|---|---|---|
#18+
Кривцов Анатолий, Поле "Дата" имеет тип "Дата/Время". Для каждого "Сотрудника" (Клиента) используется в месяц одно число - первое (01.01.2019, след мес. 01.02.2019 и т.д.) На форуме позаимствовал БД (i-bison) и на ее основе делаю свою только для начисления зарплат. Каждый месяц после выплаты остается хвостик и его надо переносить в следующий месяц, чтобы использовать в формуле .. Подскажите, пожалуйста. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2019, 14:13 |
|
К сумме за текущий месяц прибавить сумму за предыдущий
|
|||
---|---|---|---|
#18+
kniga, если правильно понял, то в свободном поле "Переход остатка" укажите формулу: Код: plsql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2019, 09:51 |
|
К сумме за текущий месяц прибавить сумму за предыдущий
|
|||
---|---|---|---|
#18+
Кривцов Анатолий, да, все именно как и задумывалось ))! Огромное спасибо!!! ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2019, 14:44 |
|
К сумме за текущий месяц прибавить сумму за предыдущий
|
|||
---|---|---|---|
#18+
knigaда, все именно как и задумывалось ))! Ну вот и ладненько. Функцию DateAdd я применил, когда тащил остаток только из предыдущей записи. Можно без нее: Код: plsql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2019, 15:09 |
|
К сумме за текущий месяц прибавить сумму за предыдущий
|
|||
---|---|---|---|
#18+
Кривцов Анатолий, Спасибо за обновленную формулу! Она даже наверно правильней тем, что бывают месяцы. когда не выдается 'зп'! Правда, вот, что интересно, в bison_4 она здорово работает, а в моей базе никак... Второй день "ломаю голову" не пойму, что я пропустил. Если не трудно, может подскажете? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2019, 11:43 |
|
К сумме за текущий месяц прибавить сумму за предыдущий
|
|||
---|---|---|---|
#18+
тут какая-то 'засада' с версиями ) у меня версия access 2016 и так как я не смог сжать до требуемых мин 150кб, то перенес обьекты в версию 2003, там вроде формула заработала. правда с переходом по записям возникла проблемка.... Вот здесь версия access 2016: https://www.dropbox.com/s/2hs0uefeq3xnchv/hr_test_2016.rar?dl=0, посмотрите, пожалуйста. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2019, 12:13 |
|
К сумме за текущий месяц прибавить сумму за предыдущий
|
|||
---|---|---|---|
#18+
knigaПравда, вот, что интересно, в bison_4 она здорово работает, а в моей базе никак... Второй день "ломаю голову" не пойму, что я пропустил. В функции вы используете поле "Начислено". Это вычисляемое поле в форме. Его нет в таблице, к которой обращается функция, потому и не работает. Поэтому: 1. Запрос-источник формы сохраните как отдельный запрос. Добавьте в него вычисляемое поле "Начислено" с той же формулой, что и в форме, но с использованием NZ ко всем полям, которые могут быть с Null. 2. Этот запрос используйте как источник формы, а поле формы "Начислено" привяжите к новому полю запроса. 3. В функции обращайтесь не к таблице, а к этому запросу. По хорошему в запросе должны быть итоговые поля "Начислено всего", "Удержано всего", "К выплате" (разница между ними), "Выплачено" (НаКарту+НаРуки) и "Остаток" (разница между "К выплате" и "Выплачено"). В этом случае функция будет суммировать только поле "Остаток". К тому же все эти поля пригодятся при печати ведомости и в других местах, где может использоваться этот запрос. А при добавлении/удалении полей или изменении логики вычислений корректировка понадобится только в одном месте - в запросе. Удачи! ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2019, 12:19 |
|
К сумме за текущий месяц прибавить сумму за предыдущий
|
|||
---|---|---|---|
#18+
Кривцов Анатолий, Спасибо! ) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2019, 17:10 |
|
К сумме за текущий месяц прибавить сумму за предыдущий
|
|||
---|---|---|---|
#18+
Заработало!!! В формуле вместо таблицы написал имя запроса с вычисляемыми полями, как и сказали, правда в форме (она подчиненная) вычисления оставил, потому что выходят ошибки в вычисляемых полях если открывать основная+подчиненная формы (покой нам только снится, работаю над ошибками)) Спасибо, Анатолий! ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2019, 14:45 |
|
|
start [/forum/topic.php?fid=45&fpage=31&tid=1610658]: |
0ms |
get settings: |
10ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
30ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
59ms |
get tp. blocked users: |
2ms |
others: | 311ms |
total: | 440ms |
0 / 0 |