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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.03.2018, 00:23   #1
yorri
Пользователь
 
Регистрация: 17.04.2015
Сообщений: 27
По умолчанию Поддерживается ли функция FIELD?

Скажите, поддерживает ли Microsoft Office Access функцию FIELD описаную тут (https://dev.mysql.com/doc/refman/5.6...function_field)?

Собственно само описание:
"FIELD(str,str1,str2,str3,...)
Returns the index (position) of str in the str1, str2, str3, ... list. Returns 0 if str is not found.
If all arguments to FIELD() are strings, all arguments are compared as strings. If all arguments are numbers, they are compared as numbers. Otherwise, the arguments are compared as double. "


И такое есть:
"Сортировка записей по заданному списку значений
Представьте, что у вас есть записи, которые каким-то образом связаны с временем года. И вы храните эту информацию в одном из столбцов таблицы.

Очевидно, что, используя стандартный вариант сортировки (по алфавиту), расположить сезоны порядке «весна», «лето», «осень», «зима» не получится. Естественно, можно каждому времени года присвоить свой код, но есть и другой вариант решения – использовать функцию FIELD.

SELECT * FROM articles ORDER BY FIELD(a_season, "весна","лето","осень","зима")

Эта функция ищет значение, указанное в первом параметре, среди значений, перечисленных в остальных параметрах, и возвращает его порядковый номер. При выполнении запроса в первый параметр функции FIELD будут передаваться значения из поля a_season и, таким образом, записи будут отсортированы в заданном нами порядке."


Если да, то что-то не работает, если нет - то есть ли что-то похожее.
Спасибо.
yorri вне форума Ответить с цитированием
Старый 17.03.2018, 18:37   #2
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Напишите свою UDF FIELD, например для сравнения текстовых данных, и используйте в запросе.
Код:
Function FIELD(strName As String, ParamArray strLibrary() As Variant)
    Dim intI As Integer
    FIELD = UBound(strLibrary)
    For intI = 0 To UBound(strLibrary())
        If strName = strLibrary(intI) Then
            FIELD = intI
        End If
    Next intI
End Function
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 18.03.2018, 19:45   #3
yorri
Пользователь
 
Регистрация: 17.04.2015
Сообщений: 27
По умолчанию

Спасибо. Но так, наверное, не пойдет.
Я использую "чистый" запрос в Delphi. А спросил в этой теме, так база из Microsoft Office Access.
yorri вне форума Ответить с цитированием
Старый 18.03.2018, 20:04   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Цитата:
Но так, наверное, не пойдет.
без наверное, не пойдет точно

iif, switch
насчет последнего и jet не уверен
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
FPU asm на x64 - больше не поддерживается? WhiskasTM Общие вопросы Delphi 0 12.06.2014 03:59
Почему на 64-битных системах не поддерживается расширенная точность операции с плавающей точкой Sibedir Операционные системы общие вопросы 3 06.01.2014 02:21
ЗАПРОС не поддерживается операционной системой! SuicideVodka БД в Delphi 13 22.04.2013 19:36
LINQ для SQL. Провайдер не поддерживается. Stilet Базы данных (ADO.NET, LinqToSql, ORM Entity Framework, NHibernate) 3 12.02.2010 17:49
В Indy не поддерживается кодировка GragDen Работа с сетью в Delphi 5 08.02.2009 06:49