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

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

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

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

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

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

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

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

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




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

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

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

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




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

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

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

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





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

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

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




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



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

On-line: 15 Simple777 po2 Sawradym Рыжик akvvohinc  (Гостей: 10)

03.12.2020 16:41:57 exec: 0.06
Mem: 1.253 Mb

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