powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / ACCESS: Как найти ближайшее значение?
4 сообщений из 4, страница 1 из 1
ACCESS: Как найти ближайшее значение?
    #32032958
Владимир
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Существует таблица с данными в формате время "hh:mm:ss". Никак не могу понять, как найти ближайше значение. Например, вводит человек "15:12:43" и получает ближайшее из таблицы. При том, ближайшее может оказаться как раньше так и позже запрашиваемого. Может есть примерчик?
...
Рейтинг: 0 / 0
ACCESS: Как найти ближайшее значение?
    #32032977
Erika
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может,так:
Код: plaintext
1.
2.
3.
4.
5.
6.
SELECT MAX(Таблица4.t) AS t1 , IIF(MAX(Таблица4.t)- [tt]> 0 ,MAX(Таблица4.t)- [tt],-(MAX(Таблица4.t)- [tt])) AS d
FROM Таблица4
WHERE Таблица4.t<[tt]
UNION SELECT MIN(Таблица4.t), IIF(MIN(Таблица4.t)-[tt]> 0 , MIN(Таблица4.t)-[tt], -(MIN(Таблица4.t)-[tt])) AS d
FROM Таблица4
WHERE Таблица4.t>[tt]
ORDER BY d;


Здесь t - поле в таблице, а [tt] - введеный параметр.
Значение t1 в первой записи и будет искомым.
...
Рейтинг: 0 / 0
ACCESS: Как найти ближайшее значение?
    #32033037
Владимир
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо большое за ответ! Но этот запрос корректно работает только в том случае, если в поле таблицы занесены данные в формате "Текст" или "Число". Но у меня в таблице данные в формате "Дата/время" и прекдставлены как, например, 12:10:00. При попытке значению tt в запросе присвоить значение в такой форме (например 12:45:00) Акцесс выдаёт ошибку о несоответствии форматов. Как бы это победить?
...
Рейтинг: 0 / 0
ACCESS: Как найти ближайшее значение?
    #32033042
Владимир
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Старшие товарищи предложили такой вариант, который прекрасно работает. Делюсь им с Вами, может ещё кому понадобится :)
SELECT top 1 table.time
FROM [table]
ORDER BY Abs([time]-CDate([Вводимое значение]));
Где table - таблица со временем, time - поле со временем, [Вводимое значение] - время которое вводит человек, CDate([Вводимое значение]) можно заменить на ссылку поля формы куда человек вводит значение.
P.S. Есть множество других вариантов, но этот самый простой и практически не имеет недостатков.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / ACCESS: Как найти ближайшее значение?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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