powered by simpleCommunicator - 2.0.40     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Проблема с поиском записи.
6 сообщений из 6, страница 1 из 1
Проблема с поиском записи.
    #39911870
dima_18
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем добрый день!

С прошедшими праздниками.

Разрешите задать следующий вопрос. У меня есть текстовое поле, а ввожу данные в него, а внизу данного текстового поля грид, вязанные с данным текстовым полем. В частности, это должности.
Я ввожу должность программист -он в гриде встает на первое вхождение, первую должность связанную с этим словом - это ведущий - программист.
А в кадрах у нас есть еще такая должность - просто программист.
Дак, он не "слезает" с должности ведущий программист и приходится руками листать и вставать на просто программист.
А как мне сделать, чтобы точно по вхождению.
Ведь я набирал программист, а он нашел не такую должность.
Я привожу код своего поиска.
Помогите пожалуйста.

SELECT persond2
Locate for LOWER(Alltrim(ThisFormSet.Form2.Text12.Value)) $ LOWER(ALLTRIM(persond2.nm_pers))
if found()
ThisFormSet.rec_zap = RECNO()
GO ThisFormSet.rec_zap
ThisFormSet.Form2.Gridpodrazd.Column1.SetFocus
ThisFormSet.Form2.Text12.SetFocus
endif


Заранее большое спасибо.
...
Рейтинг: 0 / 0
Проблема с поиском записи.
    #39911903
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dima_18,
всё как обычно, документацию же Пушкин пусть читает, не так ли?

Сначала даем команду найти ПЕРВУЮ запись, в которой есть подстрока "программист", а потом удивляемся почему найден ведущий, а не просто программист.
dima_18 чтобы точно по вхождениюнадо использовать условие поиска "точно по вхождению", а не по "любому вхождению". А если еще точнее, то раз уж хочется найти только то, что введено, то ни о каком вхождении и не мыслить, а искать точное соответствие. То бишь условие поиска должно быть
Код: sql
1.
LOWER(ALLTRIM(persond2.nm_pers)) = LOWER(Alltrim(ThisFormSet.Form2.Text12.Value))
...
Рейтинг: 0 / 0
Проблема с поиском записи.
    #39911978
dima_18
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Большое спасибо, Sergey Sizov !
За ответ.
А можно еще один вопрос. А как сделать так, чтобы я ввел в текстовое поле и гриде вышло все:
ввел: ведущий программист

вышло(показалось в гриде):
ведущий программист
программист
обычный программист
и т.д.
Т.е. оставить этот запрос:
SELECT persond2
Locate for LOWER(Alltrim(ThisFormSet.Form2.Text12.Value)) $ LOWER(ALLTRIM(persond2.nm_pers))
if found()
ThisFormSet.rec_zap = RECNO()
GO ThisFormSet.rec_zap
ThisFormSet.Form2.Gridpodrazd.Column1.SetFocus
ThisFormSet.Form2.Text12.SetFocus
endif


Но чтобы грид отсеивал не нужное.

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

Спасибо большое.
...
Рейтинг: 0 / 0
Проблема с поиском записи.
    #39911985
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dima_18
Большое спасибо, Sergey Sizov !
За ответ.
Пжлста. :)А можно еще один вопрос.Если осторожно, то можно. :) А как сделать так, чтобы я ввел в текстовое поле и гриде вышло все:
ввел: ведущий программист

вышло(показалось в гриде):
ведущий программист
программист
обычный программист
и т.д.Дать соответствующую команду.Т.е. оставить этот запрос:
SELECT persond2
Locate for LOWER(Alltrim(ThisFormSet.Form2.Text12.Value)) $ LOWER(ALLTRIM(persond2.nm_pers))
if found()
ThisFormSet.rec_zap = RECNO()
GO ThisFormSet.rec_zap
ThisFormSet.Form2.Gridpodrazd.Column1.SetFocus
ThisFormSet.Form2.Text12.SetFocus
endif
И где тут запрос? Процитирован набор команд и ни одного запроса.
Но чтобы грид отсеивал не нужное.Это называется фильтрация/отбор.
Т.к. с тем тоже проблемы возникли, а если ошибся хоть в одной букве, эту запись он не найдет никак.Надо правильно формулировать свои хотелки. :)

Замените свое
Код: sql
1.
 Locate for LOWER(Alltrim(ThisFormSet.Form2.Text12.Value)) $ LOWER(ALLTRIM(persond2.nm_pers))

на
Код: sql
1.
set filter to LOWER(Alltrim(ThisFormSet.Form2.Text12.Value)) $ LOWER(ALLTRIM(persond2.nm_pers))

, удалите напрочь
Код: sql
1.
2.
3.
 ThisFormSet.rec_zap = RECNO()
 GO ThisFormSet.rec_zap
 ThisFormSet.Form2.Gridpodrazd.Column1.SetFocus

как совершенно бессмысленное и бесполезное и получите нужный результат.
Правда это решение на скорую руку и с подводными камешками если не добавить команду
Код: sql
1.
set filter to

где-то перед удалением формы.
...
Рейтинг: 0 / 0
Проблема с поиском записи.
    #39912014
dima_18
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey Sizov, спасибо ! Да, все правильно Вы поняли. Только такой момент я это навесил на InteractiveChange текстового поля.
Он отбирает записи как нужно.
А если я стираю нужную строку для запроса, весь список должностей, который был до фильтра не возвращается.

Помогите, пожалуйста, его обработать.

Спасибо
...
Рейтинг: 0 / 0
Проблема с поиском записи.
    #39912027
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dima_18
А если я стираю нужную строку для запроса, весь список должностей, который был до фильтра не возвращается.

Помогите, пожалуйста, его обработать.
Ну так при пустом поле надо выдать уже показанную команду
Код: sql
1.
set filter to
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Проблема с поиском записи.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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