powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Определить дату
8 сообщений из 8, страница 1 из 1
Определить дату
    #32186999
Kriven
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет.
Попробую правильно описать проблемму
Есть две таблицы:
ЗАКАЗЫ. - |код заказа | порог|
ПЛАТЕЖИ. - |код | код заказа| дата платежа|сумма платежа|
Поля ЗАКАЗЫ.[код заказа] и ПЛАТЕЖИ.[код заказа] связанны

К примеру имеем данные: заказы -| 1 | 500|
платежи - |1|1|12.01.2003|100|
|2|1|12.02.2003|120|
|3|1|15.02.2003|281|
|4|1|12.02.2003|150|
На форме мне нужно установить комбик что бы в нем выводилась дата (в данном случае 15.02.2003) когда сумма платежей равна или преодолела порог (500). Как мне написать для него запрос?
Заранее благодарен.
...
Рейтинг: 0 / 0
Определить дату
    #32187018
Kriven
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наверное никак?
...
Рейтинг: 0 / 0
Определить дату
    #32187371
Alexus12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Первое, что приходит в голову:
1. Группировочный запрос по оплатам, код, max на дату и sum на сумму
2. Join (1) с табл. заказов (по коду ;), расчет остатков по каждому заказу.
Если > - выводить в ЕщеОдноНовоеПолеЗапроса дату, иначе - нулл или "не оплачено"

Согласно первой строчке это может и не быть самым оптимальным решением ;)
...
Рейтинг: 0 / 0
Определить дату
    #32187391
VIG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если у тебя поле код в таблице платежи уникально то можно так
Код: plaintext
1.
2.
select c.date,sum(c.pay)  as Pay from 
(select  distinct a.OrderCod,a.date,b.Pay from Payment as a left join Payment as b on a.OrderCod=b.OrderCod and a.id>=b.id) as c
group by c.date having sum(c.pay)>= 500 
...
Рейтинг: 0 / 0
Определить дату
    #32187629
VIG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Правильнее будет так
Код: plaintext
1.
2.
select   a.cod,a.[дата платежа],sum(b.Платеж) as SumP 
from ПЛАТЕЖИ as a INNER join ПЛАТЕЖИ as b on a.[код заказа]=b.[код заказа] and a.код>=b.код
group by a.[код заказа],a.код,a.[дата платежа] having sum(b.Платеж)>= (select c.порог from ЗАКАЗЫ c where c.код=a.код) 
...
Рейтинг: 0 / 0
Определить дату
    #32187724
Nick987
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можно расширить таблицу Заказы:
|код заказа | порог|текущая сумма|
и при каждом платеже обновлять поле "текущая сумма"
таким образом, усложняя логигу на внесение платежей, упрощаем обработку и, возможно, существенно убыстряем вывод в форму.
...
Рейтинг: 0 / 0
Определить дату
    #32187759
Nick987
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В данном случае надо еще добавить поле "Дата преодоления порога":
|код заказа | порог|текущая сумма|Дата преодоления порога
...
Рейтинг: 0 / 0
Определить дату
    #32187930
Kriven
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexus12: C MAXом не пойдет. платежи на этом не заканчиваются, и будет вылетать последняя дата.
Пошел простым путем и добавил логическое поле в таблицу ЗАКАЗЫ по которому и определяю дату.
Спасибо всем.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Определить дату
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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