Vvmebel.com

Новости с мира ПК
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Функция like в access

Функция like в access

На этом шаге рассмотрим использование обычного фильтра.

Режим фильтрации по выделенному используется в том случае, когда нужно отображать только те записи, которые удовлетворяют всем указанным, ограничениям (например, последняя буква «а» в имени И фамилии).

Если же необходимо отображать все записи, которые удовлетворяют хотя бы одному из указанных условий (например, последняя буква «а» в имени ИЛИ фамилии), то в этом случае следует использовать обычный фильтр, который можно установить командой Записи | Фильтр | Изменить фильтр (кнопка ).

В левом нижнем углу окна фильтрации имеются вкладки Найти и Или, при выборе которых в полях отображаются установленные ограничения. Например, после установки ограничений на имя и фамилию (последяя буква «а») на вкладке Найти в полях Фамилия и Имя будут установлены фильтры следующего вида: Like «*а» (рис. 1).


Рис. 1. Таблица Студенты. Изменение фильтра

Для задания каких-либо условий в Access используются несколько операторов сравнения (таблица 1), а также логические операторы (таблица 2).

В качестве примера применения операторов будут рассмотрены несколько условий (таблица 3). Необходимо отметить, что названия операторов принято писать либо прописными буквами ( LIKE ), либо начинать с прописной ( Like ).


Рис. 2. Таблица Студенты. Фильтрация по фамилии

После применения этого фильтра (кнопка ) в таблице Студенты будут отображены только те записи, у которых значение поля Фамилия начинается на букву, находящуюся в диапазоне от А до М (рис. 3).


Рис. 3. Таблица Студенты. Фильтрация по фамилии

Описанные выше действия можно увидеть здесь, а взять этот клип здесь.

Чтобы задать ограничения на несколько полей, при которых отображались бы все записи, удовлетворяющие хотя бы одному из указанных ограничений, можно воспользоваться вкладкой Или окна фильтра (рис. 1). Например, необходимо отобразить только тех студентов, у которых имя или фамилия закачиваются на букву «а». Для этого вначале необходимо на вкладке Найти окна фильтра указать для поля Фамилия условие LIKE «*а» (рис. 4).


Рис. 4. Таблица Студенты. Вкладка Найти окна фильтра

После этого следует выбрать вкладку Или и указать для поля Имя условие LIK Е «*а» (рис. 5).


Рис. 5. Таблица Студенты. Вкладка Или окна фильтра

Необходимо также отметить, что при выборе вкладки Или автоматически появляется следующая вкладка Или, т.е. можно указать несколько условий, хотя бы одно из которых должно выполняться.

После установки ограничений нужно применить фильтр к таблице (кнопка ), в результате чего будут отображены все записи, для которых выполняется хотя бы одно из указанных условий (рис. 6).


Рис. 6. Таблица Студенты. Фильтрация по фамилии

Если нужно удалить все установленные ограничения, то при открытом окне фильтра следует воспользоваться кнопкой Очистить бланк .

Описанные выше действия можно увидеть здесь, а взять этот клип здесь.

На следующем шаге вы узнаете о расширенном фильтре.

Предыдущий шаг Содержание Следующий шаг

Конструкция LIKE в запросе. Делаем удобный поиск

Всем привет, сегодня мы рассмотрим урок, связанный с Базами данных, а в частности мы рассмотрим, как сделать подсказку пользователю, который вводит данные, например, для поиска. Данную функцию можно наблюдать во многих программах, а также на многих сайтах, например, Вконтакте, когда происходит поиск человека, появляется выпадающий список, в котором можно найти похожие совпадения, что облегчает ввод данных пользователю, данную функцию мы опробуем и на Delphi на примере Базы данных MS Access, только немного в простом варианте. Но это подходит и к другим БД, которые можно использовать в Delphi. Мы уже много рассматривали примеров, для поиска данных, в этом случае мы будем использовать SQL-конструкцию LIKE, которую раньше мы также рассматривали и использовали. Пример данной конструкции описан ниже:

Как видно выше, конструкция LIKE проста для поиска данных по шаблону, для нее необходимо указать один входной параметр.

А теперь приступим к нашему примеру и задачи. Для начала давайте создадим некоторую Базу данных в MS Access, не будем слишком усложнять пример, это Вы сможете сделать и сами, а просто сделаем одну табличку, назовем ее Goroda, в ней я создал следующие поля:

  • Id – счетчик
  • Gorod – Текстовый
