Гость
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Остаток по счету накопительным итогом в запросе с дополнительным условием / 11 сообщений из 11, страница 1 из 1
17.06.2020, 16:56
    #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
17.06.2020, 17:25
    #39970306
Сергей Лалов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Остаток по счету накопительным итогом в запросе с дополнительным условием
А,все, решил проблему, немного по другому:
Код: sql
1.
2.
SELECT т_счета.код_оплаты, т_счета.номер_счета, т_счета.дата_счета, т_счета.счет_сумма, т_счета.списано_сумма, [счет_сумма]-[списано_сумма] AS разница, DSum("счет_сумма-списано_сумма","т_счета","(код_оплаты<=" & [код_оплаты] & ") And (код_договора=" & [код_договора] & ")   And (дата_счета=#" & Format([дата_счета],"mm\/dd\/yyyy") & "#)") AS Остаток, т_счета.код_договора
FROM т_счета;

.
Попроще, но работает.
Приложил работоспособный пример для потомков во вложении.
...
Рейтинг: 0 / 0
17.06.2020, 19:55
    #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
17.06.2020, 22:55
    #39970408
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Остаток по счету накопительным итогом в запросе с дополнительным условием
А почему не тривиально:
Код: vbnet
1.
SELECT ...., SUM(счет)-SUM(списано) AS Выражение FROM таблица WHERE усл AND усл1 AND усл2 GROUP BY ....

Условий =,<>,>,< через AND,OR до 32
(избави бог меня от такого)
...
Рейтинг: 0 / 0
18.06.2020, 00:00
    #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
18.06.2020, 00:01
    #39970414
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Остаток по счету накопительным итогом в запросе с дополнительным условием
еще тривиальней(см.Form1):
...
Рейтинг: 0 / 0
18.06.2020, 00:04
    #39970416
Сергей Лалов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Остаток по счету накопительным итогом в запросе с дополнительным условием
sdku
А почему не тривиально:
Код: vbnet
1.
SELECT ...., SUM(счет)-SUM(списано) AS Выражение FROM таблица WHERE усл AND усл1 AND усл2 GROUP BY ....

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


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


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


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

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


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