powered by simpleCommunicator - 2.0.40     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Фильтр или поиск
5 сообщений из 5, страница 1 из 1
Фильтр или поиск
    #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
Фильтр или поиск
    #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
Фильтр или поиск
    #39949366
DmitryKn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima T,

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

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

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

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

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

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

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

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


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