powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / DLookUp с сортировкой
25 сообщений из 33, страница 1 из 2
DLookUp с сортировкой
    #32561120
ThuG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Скажите, пожалуйста, как с помощью DLookUp взять из таблицы БЛИЖАЙШУЮ к найденной дате.

Я понимаю, что надо использовать <, но не факт, что аналог рекордсета для DLookUp упорядочится нужным образом.

То есть с помощью RS это делается так:

Data = Format(Нужная дата с формы, "бла-бла")
strSQL = "SELECT [Дата] FROM [Таблица] WHERE [Дата] <= #" & Data & "# ORDER BY [Дата] ;"
Set rsSource = CurrentDb.OpenRecordset(strSQL)
If Not (rsSource.BOF And rsSource.EOF) Then
rsSource.MoveLast
Temp = rsSource.Fields("[Дата]")

Тогда в Temp будет ближайшая дата к дате "Нужная дата с формы".

Как такое же провернуть с DLookUp?

Data = Format(Нужная дата с формы, "бла-бла")
Temp = DLookUp("[Дата]", "[Таблица]", "[Дата] <= #" & Data & "# ORDER BY [Дата]")

Но тогда он возьмет, наоборот, самую дальную дату от указанной.

Или я в чем не прав?
...
Рейтинг: 0 / 0
DLookUp с сортировкой
    #32561123
ThuG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Первое предложение, конечно, звучит так:
Скажите, пожалуйста, как с помощью DLookUp взять из таблицы БЛИЖАЙШУЮ к указанной дате. :-)
...
Рейтинг: 0 / 0
DLookUp с сортировкой
    #32561128
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторКак такое же провернуть с DLookUp?

Data = Format(Нужная дата с формы, "бла-бла")
Temp = DLookUp("[Дата]", "[Таблица]", "[Дата] <= #" & Data & "# ORDER BY [Дата]")

Вместо DLookUp используй DMin :)
...
Рейтинг: 0 / 0
DLookUp с сортировкой
    #32561137
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
т.е.
Temp = DMin("[Дата]", "[Таблица]", "[Дата] <= #" & Data & "#")


