Использование LIKE в ACCESS
3570
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?
Ray
1. Для объединения лучше использовать inner join.
2. Странная связь полей по ФИО, лучше создать суррогатный ключ.
3. Какой формат в st_name и MyTextBox? Если в первом 'Иванов Иван Иваныч', а вводить будут 'Иванов', то для того что бы отыскать всех Ивановых, как-то так: st_name like MyTextBox.Value + '%'
tpi
Этот запрос я написал сам, ручками.
А вот что сгенерил 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...
Как быть?
tpi
Забвл поставить + (плюс)
запрос сохранился, но при вводе только фамилии, возвращается пусто :dnknow:
Ray
WHERE (((table_1.Поле1) Like '%'+[ФИО]+'%'))

В таком случае отбираются все записи содержащие подстроку ФИО.
В вашем случае отбирались записи, которые начинались с подстроки ФИО
Ray
Как быть?
Там кстати у Акцесса "свой" синтаксис:
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 '*' & [ФИО] & '*';
tpi
Отлично, спасибо, заработало!