powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Остаток по счету накопительным итогом в запросе с дополнительным условием
11 сообщений из 11, страница 1 из 1
Остаток по счету накопительным итогом в запросе с дополнительным условием
    #39970292
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет!
Решил разобратся с накопительным итогом в запросе (сумма счета - списано переносится на следующий счет . Критерий выборки - дата счета и порядковый номер записи). По умолчанию все работало нормально, но потребовалось добавить один дополнительный параметр в условие накопления, а именно код_договора, в рамках которого выставляется счет и чтобы сумма остатка/накопления формировалась исходя не только из даты счета и его порядкового номера , но и принимала во внимание код договора к которому относится данный счет. Ну то есть чтобы накопление шло и с учетом кода договора, к которому относится данный счет.
Список полей таблицы:
код_оплаты
номер_счета
дата_счета
счет_сумма
списано_сумма
код_договора


В запросе использовал агрегатные функции, так как необходим расчет на лету. Работает но никак не могу привинтить расчет с дополнительным параметром /условие накопления с учетом кода договора.
Вот пример на SQL access с расчетом накопительного остатка без учета кода договора:
Код: sql
1.
2.
3.
4.
SELECT т_счета.код_оплаты, т_счета.номер_счета, т_счета.дата_счета, т_счета.счет_сумма, т_счета.списано_сумма,  
Nz(DSum("счет_сумма-списано_сумма","т_счета","дата_счета<#" & Format([дата_счета],"mm\/dd\/yyyy") & "#"),0)
+Nz(DSum("счет_сумма-списано_сумма","т_счета","(код_оплаты<=" & [код_оплаты] & ")   And (дата_счета=#" & Format([дата_счета],"mm\/dd\/yyyy") & "#)"),0) AS Остаток, т_счета.код_договора
FROM т_счета;



Пытался подставить доп критерий типа
Код: sql
1.
... (код_оплаты<=" & [код_оплаты] & ") and (код_договора=" & [код_договора] & ")...

, но не выходит аленький цветочек
...
Рейтинг: 0 / 0
Остаток по счету накопительным итогом в запросе с дополнительным условием
    #39970306
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А,все, решил проблему, немного по другому:
Код: sql
1.
2.
SELECT т_счета.код_оплаты, т_счета.номер_счета, т_счета.дата_счета, т_счета.счет_сумма, т_счета.списано_сумма, [счет_сумма]-[списано_сумма] AS разница, DSum("счет_сумма-списано_сумма","т_счета","(код_оплаты<=" & [код_оплаты] & ") And (код_договора=" & [код_договора] & ")   And (дата_счета=#" & Format([дата_счета],"mm\/dd\/yyyy") & "#)") AS Остаток, т_счета.код_договора
FROM т_счета;

.
Попроще, но работает.
Приложил работоспособный пример для потомков во вложении.
...
Рейтинг: 0 / 0
Остаток по счету накопительным итогом в запросе с дополнительным условием
    #39970376
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Лалов,
я бы предпочла DSUM считать отдельно, чтобы можно было ее проконтролировать - слишком много на ней условий
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
SELECT т_счета.код_оплаты, т_счета.номер_счета,
   т_счета.дата_счета,
   т_счета.счет_сумма,
   т_счета.списано_сумма,
   [счет_сумма]-[списано_сумма] AS разница,
 DSum("счет_сумма-списано_сумма",
   "т_счета",
   "(код_оплаты<=" & [код_оплаты] 
   & ") And (код_договора=" & [код_договора] 
   & ")   And (дата_счета=#" & Format([дата_счета],"mm\/dd\/yyyy") & "#)") AS Остаток,
   т_счета.код_договора
FROM т_счета;
...
Рейтинг: 0 / 0
Остаток по счету накопительным итогом в запросе с дополнительным условием
    #39970408
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А почему не тривиально:
Код: vbnet
1.
SELECT ...., SUM(счет)-SUM(списано) AS Выражение FROM таблица WHERE усл AND усл1 AND усл2 GROUP BY ....

