Использование LIKE в ACCESS
3569
6
Написал запрос в ACCESS для двух таблиц, достаточно простой:
SELECT [sub_to.st_name], [invoice.i_case]
FROM sub_to, invoice
WHERE [sub_to.st_name]=[invoice.st_name] and [invoice.st_name]=[MyTextBox];
Хотелось бы точное равенство заменить на LIKE
WHERE [sub_to.st_name]=[invoice.st_name] and [invoice.st_name] like [MyTextBox];
т.к MyTextBox это ФИО
Подскажите, как правильно написать выражение с помощью LIKE?
SELECT [sub_to.st_name], [invoice.i_case]
FROM sub_to, invoice
WHERE [sub_to.st_name]=[invoice.st_name] and [invoice.st_name]=[MyTextBox];
Хотелось бы точное равенство заменить на LIKE
WHERE [sub_to.st_name]=[invoice.st_name] and [invoice.st_name] like [MyTextBox];
т.к MyTextBox это ФИО
Подскажите, как правильно написать выражение с помощью LIKE?
1. Для объединения лучше использовать inner join.
2. Странная связь полей по ФИО, лучше создать суррогатный ключ.
3. Какой формат в st_name и MyTextBox? Если в первом 'Иванов Иван Иваныч', а вводить будут 'Иванов', то для того что бы отыскать всех Ивановых, как-то так: st_name like MyTextBox.Value + '%'
2. Странная связь полей по ФИО, лучше создать суррогатный ключ.
3. Какой формат в st_name и MyTextBox? Если в первом 'Иванов Иван Иваныч', а вводить будут 'Иванов', то для того что бы отыскать всех Ивановых, как-то так: st_name like MyTextBox.Value + '%'
Этот запрос я написал сам, ручками.
А вот что сгенерил ACCESS
SELECT table_1.Поле1, table_2.Поле2
FROM table_1 INNER JOIN table_2 ON table_1.Поле1 = table_2.Поле1;
ну только названия полей другие.
Добавляю сюда условие ввода ФИО из формы, получается:
SELECT table_1.Поле1, table_2.Поле2
FROM table_1 INNER JOIN table_2 ON table_1.Поле1=table_2.Поле1
WHERE (((table_1.Поле1) Like [ФИО]'%'));
при сохранении ошибка Syntax error...
Как быть?
А вот что сгенерил ACCESS
SELECT table_1.Поле1, table_2.Поле2
FROM table_1 INNER JOIN table_2 ON table_1.Поле1 = table_2.Поле1;
ну только названия полей другие.
Добавляю сюда условие ввода ФИО из формы, получается:
SELECT table_1.Поле1, table_2.Поле2
FROM table_1 INNER JOIN table_2 ON table_1.Поле1=table_2.Поле1
WHERE (((table_1.Поле1) Like [ФИО]'%'));
при сохранении ошибка Syntax error...
Как быть?
Забвл поставить + (плюс)
запрос сохранился, но при вводе только фамилии, возвращается пусто
запрос сохранился, но при вводе только фамилии, возвращается пусто
WHERE (((table_1.Поле1) Like '%'+[ФИО]+'%'))
В таком случае отбираются все записи содержащие подстроку ФИО.
В вашем случае отбирались записи, которые начинались с подстроки ФИО
В таком случае отбираются все записи содержащие подстроку ФИО.
В вашем случае отбирались записи, которые начинались с подстроки ФИО
Как быть?Там кстати у Акцесса "свой" синтаксис:
SELECT table_1.Поле1, table_2.Поле2
FROM table_1 INNER JOIN table_2 ON table_1.Поле1=table_2.Поле1
WHERE table_1.Поле1 Like '*' & [ФИО] & '*';