Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Access
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.06.2016, 11:48   #1
konfeta5
 
Регистрация: 16.03.2014
Сообщений: 6
По умолчанию Запрос по дате Access 2010

Есть таблица Table (3 поля: Field,Number, Data), в которой данные поступают нарастающим итогом, т.е. по полю Field каждое новое значение и дата должны быть больше предыдущего.
При запуске базы данных открывается форма Form1, в которой есть 2 поля для ввода даты начала периода и конца периода и 2 кнопки. Кнопка «Запрос Query по всем записям таблицы» просто выводит запрос Query. Кнопка «Запрос Query1 по дате» открывает запрос Query1.
Запрос Query:
Код:
SELECT П1.Code, П1.Field, П1.Number, П1.Data, [П1].[Number]-(select П3.Number from [Table] as П3                                                          where П3.Field = П1.Field                                                            and П3.Data = (select Max(Data)                                                                           from [Table] as П2                                                                           where П2.Field = П1.Field and П1.Data > П2.Data)) AS Difference
FROM [Table] AS П1
ORDER BY П1.Data;
Суть запроса Query в том, что добавляется поле Difference, которое вычисляет значение по полю Field как разница между предыдущим Number и текущим Number. Например, Field f3: была дата 02.02.1990 со значением 3, следующая дата 05.02.1990 со значением 19, поле разница будет вычислено как 19 – 3 = 16.
Запрос Query1 (выбирает данные не из таблицы Table, а из запроса Prom):
Код:
SELECT П1.Code, П1.Field, П1.Number, П1.Data, [П1].[Number]-(select П3.Number from [Prom] as П3                                                          where П3.Field = П1.Field                                                            and П3.Data = (select Max(Data)                                                                           from [Prom] as П2                                                                           where П2.Field = П1.Field and П1.Data > П2.Data)) AS Difference
FROM Prom AS П1
ORDER BY П1.Data;
Промежуточный запрос Prom (для считывания даты начала и даты конца с полей формы Form1):
Код:
SELECT Table.Code, Table.Field, Table.Number, Table.Data, Table.Difference
FROM [Table]
WHERE (((Table.Data)>=[Forms]![Form1]![FF1] And (Table.Data)<=[Forms]![Form1]![FF2]))
ORDER BY Table.Data;
Таким образом, разница между запросом Query и запросом Query1 в том, что запрос Query1 делает выборку по дате. Проблема в том, что запрос Query1 работает неправильно.
Например, в запросе Query по полю Field и дате 07.05.1990 поле Difference вычисляется как (15-10 = 5), а в запросе Query1 поле Difference = 0 (запрос не видит предыдущее значение).
Помогите, пожалуйста, переписать запрос так, чтобы перед выполнением запроса Query1 можно было выбирать временной период по дате.
Изображения
Тип файла: jpg Form1.jpg (30.4 Кб, 129 просмотров)
Тип файла: png Prom.png (16.4 Кб, 57 просмотров)
Тип файла: png Query.png (18.7 Кб, 58 просмотров)
Тип файла: png Query1.png (16.2 Кб, 58 просмотров)
Тип файла: png Table.png (17.4 Кб, 52 просмотров)
Вложения
Тип файла: zip Table-ICH.zip (57.3 Кб, 10 просмотров)
konfeta5 вне форума Ответить с цитированием
Старый 18.06.2016, 16:52   #2
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Если должны учитываться предыдущие значения, тогда в чем смысл "Начальной даты"?
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как оптимизировать SQL запрос MS Access 2010 italru Microsoft Office Access 0 09.06.2016 06:53
Пк часто прекращает работу при запуске Microsoft Access(Версия Access 2010) coffinsoul Microsoft Office Access 5 21.02.2016 00:12
Переписывание файла adp под Access 2007 или Access 2010 Анатолий_2014 Microsoft Office Access 1 02.09.2014 20:12
Запрос по дате, Access Demien БД в Delphi 2 09.02.2011 18:25
Запрос по дате program123 БД в Delphi 4 17.03.2010 19:53