:: Visual Foxpro, Foxpro for DOS
Like...
OL1111
Автор
Уважаемые!
Я только что начинаю изучать фоксик, поэтому прошу прощения за такой глупый вопрос.
проблема такая. В бд есть поле kod. Значения этого поля =690100, 690101, 690102, 690000 и тд
Пишу
MESSAGEBOX(kod) = 690100
MESSAGEBOX(inkod)=6901
MESSAGEBOX(LIKE(ALLTRIM(inKod),kod))=.F.
Почему?
Пробовала функцией AT. Там все ок. Мне нужна именно Like функция, т.к пользов. могут набрать 6901*.
не получается никак... В чем ошибаюсь?
Извините за такой глупый вопрос.

Оля
Ratings: 0 negative/0 positive
Re: Like...
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Hi, Оля!

Цитата:
Значения этого поля =690100,690101, 690102, 690000 и тд
ЗначениЯ или ЗначениЕ - т.е. в поле одно число, или именно группа
перечисленных через запятую чисел?
Тип поля и переменной для "поиска" как я понял строковые?
Цитата:
LIKE(ALLTRIM(inKod),kod) = .F.
Почему?
Ну так работает функция LIKE. Добавляй явно "*"
? LIKE(ALLTRIM(m.inKod) + "*", m.kod)
Также тебе может помочь то, как фокс сравнивает строки при SET EXACT OFF (до
окончания правой строки). Только учти что в SQL запросах управляет
сравнением уже не SET EXACT а SET ANSI, там немного иной алгоритм.
? m.kod = m.inkod
А для "просто" подстроки есть ещё и $
* с твоими значениями
? m.inkod $ m.kod
* Возьмём произвольную подстроку
inkod = "901"
? m.inkod $ m.kod
Кстати если LIKE использовать в запросах, то вместо функции LIKE() лучше
использовать SQL-опцию LIKE - там другой синтаксис, и другие "подстановочные
символы".
SELECT * FROM SomeTable WHERE SomeTable.kod LIKE "6901%"




------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Like...
OL1111
Автор
Спасибо, Игорь. Посмотрю сейчас... Спасибо!
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 31 (Гостей: 31)

© 2000-2024 Fox Club 
Яндекс.Метрика