PS
авторrsSource.MoveLast
точно MoveLast, а не MoveFirst?
А то что-то у меня непонятки начались :(
...
Рейтинг: 0 / 0
DLookUp с сортировкой
    #32561138
Rivkin Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если в таблице Первичный ключ по полю Дата, тот должно отработать
Temp = DLookUp("[Дата]", "[Таблица]", "[Дата] <= #" & Data & "#"),
в противном случае, напиши свою функцию в которой открой рикордсет
...
Рейтинг: 0 / 0
DLookUp с сортировкой
    #32561141
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Rivkin DmitryЕсли в таблице Первичный ключ по полю Дата, тот должно отработать
Temp = DLookUp("[Дата]", "[Таблица]", "[Дата] <= #" & Data & "#"),
в противном случае, напиши свою функцию в которой открой рикордсет

Гарантий нет!!! (Даже при ключе)
...
Рейтинг: 0 / 0
DLookUp с сортировкой
    #32561144
Rivkin Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотя, задача не очень корректна: что значит ближайшая? Что предпочтительнее менше или больше, а если равно? Или все даты заранее меньше?
Я бы сделал
strSQL = "SELECT TOP 1 [Дата] FROM [Таблица] WHERE [Дата] <= #" & Data & "# ORDER BY [Дата];"
Set rsSource = CurrentDb.OpenRecordset(strSQL)
If rsSource.RecordCount > 0 Then
...
...
Рейтинг: 0 / 0
DLookUp с сортировкой
    #32561228
Фотография маяк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Rivkin DmitryХотя, задача не очень корректна: что значит ближайшая? Что предпочтительнее менше или больше, а если равно? Или все даты заранее меньше?Предлагаю такое решение: работать с датами как с числами (если помните, в физическом выражении дата - это число секунд с какой-то очень давней полуночи), и делать dmin(abs(дата1-дата2), ...)
...
Рейтинг: 0 / 0
DLookUp с сортировкой
    #32561247
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DLookUp("[Дата]", "[Таблица]", "[Дата] <= #" & Data & "# ORDER BY [Дата]")

должно правильно выдавать
...
Рейтинг: 0 / 0
DLookUp с сортировкой
    #32561259
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АлексейКDLookUp("[Дата]", "[Таблица]", "[Дата] <= #" & Data & "# ORDER BY [Дата]")

должно правильно выдавать

И давно ORDER BY в критерий разрешили вставлять?
...
Рейтинг: 0 / 0
DLookUp с сортировкой
    #32561260
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и еще
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
 ' можно в первом параметре указывать выражения от любых столбцов 
 
DLookUp("[Дата] + [поправка]", "[Таблица]", "[Дата] <= #" & Data & "# ORDER BY [Дата]")


 ' во втором параметре можно указвать join
 
 DLookUp("[Таблица].[Дата] + [Таблица2].[Дата]", "[Таблица] inner join [Таблица2] on [Таблица].код = [Таблица2].Код ", "[Дата] <= #" & Data & "# ORDER BY [Дата]")
...
Рейтинг: 0 / 0
DLookUp с сортировкой
    #32561264
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 paparome
давно видимо
...
Рейтинг: 0 / 0
DLookUp с сортировкой
    #32561269
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АлексейК2 paparome
давно видимо

А попробовать?

Про 1 и 2 параметр не спорю - ибо это правда, а вот с третьим у меня не вышло :(

может я не так делаю?
...
Рейтинг: 0 / 0
DLookUp с сортировкой
    #32561271
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
только не забуть Data сконвертировать в американский формат

MM/DD/yyyy - поменять местами месяцы и дни
...
Рейтинг: 0 / 0
DLookUp с сортировкой
    #32561279
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстатит - у меня и с join не вышло (во втором параметре) :(

PS: Акс97
...
Рейтинг: 0 / 0
DLookUp с сортировкой
    #32561352
Аха
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ORDER BY [...]
не проходят (в параметре 3~WHERE) в 2000, 97
в каком проходят у Вас?
(поменять библиотеку не могу - Access.Application.DLookup

Проверьте пжалста. А то я как последний лох пользую DMin/DMax И прочую устаревшую лабуду
...
Рейтинг: 0 / 0
DLookUp с сортировкой
    #32561353
Rivkin Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
маяк Rivkin DmitryХотя, задача не очень корректна: что значит ближайшая? Что предпочтительнее менше или больше, а если равно? Или все даты заранее меньше?Предлагаю такое решение: работать с датами как с числами (если помните, в физическом выражении дата - это число секунд с какой-то очень давней полуночи), и делать dmin(abs(дата1-дата2), ...)

маяк - Гений!!!

Temp = DLookup("[Дата]","[Таблица]","DateDiff(""d"",[Дата], Date()) = " & DMin("DateDiff(""d"",[Дата], Date())","[Таблица]"))
...
Рейтинг: 0 / 0
DLookUp с сортировкой
    #32561393
Аха
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
paparome АлексейК2 paparome
давно видимо

А попробовать?

Уважаемый АлексейК, Вы уж не отмалчивайтесь.
А то я в сомнениях.
Думать не могу.
кушать не могу.
сильно нервничаю, да.

_
Задача решается взятием DMin("дата",..., "дата >=датаСравнения") либо DMax("дата",....."дата <=датаСравнения") (либо того и другого и их сравнением).
...
Рейтинг: 0 / 0
DLookUp с сортировкой
    #32561411
Rivkin Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЗадача решается взятием DMin("дата",..., "дата >=датаСравнения") либо DMax("дата",....."дата <=датаСравнения") (либо того и другого и их сравнением).

Это совершенно не верно! Запрос найдет первую подходящую дату, но не ближайшую! :(
...
Рейтинг: 0 / 0
DLookUp с сортировкой
    #32561422
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЭто совершенно не верно! Запрос найдет первую подходящую дату, но не ближайшую! :(

Что-то не понял вашего утверждения :(
А можно привести пример данных на которых это не сработает?
...
Рейтинг: 0 / 0
DLookUp с сортировкой
    #32561423
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, господа.
А где автор топика?
Ему тут уже на хороший реферат наотвечали, а его все нет :(
...
Рейтинг: 0 / 0
DLookUp с сортировкой
    #32561431
Фотография маяк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Rivkin Dmitryмаяк - Гений!!!

Temp = DLookup("[Дата]","[Таблица]","DateDiff(""d"",[Дата], Date()) = " & DMin("DateDiff(""d"",[Дата], Date())","[Таблица]"))ААААА!
Мерси! Очень приятно %)
...
Рейтинг: 0 / 0
DLookUp с сортировкой
    #32561445
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
:^) Гению мои поздравлямс.
...
Рейтинг: 0 / 0
DLookUp с сортировкой
    #32561500
Rivkin Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
paparome авторЭто совершенно не верно! Запрос найдет первую подходящую дату, но не ближайшую! :(

Что-то не понял вашего утверждения :(
А можно привести пример данных на которых это не сработает?

Plz:
create table Dt1 (Date1 Date)

CREATE UNIQUE INDEX ix_Dt1 ON Dt1(Date1) WITH DISALLOW NULL
Date1
01/01/2004
05/01/2004
25/01/2004
25/02/2004
05/03/2004
11/03/2004
21/03/2004
03/04/2004
13/04/2004
20/04/2004
20/05/2004

?DLookup("Date1", "Dt1", "Date1 >= CDate('01/03/2004')")
05/03/2004 - All Right!!!
?DLookup("Date1", "Dt1", "Date1 <= CDate('01/03/2004')")
01/01/2004 - ?????

А без индекса и первый запрос не рсаботает
...
Рейтинг: 0 / 0
DLookUp с сортировкой
    #32561532
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Rivkin Dmitry? DLookup ("Date1", "Dt1", "Date1 >= CDate('01/03/2004')")
05/03/2004 - All Right!!!
? DLookup ("Date1", "Dt1", "Date1 <= CDate('01/03/2004')")
01/01/2004 - ?????

Rivkin Dmitry авторЗадача решается взятием DMin ("дата",..., "дата >=датаСравнения") либо DMax ("дата",....."дата <=датаСравнения") (либо того и другого и их сравнением).

Это совершенно не верно! Запрос найдет первую подходящую дату, но не ближайшую! :(

Dmin/Dmax, а не DLookUp?
...
Рейтинг: 0 / 0
25 сообщений из 33, страница 1 из 2
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / DLookUp с сортировкой
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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