Читать еще:  Wpf c и работа с access

Теперь нам необходимо немного заполнить нашу табличку, совсем не много, я добавил туда всего-навсего 5 записей:


Саму структуру таблицы, вы можете увидеть на рисунке:


Идем дальше, для примера, создадим проект в Delphi, на форме разместим следующие компоненты:

В свойстве Caption компонента TLabel напишем – «Город». Далее выделяем компонент TAdoConnection, в его свойстве ConnectionString указываем Поставщика данных – в нашем случае это Microsoft Jet 4.0 OLE DB Provider. Переходим к следующему пункту подключения (вкладке), в которой указываем путь к нашей Базе данных (можно указать полный путь к Базе данных, но если она находится в текущей папке с проектом, то просто указываем полное имя нашей Базы данных с расширением, в нашем случае *.mdb). Нажимаем OK и переходим к свойству Mode, в котором выбираем из выпадающего списка cmShareDenyNone, хотя можно просто выбрать чтение cmShareDenyRead. Ну и свойство LoginPromt ставим в False (запрещаем выводить окно, для запроса ввода имени и пароля, который позволяет получить доступ к нашей Базе данных), если конечно в Вашей Базе данных не установлен пароль, в противном случае Вам придется вводить логин и пароль, можно это забить в нашем подключении, чтобы постоянно не вводить одни и теже данные. Я пароль на Базу данных не ставил, поэтому устанавливаем в False. Ну и наконец нам необходимо активировать подключение к нашей Базе данных, для этого свойство Connected устанавливаем в False.

Теперь переходим к настройке нашего компонента TADOQuery. Выделяем наш компонент TADOQuery и в свойстве Connection указываем имя компонента TADOConnection, в моем случае это AdoConnection1. Далее нам понадобиться еще одно свойство компонента TADOQuery – это Parameters. Открываем его и добавляем новый параметр (его название), я его назвал – gorods, указываем ему тип данных (DataType) – ftString и все закрываем наше окно. Сразу активировать наш запрос не надо, так как в нем мы не прописали никакой SQL-конструкции, да и Вам собственно это не удастся. Общий вид моего окна проекта получился следующим:

Теперь переходим к написанию кода программы.

Выделяем наш компонент TEdit и переходим в список его событий, находим там событие OnKeyUp и нажимаем двойным щелчком, для открытия окна кода программы для этого события. Почему именно данное событие, потому что оно нам само больше подходит, оно возникает, генерируется после того, как пользователь ввел очередной символ город и уже отпускает кнопку, также в данном событии имеется аргумент Key, который хранит числовой код нажатой клавиши.

Теперь переходим к написание кода, открываем еще раз наше событие и пишем туда следующий код:

Теперь давайте детально разберем наш код. Переменная pos, нам необходима для запоминания текущей позиции ввода. Дальше в условии мы отсеиваем все коды клавиш которые меньше 47.

С помощью ClearSelection мы снимаем выделение в компоненте TEdit. Дальше мы пишем наш SQL-запрос, в котором и присутствует конструкция LIKE, а в ней мы указываем в условии наш параметр gorods. Уже нижней строчкой мы задаем нашему параметру значения из TEdit, для начала удалив все пробелы, которые могут быть впереди, а также вконец нашей записи добавляем символ %, который дает понять запросу, что после введенного пользователем слова могут идти совершенно любые символы.

В конце все просто, мы присваиваем в TEdit, то что нашли в Базе данных (если нашли конечно), и выделяем в слове те символы, которые возможно пользователь и ищет, если ничего не нашли, то издаем просто звуковой сигнал. Вот, что у меня примерно получилось:

Что касается этой темы, то ее можно развить и дальше. Так как в данном примере показывается только результат первой найденной записи в таблице, а схожих может быть и не сколько, поэтому тут можно сделать в виде выпадающего списка, как я упоминал раньше реализовано в известной социальной сети Вконтакте. Поэтому данный пример, мы рассмотрим уже в следующих статьях по Базам данных.

Читать еще:  Direct access что это

А что касается данного примера, то основные его достоинства состоят в том, что он не только находит название города, который соответствует шаблону LIKE, но и также помогает пользователю закончить ввод, подставляя наиболее подходящее название города.

