Гость
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Фильтр или поиск / 5 сообщений из 5, страница 1 из 1
21.04.2020, 14:03
    #39949345
DmitryKn
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтр или поиск
Добрый день всем!

Есть грид, и есть текстбокс, в котором в событии valid организован фильтр для грида:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
LOCAL lcSearch
lcSearch = this.Value
select view1
IF EMPTY(this.Value)
	SET FILTER TO
	GO top
ELSE
	SET filter TO ALLTRIM(lcSearch) $ UPPER(view1.field1)
	GO top
ENDIF
thisform.grd1.refresh
RELEASE lcSearch



В свойстве ControlSourse текстбокса m.lcSearch

Все хорошо работает, однако сама переменная не исчезает никуда, даже с закрытием формы и подставляется в аналогичном поиске при загрузке другой формы, т.е. она public, хотя и определялась как local.


Если очистить ControlSourse texbox-a и изменить код на :
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
select view1
IF EMPTY(this.Value)
	SET FILTER TO
	GO top
ELSE
	SET filter TO ALLTRIM(this.Value) $ UPPER(view1.field1)
	GO top
ENDIF
thisform.grd1.refresh



при выполнении ругается на строку thisform.grd1.refresh Ошибка 11 "Недопустимое значение, тип или число аргументов функции" и не работает.

Прошу помочь советом, как победить это.
...
Рейтинг: 0 / 0
21.04.2020, 14:11
    #39949352
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтр или поиск
Тут один из немногих случаев когда надо использовать макроподстановку
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
IF EMPTY(this.Value)
	SET FILTER TO
	GO top
ELSE
	lcFilter = 'SET filter TO [' + ALLTRIM(this.Value) + '] $ UPPER(view1.field1)'
	&lcFilter 
	GO top
ENDIF
...
Рейтинг: 0 / 0
21.04.2020, 14:34
    #39949366
DmitryKn
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтр или поиск
Dima T,

Огромное спасибо, все работает!

но почему все в этой жизни именно так - вопросы остались ))
...
Рейтинг: 0 / 0
21.04.2020, 14:43
    #39949371
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтр или поиск
DmitryKn
Dima T,

Огромное спасибо, все работает!

но почему все в этой жизни именно так - вопросы остались ))

SET filter срабатывает не там где ты его написал, а там где происходит перебор записей таблицы.

Например внутри thisform.grd1.refresh() ты обращаешься к this.Value, т.е. используешь свойство Value грида, а его нет.

А переменная lcSearch скорее всего где-то по ошибке объявлена как public и когда ты обращаешься к ней внутри thisform.grd1.refresh(), то берется значение глобальной.
...
Рейтинг: 0 / 0
21.04.2020, 14:52
    #39949383
DmitryKn
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтр или поиск
Dima T,

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


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