| |
|
|
| | Access 2007. Есть есть форма с полями:
Дата, Дебет, Кредит, Сальдо
где Сальдо = Сальдо_предыдущее + Дебет - Кредит.
Вычисление Сальдо происходит популярным методом "Запрос, выдающий сумму полей с накоплением". RowSource формирую программно в VBA.
Нужно печатать отчет за выбранный месяц.
Выбрать записи за месяц несложно, но тогда расчет сальдо будет неверен, т.к. он должен идти с самой первой записи. Печатать отчет с самой первой записи тоже неприемлимо, потому что тогда в отчете будут сотни страниц данных за предыдущие месяцы.
Вопрос - как напечатать отчет за нужный месяц, сохранив последовательность расчета сальдо?
Может быть, можно как-то взять данные из нужных строк в виде цифр и перенести их во временную таблицу и уже эту таблицу распечатать?
Или как-то скрыть данные за предыдущие месяцы?
Вариант с подытоживанием данных за каждый месяц меня не устраивает, потому что могут вноситься изменения за предыдущие 2-3 месяца (Это обязательное требование заказчика, про то, что в бухгалтерии так не делается, я знаю). | |
| |
| |
| |
 13 Кб. |
|
| | Вот вам направление в котором как мне кажется необходимо двигаться.......
смысл в том что нужно пересчитать таблицу перед выводом отчета
а отчет выводить на основе обыкновенного запроса с Between или >= [дата начала периода] and <=[дата окончания периода]
как пересчитать таблицу в присоединенном примере
на какие событие вешать перерасчет решайте сами | |
| |
| |
| |
|
|
| | Весь прикол в том, что Сальдо - это не хранимое в таблице поле, а вычисляемое поле. Поэтому если сделать запрос с Between или >= [дата начала периода] and <=[дата окончания периода], то расчет сальдо будет неверен, поскольку в нем не будут участвовать приходы и расходы до [дата начала периода]. Например:
Дата_____Приход_______Расход_______Сальдо
01янв_____10____________5____________5
02фев_____30____________20___________15
Если брать [дата начала периода]=01фев (начало месяца), то получим отчет
Дата_____Приход_______Расход_______Сальдо
02.01_____30____________20___________10
А на самом деле сальдо = 15.
Сделать таблицу с таким хранимым полем я тоже не могу, потому что если копать глубже, то Приход, Расход - у меня тоже вычисляемые поля, как сумма СубПриходов ну знаете как если бы вы оплатили счет:
Принтер 6000 (субрасход)
Чернила 400 (субрасход)
Итого Расход=6400.
Я просто не стал этим загромождать тему, потому прошу вернуться к первому вопросу - можно ли перенести нужные строки как они есть из формы в отчет или в другую таблицу? | |
| |
| |
| |
|
|
| | аааа - вона что
дай часика полтора переделаю | |
| |
| |
| |
 21 Кб. |
|
| | вот | |
| |
| |
| |
|
|
| | Классно. Спасибо большое. | |
| |
| |
| |
|
|
| | Простите - а Beetvin он тута нету...  | |
| |
| |
| |
|
|
| | Обижаешь начальник
форма1 кнопка4 Click | |
| |
| |
| |
|
|
| | звините..........
=====================
Получается весь пересчёт за всё время работы во временную таблу за один присест, а потом оттуда достаём период и на печать его.....
=========================
И так, как (могут вноситься изменения за предыдущие 2-3 месяца ) это надо начинать с самой первой записи - например за несколько лет....
ну ды ни чё .....
| |
| |
| |
| |
|
|
| | Я все-таки эту тему по-другому решил: объединяю два динамических запроса. Первый запрос считает входящее сальдо на выбранную дату и выдает его одно строкой, второй запрос - выдает все записи, начиная с выбранной даты. | |
| |
| |
| |
|
|
| | Не совсем так - во временную таблу кидаются действия за период
потом при помощи DSum считается сальдо на начало периода (DSum(приход)-DSum(расход))
а далее сальдо на каждое действие в периоде | |
| |
| |
| |
|
|
| | ААААААААААААААААААААААААА  | |
| |
| |