Поэтому используется в своих разработках именно данную конструкцию поиска, чтобы облегчить пользователю работать в Вашей программе. Также я выкладываю исходники статьи, которые можно скачать тут. Исходник проверялся в IDE – Delphi 7.

Функция like в access

На этом шаге рассмотрим использование обычного фильтра.

Режим фильтрации по выделенному используется в том случае, когда нужно отображать только те записи, которые удовлетворяют всем указанным, ограничениям (например, последняя буква «а» в имени И фамилии).

Если же необходимо отображать все записи, которые удовлетворяют хотя бы одному из указанных условий (например, последняя буква «а» в имени ИЛИ фамилии), то в этом случае следует использовать обычный фильтр, который можно установить командой Записи | Фильтр | Изменить фильтр (кнопка ).

В левом нижнем углу окна фильтрации имеются вкладки Найти и Или, при выборе которых в полях отображаются установленные ограничения. Например, после установки ограничений на имя и фамилию (последяя буква «а») на вкладке Найти в полях Фамилия и Имя будут установлены фильтры следующего вида: Like «*а» (рис. 1).


Рис. 1. Таблица Студенты. Изменение фильтра

Для задания каких-либо условий в Access используются несколько операторов сравнения (таблица 1), а также логические операторы (таблица 2).

В качестве примера применения операторов будут рассмотрены несколько условий (таблица 3). Необходимо отметить, что названия операторов принято писать либо прописными буквами ( LIKE ), либо начинать с прописной ( Like ).


Рис. 2. Таблица Студенты. Фильтрация по фамилии

После применения этого фильтра (кнопка ) в таблице Студенты будут отображены только те записи, у которых значение поля Фамилия начинается на букву, находящуюся в диапазоне от А до М (рис. 3).


Рис. 3. Таблица Студенты. Фильтрация по фамилии

Описанные выше действия можно увидеть здесь, а взять этот клип здесь.

Чтобы задать ограничения на несколько полей, при которых отображались бы все записи, удовлетворяющие хотя бы одному из указанных ограничений, можно воспользоваться вкладкой Или окна фильтра (рис. 1). Например, необходимо отобразить только тех студентов, у которых имя или фамилия закачиваются на букву «а». Для этого вначале необходимо на вкладке Найти окна фильтра указать для поля Фамилия условие LIKE «*а» (рис. 4).


Рис. 4. Таблица Студенты. Вкладка Найти окна фильтра

После этого следует выбрать вкладку Или и указать для поля Имя условие LIK Е «*а» (рис. 5).


Рис. 5. Таблица Студенты. Вкладка Или окна фильтра

Необходимо также отметить, что при выборе вкладки Или автоматически появляется следующая вкладка Или, т.е. можно указать несколько условий, хотя бы одно из которых должно выполняться.

После установки ограничений нужно применить фильтр к таблице (кнопка ), в результате чего будут отображены все записи, для которых выполняется хотя бы одно из указанных условий (рис. 6).


Рис. 6. Таблица Студенты. Фильтрация по фамилии

Если нужно удалить все установленные ограничения, то при открытом окне фильтра следует воспользоваться кнопкой Очистить бланк .

Описанные выше действия можно увидеть здесь, а взять этот клип здесь.

На следующем шаге вы узнаете о расширенном фильтре.

Предыдущий шаг Содержание Следующий шаг

Функция like в access

Господа, подскажите как правильно писать запрос
с использованием Like в Access?
Я пишу в соотв. со стандартом так
SELECT *
FROM CurrICSklad
WHERE sklad_number LIKE «FE%»;
Результат почему-то пустой, хотя в этой таблице
оченть много записей в поле sklad_number, которые
начинаются на «FE». Их-то мне и надо бы выбрать.


Johnmen ( 2002-09-20 12:18 ) [1]

Запрос корректен. Значит дело не в нем, а в показе найденных.


sniknik ( 2002-09-20 12:29 ) [2]

Читать еще:  Оператор like в access

правильней так
LIKE UCase(«FE%»)


sniknik ( 2002-09-20 12:57 ) [3]

глупость сморозил. пока не заметили
SELECT *
FROM CurrICSklad
WHERE UCase(sklad_number) LIKE «FE%»;


KDS ( 2002-09-20 13:53 ) [4]