Условий =,<>,>,< через AND,OR до 32
(избави бог меня от такого)
...
Рейтинг: 0 / 0
Остаток по счету накопительным итогом в запросе с дополнительным условием
    #39970413
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПЕНСИОНЕРКА,
Да, вы правы, немного код растекся смотреть неудобно.
Еще один момент заметил, мой вышеуказанный пример формирует остаток на дату счета, если счет имеет новую дату ,то начисление остатка прерывается и начинается по счету с новой датой. Кто то, кому надо смотреть остатки на даты с разбивкой пример зайдет, а если надо чтобы непрерывно шел остаток вне зависимости от даты счета, то можно добавить один штрих:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
SELECT т_счета.код_оплаты, т_счета.номер_счета,
   т_счета.дата_счета,
   т_счета.счет_сумма,
   т_счета.списано_сумма,
   [счет_сумма]-[списано_сумма] AS разница,
 DSum("счет_сумма-списано_сумма",
   "т_счета",
   "(код_оплаты<=" & [код_оплаты] 
   & ") And (код_договора=" & [код_договора] 
   & ")   And (дата_счета<=#" & Format([дата_счета],"mm\/dd\/yyyy") & "#)") AS Остаток,
   т_счета.код_договора
FROM т_счета;



Надо добавить значок меньше ...& ") And (дата_счета<=#" & Format([дата_счета],"mm\/dd\/yyyy") & "#)") AS Остаток....
...
Рейтинг: 0 / 0
Остаток по счету накопительным итогом в запросе с дополнительным условием
    #39970414
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
еще тривиальней(см.Form1):
...
Рейтинг: 0 / 0
Остаток по счету накопительным итогом в запросе с дополнительным условием
    #39970416
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sdku
А почему не тривиально:
Код: vbnet
1.
SELECT ...., SUM(счет)-SUM(списано) AS Выражение FROM таблица WHERE усл AND усл1 AND усл2 GROUP BY ....

Условий =,<>,>,< через AND,OR до 32
(избави бог меня от такого)


Пойдет, но мне нужно чтобы менялось значение в запросе аксесовском, сразу после ввода туда же. Конструкции с GROUP BY в теле запроса не дают менять пользователю данные ( В таком синтаксе как вы указали. Так то можно извратится с DISTINCT , но агрегатными удобней решилось)
...
Рейтинг: 0 / 0
Остаток по счету накопительным итогом в запросе с дополнительным условием
    #39970417
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sdku
еще тривиальней(см.Form1):


У меня сразу и вводится в запрос аксесовский и сразу на лету пересчитывается там же. Вы немного не те примеры шлете)
...
Рейтинг: 0 / 0
Остаток по счету накопительным итогом в запросе с дополнительным условием
    #39970425
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Лалов
Пойдет, но мне нужно чтобы менялось значение в запросе аксесовском(что Вы имеете в виду?) , сразу после ввода туда же.(куда?)
...
Рейтинг: 0 / 0
Остаток по счету накопительным итогом в запросе с дополнительным условием
    #39970426
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Лалов
У меня сразу и вводится в запрос аксесовский и сразу на лету пересчитывается там же. Вы немного не те примеры шлете)
Запрос по любому придется перезапускать,чтоб увидеть диалоги ввода параметров. С формы же все можно сделать автоматически после обновления любого поля ввода параметров
...
Рейтинг: 0 / 0
Остаток по счету накопительным итогом в запросе с дополнительным условием
    #39970512
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sdku
Сергей Лалов
Пойдет, но мне нужно чтобы менялось значение в запросе аксесовском(что Вы имеете в виду?) , сразу после ввода туда же.(куда?)


Да уже все сделано ,еще до ваших комментов, можно расслабится)

Вот образец, когда вы на подчиненной форме заполняете счета по договору чуть выше, при проставлении суммы счета и суммы списания в этой же подчиненной форме счета остаток рассчитывается автоматически. В этой же форме , там где вы меняете сумму счета и сумму списания. Основой подчиненной формы пф_счета служит аксесовский запрос с агрегатными функциями, которые позволяют не только что рассчитывать , но и править поля в этом же запросе параллельно.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Остаток по счету накопительным итогом в запросе с дополнительным условием
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]