|
|
|
DLookUp с сортировкой
|
|||
|---|---|---|---|
|
#18+
Скажите, пожалуйста, как с помощью 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 [Дата]") Но тогда он возьмет, наоборот, самую дальную дату от указанной. Или я в чем не прав? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2004, 10:53:53 |
|
||
|
DLookUp с сортировкой
|
|||
|---|---|---|---|
|
#18+
Первое предложение, конечно, звучит так: Скажите, пожалуйста, как с помощью DLookUp взять из таблицы БЛИЖАЙШУЮ к указанной дате. :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2004, 10:55:16 |
|
||
|
DLookUp с сортировкой
|
|||
|---|---|---|---|
|
#18+
авторКак такое же провернуть с DLookUp? Data = Format(Нужная дата с формы, "бла-бла") Temp = DLookUp("[Дата]", "[Таблица]", "[Дата] <= #" & Data & "# ORDER BY [Дата]") Вместо DLookUp используй DMin :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2004, 10:57:36 |
|
||
|
DLookUp с сортировкой
|
|||
|---|---|---|---|
|
#18+
т.е. Temp = DMin("[Дата]", "[Таблица]", "[Дата] <= #" & Data & "#") PS авторrsSource.MoveLast точно MoveLast, а не MoveFirst? А то что-то у меня непонятки начались :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2004, 11:00:15 |
|
||
|
DLookUp с сортировкой
|
|||
|---|---|---|---|
|
#18+
Если в таблице Первичный ключ по полю Дата, тот должно отработать Temp = DLookUp("[Дата]", "[Таблица]", "[Дата] <= #" & Data & "#"), в противном случае, напиши свою функцию в которой открой рикордсет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2004, 11:01:34 |
|
||
|
DLookUp с сортировкой
|
|||
|---|---|---|---|
|
#18+
Rivkin DmitryЕсли в таблице Первичный ключ по полю Дата, тот должно отработать Temp = DLookUp("[Дата]", "[Таблица]", "[Дата] <= #" & Data & "#"), в противном случае, напиши свою функцию в которой открой рикордсет Гарантий нет!!! (Даже при ключе) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2004, 11:04:54 |
|
||
|
DLookUp с сортировкой
|
|||
|---|---|---|---|
|
#18+
Хотя, задача не очень корректна: что значит ближайшая? Что предпочтительнее менше или больше, а если равно? Или все даты заранее меньше? Я бы сделал strSQL = "SELECT TOP 1 [Дата] FROM [Таблица] WHERE [Дата] <= #" & Data & "# ORDER BY [Дата];" Set rsSource = CurrentDb.OpenRecordset(strSQL) If rsSource.RecordCount > 0 Then ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2004, 11:06:13 |
|
||
|
DLookUp с сортировкой
|
|||
|---|---|---|---|
|
#18+
Rivkin DmitryХотя, задача не очень корректна: что значит ближайшая? Что предпочтительнее менше или больше, а если равно? Или все даты заранее меньше?Предлагаю такое решение: работать с датами как с числами (если помните, в физическом выражении дата - это число секунд с какой-то очень давней полуночи), и делать dmin(abs(дата1-дата2), ...) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2004, 11:36:29 |
|
||
|
DLookUp с сортировкой
|
|||
|---|---|---|---|
|
#18+
DLookUp("[Дата]", "[Таблица]", "[Дата] <= #" & Data & "# ORDER BY [Дата]") должно правильно выдавать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2004, 11:44:48 |
|
||
|
DLookUp с сортировкой
|
|||
|---|---|---|---|
|
#18+
АлексейКDLookUp("[Дата]", "[Таблица]", "[Дата] <= #" & Data & "# ORDER BY [Дата]") должно правильно выдавать И давно ORDER BY в критерий разрешили вставлять? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2004, 11:49:09 |
|
||
|
DLookUp с сортировкой
|
|||
|---|---|---|---|
|
#18+
и еще Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2004, 11:49:38 |
|
||
|
DLookUp с сортировкой
|
|||
|---|---|---|---|
|
#18+
2 paparome давно видимо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2004, 11:50:44 |
|
||
|
DLookUp с сортировкой
|
|||
|---|---|---|---|
|
#18+
АлексейК2 paparome давно видимо А попробовать? Про 1 и 2 параметр не спорю - ибо это правда, а вот с третьим у меня не вышло :( может я не так делаю? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2004, 11:52:13 |
|
||
|
DLookUp с сортировкой
|
|||
|---|---|---|---|
|
#18+
только не забуть Data сконвертировать в американский формат MM/DD/yyyy - поменять местами месяцы и дни ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2004, 11:52:42 |
|
||
|
DLookUp с сортировкой
|
|||
|---|---|---|---|
|
#18+
Кстатит - у меня и с join не вышло (во втором параметре) :( PS: Акс97 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2004, 11:56:01 |
|
||
|
DLookUp с сортировкой
|
|||
|---|---|---|---|
|
#18+
ORDER BY [...] не проходят (в параметре 3~WHERE) в 2000, 97 в каком проходят у Вас? (поменять библиотеку не могу - Access.Application.DLookup Проверьте пжалста. А то я как последний лох пользую DMin/DMax И прочую устаревшую лабуду ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2004, 12:29:52 |
|
||
|
DLookUp с сортировкой
|
|||
|---|---|---|---|
|
#18+
маяк Rivkin DmitryХотя, задача не очень корректна: что значит ближайшая? Что предпочтительнее менше или больше, а если равно? Или все даты заранее меньше?Предлагаю такое решение: работать с датами как с числами (если помните, в физическом выражении дата - это число секунд с какой-то очень давней полуночи), и делать dmin(abs(дата1-дата2), ...) маяк - Гений!!! Temp = DLookup("[Дата]","[Таблица]","DateDiff(""d"",[Дата], Date()) = " & DMin("DateDiff(""d"",[Дата], Date())","[Таблица]")) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2004, 12:29:58 |
|
||
|
DLookUp с сортировкой
|
|||
|---|---|---|---|
|
#18+
paparome АлексейК2 paparome давно видимо А попробовать? Уважаемый АлексейК, Вы уж не отмалчивайтесь. А то я в сомнениях. Думать не могу. кушать не могу. сильно нервничаю, да. _ Задача решается взятием DMin("дата",..., "дата >=датаСравнения") либо DMax("дата",....."дата <=датаСравнения") (либо того и другого и их сравнением). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2004, 12:47:04 |
|
||
|
DLookUp с сортировкой
|
|||
|---|---|---|---|
|
#18+
авторЗадача решается взятием DMin("дата",..., "дата >=датаСравнения") либо DMax("дата",....."дата <=датаСравнения") (либо того и другого и их сравнением). Это совершенно не верно! Запрос найдет первую подходящую дату, но не ближайшую! :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2004, 12:54:32 |
|
||
|
DLookUp с сортировкой
|
|||
|---|---|---|---|
|
#18+
авторЭто совершенно не верно! Запрос найдет первую подходящую дату, но не ближайшую! :( Что-то не понял вашего утверждения :( А можно привести пример данных на которых это не сработает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2004, 13:00:24 |
|
||
|
DLookUp с сортировкой
|
|||
|---|---|---|---|
|
#18+
Кстати, господа. А где автор топика? Ему тут уже на хороший реферат наотвечали, а его все нет :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2004, 13:01:33 |
|
||
|
DLookUp с сортировкой
|
|||
|---|---|---|---|
|
#18+
Rivkin Dmitryмаяк - Гений!!! Temp = DLookup("[Дата]","[Таблица]","DateDiff(""d"",[Дата], Date()) = " & DMin("DateDiff(""d"",[Дата], Date())","[Таблица]"))ААААА! Мерси! Очень приятно %) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2004, 13:04:43 |
|
||
|
DLookUp с сортировкой
|
|||
|---|---|---|---|
|
#18+
:^) Гению мои поздравлямс. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2004, 13:08:53 |
|
||
|
DLookUp с сортировкой
|
|||
|---|---|---|---|
|
#18+
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 - ????? А без индекса и первый запрос не рсаботает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2004, 13:31:14 |
|
||
|
DLookUp с сортировкой
|
|||
|---|---|---|---|
|
#18+
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? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2004, 13:41:55 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32561353&tid=1673817]: |
0ms |
get settings: |
7ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
90ms |
get topic data: |
32ms |
get forum data: |
3ms |
get page messages: |
142ms |
get tp. blocked users: |
2ms |
| others: | 211ms |
| total: | 504ms |

| 0 / 0 |
