powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / В чем ошибка ??????????????
2 сообщений из 2, страница 1 из 1
В чем ошибка ??????????????
    #34496536
Djon Dow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пытаюсь организовать контекстный поиск, но отбираются все записи может подскажете где ошибка?
Форум просмотрел и в принцыпе выход из положения нашел, но всетаки интересно где имено у меня зарыта ошибка !!!
Есть два поля: Т01 - поле запроса и R1_1 в DBF
LOCATE FOR ALLTRIM(UPPER(T01))=SUBSTR(R1_1, ATC(ALLTRIM(T01),R1_1), LEN(ALLTRIM(T01)))
...
Рейтинг: 0 / 0
В чем ошибка ??????????????
    #34496649
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сравнение символьной строки с пустой строкой при настройке SET EXACT OFF (это настройка по умолчанию) ВСЕГДА вернет .T.

Надо либо использовать SET EXACT ON, либо символ тождественного равенства, либо дополнять сравниваемые строки до одинаковой длины

Код: plaintext
1.
2.
3.
4.
5.
6.
SET EXACT OFF
?"пример" = ""
?"пример" == ""
?"пример" = PADR("",LEN("пример"))
SET EXACT ON
?"пример" = ""

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

В данном случае проще воспользоваться сравнением на частичное вхождение строки

Код: plaintext
LOCATE FOR ALLTRIM(UPPER(T01)) $ UPPER(R1_1)
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / В чем ошибка ??????????????
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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