:: Архив конференции по VFP до 2005 года
о локальных представлениях
yepishkin
Автор

Сообщений: 35
Дата регистрации: 21.03.2005
Как программным методом изменить в локальном представлении выражение WHERE?
Спасибо!
Ratings: 0 negative/0 positive
Re: о локальных представлениях
samson_i
указать глобальные переменные
Public gVar
Select * from MyTabe Where MyTabe.Myfield==gVar
потом соответственно менять gVar
во вкладке построителя указать тип параметров
для обновления форм использовать ReQuery('MyView')
Ratings: 0 negative/0 positive
Re: о локальных представлениях
Владимир Максимов

Сообщений: 14093
Откуда: Москва
Дата регистрации: 02.09.2000
Цитата:
указать глобальные переменные
Public gVar
Select * from MyTabe Where MyTabe.Myfield==gVar
потом соответственно менять gVar
во вкладке построителя указать тип параметров
для обновления форм использовать ReQuery('MyView')
Глобальные переменные тут не при чем.

На закладке Filter в дизайнере View в качестве значения для сравнения пишется что-то вроде

?tcVar

Т.е. итоговое выражение Select-SQL будет вида

Select * from MyTabe Where MyTabe.Myfield=?tcVar
Здесь вопросительный знак как раз и указывает, что дальше идет имя параметра. Т.е. некой переменной памяти, значение которой будет определено непосредственно перед выполнением запроса.

При таком синтаксисе View обычно открывают с опцией NODATA, т.е.

USE MyView NODATA
Если View включено в DataEnvironment формы, то аналогом этой опции является свойство NoDataOnLoad=.T.

Далее определяют значение этого параметра и выполняют перезапрос

LOCAL tcVar
tcVar = "пример"
Requery("MyView")
Как видите, здесь достаточно использовать локальную переменную. Вообще, использовать переменные типа PUBLIC надо с предельной осторожностью. Это потенциальный источник больших проблем.
Ratings: 0 negative/0 positive
Re: о локальных представлениях
Владимир С
Hi, Владимир Максимов.
Просто yepishkin надо бы посмотреть ПАРАМЕТРИЗИРОВАННЫЕ Local View.
А вот если хочется поменять радикально опцию Where?
Ratings: 0 negative/0 positive
Re: о локальных представлениях
AleksM

Сообщений: 17881
Дата регистрации: 11.11.2003
Ну так через тот же параметр. Вот можно ли будет это соорудить через построитель не знаю, а руками написать без проблем.




------------------
Лучше переесть, чем недоспать.
Не спеши, а то успеешь.
Ratings: 0 negative/0 positive
Re: о локальных представлениях
Владимир С
Hi, AleksM!
Цитата:
Ну так через тот же параметр. Вот можно ли будет это соорудить через построитель не знаю, а руками написать без проблем.
Смоделируем ситуацию. В базе имеется LV. В форму в DE этот LV кладем. На форме Grid со многими полями, пусть 5. Три из них будут участвовать в типа фильтре, т.е. в опции Where. В первом случае задействовать нужно 1 поле, в другом 2, а бывает и 3 поля.
Как написать параметризированный LV в базе?
SET FILTER TO не предлагать.
Ratings: 0 negative/0 positive
Re: о локальных представлениях
AleksM

Сообщений: 17881
Дата регистрации: 11.11.2003
Строишь по этим полям строку для where, ну а в LV д.б. что то вроде WHERE EVAL(?tcWhereString)=.T.




------------------
Лучше переесть, чем недоспать.
Не спеши, а то успеешь.
Ratings: 0 negative/0 positive
Re: о локальных представлениях
Владимир С
AleksM!
Цитата:
Строишь по этим полям строку для where, ну а в LV д.б. что то вроде WHERE EVAL(?tcWhereString)=.T.
Это надо попробовать. Спасибо.
Ratings: 0 negative/0 positive
Re: о локальных представлениях
Penner

Сообщений: 4102
Откуда: Muenster
Дата регистрации: 26.04.2002
Объясни мне, неразусному, разницу
WHERE EVAL(?tcWhereString)=.T.
WHERE EVAL(?tcWhereString)





------------------
Никогда не откладывайте на завтра, то, о чем можно забыть навсегда
Ratings: 0 negative/0 positive
Re: о локальных представлениях
AleksM

Сообщений: 17881
Дата регистрации: 11.11.2003
Да в принципе без разницы, это я так для наглядности




------------------
Лучше переесть, чем недоспать.
Не спеши, а то успеешь.
Ratings: 0 negative/0 positive


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

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

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