for flooders
:: Главная :: Решения :: Статьи :: Сайт М. Дроздова :: Файловый архив :: Книга по VFP 9 :: Русский Help Online :: OFF-LINE Форум
   Л и с о в о д ы   в с е х   с т р а н,  о б ъ е д и н я й т е с ь !!!  

Список Форумов  :: Архив конференции по VFP до 2005 года
   :: Помощь сайту :: 

о локальных представлениях
yepishkin
Автор

Сообщений: 35
Дата: 21.03.05 07:23:23ОтветитьЦитировать
Как программным методом изменить в локальном представлении выражение WHERE?
Спасибо!
Ratings: 0 negative/0 positive

Re: о локальных представлениях
samson_i
Гость
Дата: 21.03.05 08:02:29ОтветитьЦитировать
указать глобальные переменные
Public gVar
Select * from MyTabe Where MyTabe.Myfield==gVar
потом соответственно менять gVar
во вкладке построителя указать тип параметров
для обновления форм использовать ReQuery('MyView')
Ratings: 0 negative/0 positive

Re: о локальных представлениях
Владимир Максимов

Сообщений: 13815
Откуда: Москва
Дата: 21.03.05 09:36:22ОтветитьЦитировать
Цитата:
указать глобальные переменные
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: о локальных представлениях
Владимир С
Гость
Дата: 21.03.05 13:08:11ОтветитьЦитировать
Hi, Владимир Максимов.
Просто yepishkin надо бы посмотреть ПАРАМЕТРИЗИРОВАННЫЕ Local View.
А вот если хочется поменять радикально опцию Where?
Ratings: 0 negative/0 positive

Re: о локальных представлениях
AleksM
[Админ]

Сообщений: 17704
Дата: 21.03.05 13:19:27ОтветитьЦитировать
Ну так через тот же параметр. Вот можно ли будет это соорудить через построитель не знаю, а руками написать без проблем.




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

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

Re: о локальных представлениях
AleksM
[Админ]

Сообщений: 17704
Дата: 21.03.05 13:38:58ОтветитьЦитировать
Строишь по этим полям строку для where, ну а в LV д.б. что то вроде WHERE EVAL(?tcWhereString)=.T.




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

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

Re: о локальных представлениях
Penner

Сообщений: 4053
Откуда: Muenster
Дата: 21.03.05 13:43:57ОтветитьЦитировать
Объясни мне, неразусному, разницу
WHERE EVAL(?tcWhereString)=.T.
WHERE EVAL(?tcWhereString)





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

Re: о локальных представлениях
AleksM
[Админ]

Сообщений: 17704
Дата: 21.03.05 13:44:54ОтветитьЦитировать
Да в принципе без разницы, это я так для наглядности




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



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

On-line: 10 of63  and Guests: 9


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