Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Помесячный расчет / 11 сообщений из 11, страница 1 из 1
12.04.2004, 15:53
    #32477775
Strukov Max
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помесячный расчет
Имеем таблицу договоров аренды в которой указаны даты начала и окончания договора, форму куда вводится начало и окончание отчетного периода.
Необходимо получить данные по начислению арендной платы в каждый месяц периода.
Запрос на выборку договоров удовлетворяющих условиям отчетного периода создал, что дальше делать недотумкаю. ПОМОГИТЕ!
...
Рейтинг: 0 / 0
12.04.2004, 15:55
    #32477782
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помесячный расчет
А надо, чтобы каждый месяц был в отдельной строке? Тогда нужна таблица месяцев.
...
Рейтинг: 0 / 0
12.04.2004, 15:55
    #32477783
Geo
Geo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помесячный расчет
Как ВС сказал?
Названия таблиц и столбцов, а также текст запроса разглядеть не могу - очень мелко.
...
Рейтинг: 0 / 0
12.04.2004, 15:58
    #32477790
Strukov Max
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помесячный расчет
SELECT [Договоры аренды].Код, [Договоры аренды].Арендатор, [Договоры аренды].Арендодатель, [Договоры аренды].[Арендуемый объект], [Договоры аренды].[Арендуемая в объекте площадь], [Договоры аренды].[Цена за квм в месяц], [Договоры аренды].[цена по договору за месяц], [Договоры аренды].[реквизиты договора], [Договоры аренды].[Начало договора], [Договоры аренды].[срок окончания], [Договоры аренды].[Действует/недействует]
FROM [Договоры аренды]
WHERE ((([Договоры аренды].Арендатор) Like "*" & [Forms]![ВыборДоговоровАренды]![Арендатор]) AND (([Договоры аренды].Арендодатель) Like "*" & [Forms]![ВыборДоговоровАренды]![Арендодатель]) AND (([Договоры аренды].[Начало договора])<=[Forms]![ВыборДоговоровАренды]![СДаты]) AND (([Договоры аренды].[срок окончания])>=[Forms]![ВыборДоговоровАренды]![ПоДату])) OR ((([Договоры аренды].Арендатор) Like "*" & [Forms]![ВыборДоговоровАренды]![Арендатор]) AND (([Договоры аренды].Арендодатель) Like "*" & [Forms]![ВыборДоговоровАренды]![Арендодатель]) AND (([Договоры аренды].[Начало договора])<=[Forms]![ВыборДоговоровАренды]![СДаты]) AND (([Договоры аренды].[срок окончания])<=[Forms]![ВыборДоговоровАренды]![ПоДату] And ([Договоры аренды].[срок окончания])>[Forms]![ВыборДоговоровАренды]![СДаты])) OR ((([Договоры аренды].Арендатор) Like "*" & [Forms]![ВыборДоговоровАренды]![Арендатор]) AND (([Договоры аренды].Арендодатель) Like "*" & [Forms]![ВыборДоговоровАренды]![Арендодатель]) AND (([Договоры аренды].[Начало договора])>=[Forms]![ВыборДоговоровАренды]![СДаты]) AND (([Договоры аренды].[срок окончания])<=[Forms]![ВыборДоговоровАренды]![ПоДату])) OR ((([Договоры аренды].Арендатор) Like "*" & [Forms]![ВыборДоговоровАренды]![Арендатор]) AND (([Договоры аренды].Арендодатель) Like "*" & [Forms]![ВыборДоговоровАренды]![Арендодатель]) AND (([Договоры аренды].[Начало договора])>=[Forms]![ВыборДоговоровАренды]![СДаты] And ([Договоры аренды].[Начало договора])<[Forms]![ВыборДоговоровАренды]![ПоДату]) AND (([Договоры аренды].[срок окончания])>=[Forms]![ВыборДоговоровАренды]![ПоДату]));

А получить теперь надо перекрестную таблицу:
Строки - Номера договоров (их идентификаторы)
Столбцы - месяцы в интервале (проблемма в том, что интервал может быть и один месяц и 26 и 128)
...
Рейтинг: 0 / 0
12.04.2004, 16:01
    #32477799
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помесячный расчет
Таблица месяцев нужна. Пардон, если повторяюсь.
...
Рейтинг: 0 / 0
12.04.2004, 16:04
    #32477807
Strukov Max
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помесячный расчет
Понятно - таблица месяцев - 12 штук а дальше что?
Ну тупой я тупой.
Или таблицу не на 12 месяцев а на ожидемый перод работы с базой ?
...
Рейтинг: 0 / 0
12.04.2004, 16:06
    #32477814
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помесячный расчет
Можно на весь период. А можно ровно 12, но тогда надо еще таблицу годов, и тогда она должна быть на весь период. IMHO, первый вариант лучше.

Дальше добавляем эту таблицу месяцев в запрос с условием "от - до". И вычисляем то, что нужно, на один месяц.
...
Рейтинг: 0 / 0
12.04.2004, 16:25
    #32477846
Geo
Geo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помесячный расчет
1. Максимальное кол-во столбцов в перекрестном запросе - не то 200, не то 250.

2. Делаем таблицы Месяцы (из одного поля "Месяц", с числами от 1 до 12) и Года (из одного поля "Год" с числами, скажем, от 1901 до 2099 :)

3. Создаем в каком-нибудь модуле

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Public Function GetFirstDate() As Date
  GetFirstDate = [Forms]![ВыборДоговоровАренды]![сДаты]
End Function

Public Function GetLastDate() As Date
  GetLastDate = [Forms]![ВыборДоговоровАренды]![поДату]
End Function

Public Function GetSaler() As String
  GetSaler = [Forms]![ВыборДоговоровАренды]![Арендодатель]
End Function

Public Function GetPayer() As String
  GetPayer = [Forms]![ВыборДоговоровАренды]![Арендатор]
End Function

У меня перекрестный запрос не захотел к форме обращаться в 97-м акцессе.

4. Сам запрос:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
TRANSFORM First([Договоры аренды].[Цена по договору за месяц]) AS [First_Цена по договору за месяц]
SELECT [Договоры аренды].Код
FROM [Договоры аренды], Года, Месяцы
WHERE ((([Договоры аренды].Арендатор)=GetPayer()) AND 
(([Договоры аренды].Арендодатель)=GetSaler()) AND (([Договоры аренды].[Начало договора])<=GetLastDate()) 
AND (([Договоры аренды].[Срок окончания])>=GetFirstDate()) 
AND (([Год]* 12 +[Месяц]) Between (Year([Начало договора])* 12 +Month([Начало договора])) And (Year([Срок окончания])* 12 +Month([Срок окончания]))))
GROUP BY [Договоры аренды].Код
PIVOT Format([Месяц], "00 ") &  "-"  & Format([Год], "0000 ");

(запрос не проверял, но должен работать :)
...
Рейтинг: 0 / 0
12.04.2004, 16:59
    #32477931
Strukov Max
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помесячный расчет
СУПЕР!
Спасибо огромное!!!
...
Рейтинг: 0 / 0
13.04.2004, 14:50
    #32479245
Strukov Max
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помесячный расчет
Такс-с-с-с
Прдскажите, плз, как теперь на основе этого запроса генерировать изменяемую форму? Ну или в окошке в форме просматривать результаты этого запроса?
...
Рейтинг: 0 / 0
13.04.2004, 17:10
    #32479661
Geo
Geo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помесячный расчет
Изменяемую - только через временную таблицу
(select * from ThatQuery into TempTable)

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


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