>sniknik ©
Там в таблице все буквы только большие.
Не в UCase(sklad_number) дело.
Тут наверное какие-то индивидуальные особенности Акцесса.
Может у него это по другому делается, отличительно от стандартов?

>Johnmen
Что Вы подразумеваете под показом?
Результат этого запроса — таблица без записей.
Т.е. таких вроде как и нет (хотя такие записи есть)


Johnmen ( 2002-09-20 14:00 ) [5]

>KDS © (20.09.02 13:53)
>Результат этого запроса — таблица без записей.
>Т.е. таких вроде как и нет (хотя такие записи есть)

Что-то не уловил, какая такая таблица .
Под показом подразумеваю то, что как и где и с помощью чего это видно.


sniknik ( 2002-09-20 14:00 ) [6]

а ты на чем думаеш я пробовал? таки на Аксесе, работает. может действительно в показе дело. попробуй еще вместо % — * так на всякий.


roottim ( 2002-09-20 14:05 ) [7]

SELECT *
FROM CurrICSklad
WHERE sklad_number LIKE «F%»
а так возвращает..
поэксперементируй на других буквицах.. а то неясно.. это FE виновато или LIKE


sniknik ( 2002-09-20 14:10 ) [8]

может Е русская в запросе или наоборот в базе. LIKE точно ни при чем вот пробовал
SELECT * FROM 1saccs WHERE UCase(schim) LIKE «%ОПЛ%»

SQL-Урок 5. Символы подстановки и регулярные выражения (LIKE)

Часто, для фильтрации данных, нам нужно будет осуществить выборку не по точному совпадении условия, а по приближенному значению. То есть когда, например, мы ищем товар, название которого соответствует определенному шаблону или содержит определенные символы или слова. Для таких целей в SQL существует оператор LIKE, который ищет приближенные значения. Для конструирования такого шаблона используются метасимволы (специальные символы для поиска части значения), а именно: «знак процента» (%) или звездочка (*), «символ подчеркивания» (_) или «знак вопроса» (?), «квадратные скобки» ([ ]).

1. Метасимвол знак процента (%) или звездочка (*)

Давайте из нашей таблицы, например, отберем записи, относящиеся только к товарам, содержащих в своем названии слово Skis (лыжи). Для этого составим соответствующий шаблон:

SELECT * FROM Sumproduct WHERE Product LIKE ‘*Skis*’

Как видим, СУБД отобрала только те записи, где в колонке Product были товары, содержащие слово Skis. Также отметим, что в данном примере используется метасимвол «звездочка» (*), поскольку СУБД Access не поддерживает «знак процента» (% ) для оператора LIKE.

2. Метасимвол знак подчеркивания (_) или знак (?)

Знак подчеркивания или вопросительный знак применяется для того, чтобы заменить один символ в слове. Давайте в слове Bikes заменим все гласные буквы на «вопросительный знак» (?) и посмотрим на результат:

SELECT * FROM Sumproduct WHERE Product LIKE ‘B?k?s’

Мы использовали метасимвол «вопросительный знак» (?), поскольку СУБД Access не поддерживает «знак подчеркивания» (_) для оператора LIKE.

3. Метасимвол квадратные скобки ([ ])

Метасимвол «квадратные скобки» ([ ]) используется для одновременного указания набора символов, по которым нужно выполнить поиск.

SELECT * FROM Sumproduct WHERE City LIKE ‘[TN]*’

В примере выше, мы отобрали записи, где в поле City названия городов начинаются с буквы T или N. Также, в данном случае, мы можем использовать еще один метасимвол, который выполняет обратное действие. Добавим в наше регулярное выражение восклицательный знак (!), что будет означать «не равно» (для СУБД Access) или знак степени (^) (для других СУБД).

SELECT * FROM Sumproduct WHERE City LIKE ‘[!TN]*’

То есть, последний созданный нами запрос будет читаться как: выбрать все колонки из таблицы Sumproduct и только те записи, где в поле City названия городов не начинаются на буквы T или N. Дополнительно отметим, что набор букв в метасимволе «квадратные скобки» отвечает только за одну позицию в тексте.

Мы можем получить аналогичный результат, если воспользоваться уже известным нам оператором NOT, однако с восклицательным знаком (!) запись будет короче.

Ссылка на основную публикацию
Adblock
detector