Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Вычисляемые поля. Как вывести на печать нужные записи, не нарушая последовательность вычисления?
 
 автор: Stanislav   (27.02.2010 в 04:27)   личное сообщение
 
 

Access 2007. Есть есть форма с полями:

Дата, Дебет, Кредит, Сальдо

где Сальдо = Сальдо_предыдущее + Дебет - Кредит.
Вычисление Сальдо происходит популярным методом "Запрос, выдающий сумму полей с накоплением". RowSource формирую программно в VBA.

Нужно печатать отчет за выбранный месяц.
Выбрать записи за месяц несложно, но тогда расчет сальдо будет неверен, т.к. он должен идти с самой первой записи. Печатать отчет с самой первой записи тоже неприемлимо, потому что тогда в отчете будут сотни страниц данных за предыдущие месяцы.
Вопрос - как напечатать отчет за нужный месяц, сохранив последовательность расчета сальдо?
Может быть, можно как-то взять данные из нужных строк в виде цифр и перенести их во временную таблицу и уже эту таблицу распечатать?
Или как-то скрыть данные за предыдущие месяцы?
Вариант с подытоживанием данных за каждый месяц меня не устраивает, потому что могут вноситься изменения за предыдущие 2-3 месяца (Это обязательное требование заказчика, про то, что в бухгалтерии так не делается, я знаю).

  Ответить  
 
 автор: snipe   (27.02.2010 в 08:30)   личное сообщение
13 Кб.
 
 

Вот вам направление в котором как мне кажется необходимо двигаться.......

смысл в том что нужно пересчитать таблицу перед выводом отчета
а отчет выводить на основе обыкновенного запроса с Between или >= [дата начала периода] and <=[дата окончания периода]

как пересчитать таблицу в присоединенном примере

на какие событие вешать перерасчет решайте сами

  Ответить  
 
 автор: Stanislav   (27.02.2010 в 10:27)   личное сообщение
 
 

Весь прикол в том, что Сальдо - это не хранимое в таблице поле, а вычисляемое поле. Поэтому если сделать запрос с Between или >= [дата начала периода] and <=[дата окончания периода], то расчет сальдо будет неверен, поскольку в нем не будут участвовать приходы и расходы до [дата начала периода]. Например:

Дата_____Приход_______Расход_______Сальдо
01янв_____10____________5____________5
02фев_____30____________20___________15

Если брать [дата начала периода]=01фев (начало месяца), то получим отчет
Дата_____Приход_______Расход_______Сальдо
02.01_____30____________20___________10
А на самом деле сальдо = 15.
Сделать таблицу с таким хранимым полем я тоже не могу, потому что если копать глубже, то Приход, Расход - у меня тоже вычисляемые поля, как сумма СубПриходов ну знаете как если бы вы оплатили счет:
Принтер 6000 (субрасход)
Чернила 400 (субрасход)
Итого Расход=6400.
Я просто не стал этим загромождать тему, потому прошу вернуться к первому вопросу - можно ли перенести нужные строки как они есть из формы в отчет или в другую таблицу?

  Ответить  
 
 автор: snipe   (27.02.2010 в 10:31)   личное сообщение
 
 

аааа - вона что
дай часика полтора переделаю

  Ответить  
 
 автор: snipe   (27.02.2010 в 12:05)   личное сообщение
21 Кб.
 
 

вот

  Ответить  
 
 автор: Stanislav   (28.02.2010 в 04:49)   личное сообщение
 
 

Классно. Спасибо большое.

  Ответить  
 
 автор: час   (15.03.2010 в 07:34)   личное сообщение
 
 

Простите - а Beetvin он тута нету...

  Ответить  
 
 автор: snipe   (15.03.2010 в 08:03)   личное сообщение
 
 

Обижаешь начальник

форма1 кнопка4 Click

  Ответить  
 
 автор: час   (15.03.2010 в 08:30)   личное сообщение
 
 

звините..........

=====================
Получается весь пересчёт за всё время работы во временную таблу за один присест, а потом оттуда достаём период и на печать его.....
=========================
И так, как (могут вноситься изменения за предыдущие 2-3 месяца ) это надо начинать с самой первой записи - например за несколько лет....
ну ды ни чё .....

  Ответить  
 
 автор: Stanislav   (15.03.2010 в 12:23)   личное сообщение
 
 

Я все-таки эту тему по-другому решил: объединяю два динамических запроса. Первый запрос считает входящее сальдо на выбранную дату и выдает его одно строкой, второй запрос - выдает все записи, начиная с выбранной даты.

  Ответить  
 
 автор: snipe   (15.03.2010 в 12:31)   личное сообщение
 
 

Не совсем так - во временную таблу кидаются действия за период
потом при помощи DSum считается сальдо на начало периода (DSum(приход)-DSum(расход))
а далее сальдо на каждое действие в периоде

  Ответить  
 
 автор: час   (15.03.2010 в 12:56)   личное сообщение
 
 

ААААААААААААААААААААААААА

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList