Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / В чем ошибка ?????????????? / 2 сообщений из 2, страница 1 из 1
28.04.2007, 20:37
    #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
28.04.2007, 22:12
    #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
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / В чем ошибка ?????????????? / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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