powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Остаток
20 сообщений из 20, страница 1 из 1
Остаток
    #39074545
*\/*#*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уважаемые знатоки помогите реализовать следующий замут:
есть 4 таблицы (см. картинку)
нужные данные хранятся в таблицах td_KBK_ZKR - расход и td_KBK_Reestr_Finans - финансирование
таблицы td_KBK_ZKR имеет следующий вид:

Код: vbnet
1.
2.
3.
4.
5.
KBK_PAY(КБК)                       SUM_R_KBK (сумма)
95105030522013244225          8000,00
95104090412006244225          5000,00
95101028810011121211          2000,00
95104090417351244225          1000,00


таблицы td_KBK_Reestr_Finans имеет следующий вид:
KBK_Reestr_Finans(КБК) summa_KBK_Reestr_Finans(сумма)
Код: vbnet
1.
2.
3.
4.
5.
95105030522013244225             10000,00
95104090412006244225             7000,00
95101028810011121211             2000,00
95104090417351244225             1000,00
95101028810011122212            3000,00


задача заключается в том, чтобы получить остаток средств на указанную дату
т.е. должно получится так
Код: vbnet
1.
2.
3.
4.
5.
кбк                                       сумма(финансирования)               сумма(расхода)               Остаток средств
95105030522013244225             10000,00                                    8000,00                           2000,00
95104090412006244225             8000,00                                     6000,00                            2000,00
95101028810011121211             2000,00                                     2000,00                            0,00
95101028810011122212             3000,00                                      0,00                                3000,00



Даты расходов и финансирования хранятся td_ZKR и td_reestr_finans связанных с td_KBK_ZKR и td_KBK_Reestr_Finans по ключевым полям.
пока реализовано через кучу сохраненных запросов и без отбора по дате
хотелось бы обойтись без сохраненных запросов.
...
Рейтинг: 0 / 0
Остаток
    #39074546
*\/*#*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Забыл про картинку
...
Рейтинг: 0 / 0
Остаток
    #39074551
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
*\/*#*хотелось бы обойтись без сохраненных запросов.
Ну реализуй подзапросами. Всё равно суммировать по КБК каждую таблицу придётся.
...
Рейтинг: 0 / 0
Остаток
    #39074564
*\/*#*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,

а как насчет такого, что в таблице финансирования КБК есть, а расхода еще не было и в таблице расходов такого КБК еще нет, в таком случаи разность получить не получается (тавтология).
как обойти?
...
Рейтинг: 0 / 0
Остаток
    #39074586
*\/*#*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
т.е у меня есть 3 запроса
1 группировка финансирования
Код: vbnet
1.
2.
3.
SELECT td_KBK_Reestr_Finans.KBK_Reestr_Finans, Sum(td_KBK_Reestr_Finans.summa_KBK_Reestr_Finans) AS [Sum-summa_KBK_Reestr_Finans]
FROM td_KBK_Reestr_Finans
GROUP BY td_KBK_Reestr_Finans.KBK_Reestr_Finans;


2 группировка расхода
Код: vbnet
1.
2.
3.
SELECT td_KBK_ZKR.KBK_PAY, Sum(td_KBK_ZKR.SUM_R_KBK) AS [Sum-SUM_R_KBK]
FROM td_KBK_ZKR
GROUP BY td_KBK_ZKR.KBK_PAY;


3 Подсчет остатка
Код: vbnet
1.
2.
SELECT q_KBK_finans.KBK_Reestr_Finans, q_KBK_finans.[Sum-summa_KBK_Reestr_Finans], q_KBK_ZKR.[Sum-SUM_R_KBK], [Sum-summa_KBK_Reestr_Finans]-[Sum-SUM_R_KBK] AS Остаток
FROM q_KBK_finans INNER JOIN q_KBK_ZKR ON q_KBK_finans.KBK_Reestr_Finans = q_KBK_ZKR.KBK_PAY;



но КБК по которым не было расхода в з запросе не отображаются
...
Рейтинг: 0 / 0
Остаток
    #39074588
*\/*#*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
9090,

а мне нравится все делать на VBA
...
Рейтинг: 0 / 0
Остаток
    #39074591
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
*\/*#*но КБК по которым не было расхода в з запросе не отображаются А тип связи?
...
Рейтинг: 0 / 0
Остаток
    #39074600
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пардоньте-не связи, а объединения
...
Рейтинг: 0 / 0
Остаток
    #39074601
*\/*#*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В принципе не суть сохраненный запрос или нет.
главное чтобы считались остатки с нулевым расходом.
И как добавить отбор по дате
...
Рейтинг: 0 / 0
Остаток
    #39074607
*\/*#*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdku,

схема объединения во втором посте (картинка). Если я правильно Вас понял
...
Рейтинг: 0 / 0
Остаток
    #39074629
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
*\/*#*как насчет такого, что в таблице финансирования КБК есть, а расхода еще не было и в таблице расходов такого КБК еще нет, в таком случаи разность получить не получается (тавтология).
как обойти?Почитать, что такое LEFT JOIN. Ну и до кучи COALESCE() или хотя бы IFNULL().
...
Рейтинг: 0 / 0
Остаток
    #39074664
*\/*#*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,

Спасибо с вашей помощью дело продвигается!
вот только не пойму как применить IsNull
если пишу так, то в столбце финансирование выходят все нули
Код: vbnet
1.
2.
SELECT q_KBK_finans.KBK_Reestr_Finans, IsNull([Sum-summa_KBK_Reestr_Finans]) AS Финансирование, q_KBK_ZKR.[Sum-SUM_R_KBK], [Sum-summa_KBK_Reestr_Finans]-[Sum-SUM_R_KBK] AS Остаток, q_KBK_finans.[Sum-summa_KBK_Reestr_Finans]
FROM q_KBK_finans LEFT JOIN q_KBK_ZKR ON q_KBK_finans.KBK_Reestr_Finans = q_KBK_ZKR.KBK_PAY;
...
Рейтинг: 0 / 0
Остаток
    #39074667
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
*\/*#*вот только не пойму как применить IsNull
Распечатайте мой постинг и свой ответ. Потом возьмите карандаш и сравнивайте написанное наименование функции, вычёркивая буквы. Авось поймёте.
...
Рейтинг: 0 / 0
Остаток
    #39074673
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
*\/*#*,
В конструкторе запросов щелкаете правой кнопкой мыша на связи таблиц, появляется окно "параметры объединения" по умолчанию стоит первый тип Вам же надо второй или третий
...
Рейтинг: 0 / 0
Остаток
    #39074675
*\/*#*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,

функции IFNULL () нет в построителе выражений
...
Рейтинг: 0 / 0
Остаток
    #39074685
*\/*#*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
*\/*#*Akina,

функции IFNULL () нет в построителе выражений

Допетрил сделал свою функцию на проверку на NULL
Код: vbnet
1.
2.
3.
Public Function IFNULL(znach As Variant) As Variant
If IsNull(znach) Then IFNULL= 0 Else IFNULL = znach
End Function


и нули появились там где надо.
теперь остаток выводится правильно.
Остался вопрос с отбором по дате
...
Рейтинг: 0 / 0
Остаток
    #39074697
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
*\/*#**\/*#*Akina,

функции IFNULL () нет в построителе выражений

Допетрил сделал свою функцию на проверку на NULL
Код: vbnet
1.
2.
3.
Public Function IFNULL(znach As Variant) As Variant
If IsNull(znach) Then IFNULL= 0 Else IFNULL = znach
End Function


и нули появились там где надо.
теперь остаток выводится правильно.
Остался вопрос с отбором по датеДля этого ужк есть функция Nz.
...
Рейтинг: 0 / 0
Остаток
    #39074734
Прогер_самоучка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
9090автор ...
Для этого ужк есть функция Nz. вроде
она тока в Аксе


иль ВБ6
точно - не помнюа мы сейчас где? Не в АксЕ?
...
Рейтинг: 0 / 0
Остаток
    #39074779
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
*\/*#*Akina,

функции IFNULL () нет в построителе выраженийнет такой функции-есть IsNull (не изобретайте велосипед)
...
Рейтинг: 0 / 0
Остаток
    #39075632
*\/*#*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdku*\/*#*Akina,

функции IFNULL () нет в построителе выраженийнет такой функции-есть IsNull (не изобретайте велосипед)

я про это и говорил что такой функции нет.


В общем реализовать идею получилось с использованием 5 сохраненных запросов.

Теперь есть идейка сделать по "чекбоксу" выводить строки с нулевым остатком или не выводить, но вот не знаю как прописать условие в сохраненном запросе реагирующее на "чекбокс" на форме.
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Остаток
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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