|
|
|
| Всем здравствуйте.
Задача следующая:
Есть таблица с полями: дата, сумма, операция. Необходима процедура, которая бы создавала другую таблицу с полями: дата, сумма, операция, сумма нарастающим итогом и заполнила бы ее записями по промежуточным значениям поля дата, сумму заполнить только на соответствующую дату, операция - также, а сумма нар.итогом - в каждую запись по правилу в зависимости от операции.
Например:
Исходные данные:
01.01.2009; 100р.; приход
03.01.2009; 40р.; расход
05.01.2009; 15р.; расход
Результат:
01.01.2009; 100р.; приход; 100р.
02.01.2009; NULL; NULL; 100р.
03.01.2009; 40р.; расход; 60р.
04.01.2009; NULL; NULL; 60р.
05.01.2009; 15р.; расход; 45р.
Думаю пример будет очень полезен многим!
Работаю в Access 2007
Всем спасибо заранее! | |
|
| |
|
|
|
|
|
Необходима процедура, которая бы создавала другую таблицу с полями
|
такой пример был бы вреден многим, а не полезен.
вместо вида операции ставьте к сумме занак +/- по виду операции "Приход-Расход" (Value = Value*-1) и выгоняйте данные в отчет с нарастающим итогом
или в запрос с Dsum в функции даты операции по полю Value | |
|
| |
|
|
|
| Explorer
Если бы задача была так тривиальна, как в моем примере, тогда да. Но он сильно упрощен.
На самом деле расчетных полей много и все они намного сложнее расчитываются. При этом необходимо именно создание новой таблицы, а не запрос, который будет выполняться при каждом обращении, а база будет сильно тупить.
Если конкретно, то это кредитный калькулятор, который на основе кучи начальных условий рассчитает график погашения тела кредита и начисления процентов. Сумма с нарастанием из моего примера - это задолженность по кредиту.
Но самое главное - заполнить таблицу датами. Если исходная таблица содержит 2 записи с датами 01.01.09 и 31.12.09, то в конечной таблице должно быть 365 записей: 01.01.09, 02.01.09, 03.01.09 и т.д. + прочие поля заполненные по разным правилам.
Мне главное понять алгоритм реализации, с остальным разберусь.
Давайте все же попробуем сделать. Еще раз спасибо! | |
|
| |
|
|
|
|
кредитный калькулятор... бугагаааааа извинте, нервное
я так реагирую на эту фразу и на "расчёт пени"
Короче - делать надо не в аксессе, если хотите, чтобы не "тупила база"
Особенно если речь идёт о сотнях тыщ записей...
Куча входных данных зависит от требований, который вам(или вы) выдвигают...
Вы что выдвинули сюда, то на выходе и получили :)
Хотя я, для сибя, когда кредит брал, в экселе руками наваял себе т.н. калькульятор и погашал кредиты, досрочно, и прогнозировал, сколько будет процентов, если я погашу столько-то или столько-то и тогда-то... Формула там не очень сложная :) из входящих данных: Тело кредита, процент по договору и курс валюты... А дальше тупо - математика :) типа расчитывается сумма процентов по телу кредита на один день и умножается на количество дней - сколько вы пользовались этим телом до следующего погашения :)... кстати есть два типа погашения - аннуитетный(равными частями) и классический... + с возможностями досрочного погашения или нет и т.д.
а просрочки ещё ведь считать? штрафы на это всё... та... вы сначала на бумажке определитесь с формализованным алгоритмом расчета, а уже потом к реализации придёте :) | |
|
| |
|
|
|
| кстати есть два типа погашения - аннуитетный(равными частями) и классический... + с возможностями досрочного погашения или нет и т.д. |
а есть еще кредитные линии, есть кредитные линии с ограничениями по траншам, а еще супсидирование... | |
|
| |
|
|
|
| a-a-a-a-a-a-a!!!
(в панике) | |
|
| |
|
|
|
| [добивает Эксплорера]
да это не страшно :)) т.к. начисление будет считаццо по траншам :))
з.ы. а почему "суп"сидирование? скоро обед? :) | |
|
| |
|
|
|
| а почему "суп"сидирование? скоро обед? :) |
ага, как раз собирался.
Прошу прощения, конечно суб | |
|
| |
|
|
|
| та не... какое прощение? :)) я ж тебя знаю! | |
|
| |
|
|
|
| Много чего еще есть, плата за невыборку кредита, комиссии и прочая хрень!
Но я не прошу все это учитывать - это мои проблемы (хотя возможно позже и обращусь с конкретными траблами).
Сейчас же нужно решить небольшую локальную задачу, как создать таблицу и заполнить ее массивом дат в разбивке по дням между минимальной и максимальной датами исходной таблицы или запроса. Вот и все !!! | |
|
| |
|
|
|
| я думаю, что если вы задаете ТАКИЕ вопросы дл яТАКОЙ задачи, то вам лучше нанять в реале более продвинутого программиста или обратиться в службу ИТ
буду краток
извините, но я не могу тратить время с человеком, который не знает как и где создавать таблицу , но при этом хочет реализовать проект достаточно высокого уровня сложности
адьё | |
|
| |
|
|
|
| Силыч, я конечно не высокого уровня в программировании, но думаю этот форум и нужен для повышения своих навыков.
Спасибо за предложенный выше вариант, но в моем случае не подойдет запрос на основе вспомогательной таблицы с датами (будь он на создание таблицы или нет). Нужна именно VBA процедура, которая бы раскладывала диапазон из нескольких дат на промежуточные записи от минимальной даты до максимальной с детализацией до дня и записывала это все в таблицу.
Обращаюсь ко всем участникам форума. | |
|
| |
|
|
|
|
но в моем случае не подойдет запрос на основе вспомогательной таблицы с датами
|
это хорошее, протое и распространенное решение. оно часто помогает упростить приложениеи ускорить обработку данных
кроме того помогающее расширить функционал - в таблице "календарь" можно хранить сведения о рабочих праздничных выходных днях, сезонных акциях, гибких тарифных ставках и т.п. | |
|
| |
|
|
|
| это не вспомогательная таблица! это очень необходимая таблица! такая есть в ЛЮБОЙ банковской системе. иначе это гавно , а не система :) вы упорно не желаете принимать наши советы :) ваше дело
я настаивать не буду | |
|
| |
|
|
|
| Кредитный калькулятор - куда уж проще! Как Силblч сказал, два типа, т.е. всего две формулы. Поиск по инету Вам в помощь. А написать процедуру на VBA для расчёта в цикле Вам сможет и школьник.
О каких таких ещё 365 датах между первым января и тридцать первым декабря речь? Что это за кредит такой, что за него каждый день платить надо?! Не, нам таких кредитов не надо, а калькуляторов и подавно. Ну, это шутка... ;-)
Уж не помню, как я реализовал свой калькулятор (посмотрел, вспомнил: открыл набор записей на таблице, в цикле добавил сколько чего надо с расчётом по формуле и ву-а-ля), только он считает ипотеку за... в общем, нажал кнопку и вот вам табличка с 240(!) записями, т.е. ежемесячные платежи. Ну, для домашнего использования большего не требуется. Или надо? Если надо, скажите, добавлю, может быть.
Так что, господа, не горячитесь. Создать таблицу с помощью VBA - это Вам тоже в поиск, т.к. я способов знаю, наверное, два, так что на память не помню (давно не создавал, а если понадобится, то подключу в ссылках библиотеку ADOX, там всё почти по-английский написано).
Про вспомогательную таблицу с календарём можно вопрос? Сколько в ней должно примерно храниться дат и за какой период от текущей (я так думаю, и в прошлое, и в будущее)? Это для общего развития, так сказать, сам то я банковскими системами не занимался. | |
|
| |
|
|
|
| >>Про вспомогательную таблицу с календарём
Обычно начальной датой есть дата начала работы системы
и до ... ну, столько не живут :) те, кто сейчас... например до 01.01.2200 | |
|
| |