|
|
|
Фигня какая-то
|
|||
|---|---|---|---|
|
#18+
В формсете создаю новый метод, который принимает всего одни параметр, по нажатию кнопки этот метод должен выполнять, но почему-то ругается. Метод называется filter_all Описываю такк: Код: plaintext 1. 2. 3. 4. При ножатии кнопки вызываю Код: plaintext Пишет Variable 'R' is not found. Как так и где это он должен его находить. Если же в фильтре напрямую ставлю 1 то работает. Подскажите что я делаю не так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2005, 09:38:12 |
|
||
|
Фигня какая-то
|
|||
|---|---|---|---|
|
#18+
Попробуй: SET FILTER TO (RegionID=m.R) С уважением, Алексей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2005, 09:49:39 |
|
||
|
Фигня какая-то
|
|||
|---|---|---|---|
|
#18+
R не видна вне этого метода. Присвойте значение методу формы или Public переменной(хуже) LPARAMETERS R thisform.Filter_value= R SELECT tmpMainTable SET FILTER TO RegionID=thisform.Filter_value ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2005, 09:51:44 |
|
||
|
Фигня какая-то
|
|||
|---|---|---|---|
|
#18+
LPARAMETERS ParameterList Specifies one or more local variable or array names to assign data from the calling program. Смотрите LOCAL, PRIVATE, PUBLIC ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2005, 09:57:32 |
|
||
|
Фигня какая-то
|
|||
|---|---|---|---|
|
#18+
123R не видна вне этого метода. Присвойте значение методу формы или Public переменной(хуже) LPARAMETERS R thisform.Filter_value= R SELECT tmpMainTable SET FILTER TO RegionID=thisform.Filter_value Да, точно, виноват, именно из-за видимости переменой, но лучше, наверное, так: SET FILTER TO RegionID=thisformset.Filter_value[/quot] и свойство добавь в formset, т.к. метод в нем. И еще, если применяешь простые имена переменных типа R, I и пр., обязательно ставь префикс m. Иначе, рано или поздно напорешься на поле в курсоре (таблицы) с таким же именем и VFP возьмет именно его, а не твою переменную. С уважением, Алексей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2005, 10:00:26 |
|
||
|
Фигня какая-то
|
|||
|---|---|---|---|
|
#18+
Всем большое спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2005, 10:40:12 |
|
||
|
Фигня какая-то
|
|||
|---|---|---|---|
|
#18+
Попробуй PARAMETERS R вместо LRAPAMETERS R ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2005, 11:05:28 |
|
||
|
Фигня какая-то
|
|||
|---|---|---|---|
|
#18+
PARAMETERS тоже не поможет. Переменная которая используется при наложении фильтра должна быть видна из всех процедур и методов формы, если они обращаются к таблице с фильтром. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2005, 11:26:01 |
|
||
|
Фигня какая-то
|
|||
|---|---|---|---|
|
#18+
Властелин комнатушекПопробуй PARAMETERS R вместо LRAPAMETERS R Не пройдет. Методы формы запускаются не друг ИЗ друга, а друг ЗА другом. Т.е. это не вложенная последовательность (переменные PRIVATE видны из процедур запущенных ИЗ той, где она была определеная). Это цепочка последовательно запускаемых процедур. Последующая запускается после окончания работы предыдущей. Здесь надо или пропертю формы или макроподстановку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2005, 11:31:42 |
|
||
|
Фигня какая-то
|
|||
|---|---|---|---|
|
#18+
а вот такой способ поможет в клике кнопки thisformset.filter_all(1) в методе filter_all LPARAMETERS R LOCAL FilterExpr FilterExpr=[set filter to RegionID=]+ALLTRIM(STR(r)) &FilterExpr если передаваемый параметр строковый то FilterExpr=[set filter to RegionID=']+R+['] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2005, 11:43:56 |
|
||
|
Фигня какая-то
|
|||
|---|---|---|---|
|
#18+
Вот однажды мне отвечали очень доступно, От matod http://forum.foxclub.ru/read.php?f=5&i=64375&t=64343#reply_64375 квинтэссенция: Дело в работе механизма фильтра. Команда SET FILTER физически не отбирает записи, попадающие под условие фильтра и фокс использует это условие исключительно по требованию. Например выполняется команда SKIP (явно или неявно выполняемой). Грубо алгоритм работы можно представить следующим образом: 1. перейти на следующую запись 2. провирить условие соответствия фильтру 3. если не выполняется начать сначала В этом есть свой смысл. Предположим, в таблице 100 000 записей. После установки фильтра программа выполнит всего лишь один-два перехода на следующую запись, после чего фильтр станет ненужным. Если бы фокс физически отбирал записи появился бы неоправданный расход ресурсов. Вторая причина. Значения полей могут изменяться, поэтому необходимо каждый раз проверять соответствует ли содержимое записи условию фильтра. И, наконец, третья - организация динамического фильтра - переменная, входящая в условие фильтра может менять свое значение. Т. о. можно себе представить, что смысл команды SET FILTER TO f1=m.x лучше расшифровывать так - использовать в работе только те записи, поле f1 которых совпадает с ТЕКУЩИМ значением переменной. такая вот гибкость и как следствие - низкая производительность фильтров. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2005, 12:01:00 |
|
||
|
Фигня какая-то
|
|||
|---|---|---|---|
|
#18+
to Кэт: но ведь в разделе HELP Using Rushmore Query Optimization to Speed Data Access. Potentially Optimizable Commands with FOR Clauses .,......... SET FILTER ........... так что не все так плохо с фильтрами :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2005, 12:10:44 |
|
||
|
Фигня какая-то
|
|||
|---|---|---|---|
|
#18+
Да я вобщем то не оптимизацию хотела сказать, а то что условие фильтра при работе формы "проверяется" не только в вызываемом методе, но и при движении по записям итд, таким образом области видимости переменной локальной или приватной не хватит :-))) Что уже выше и говорили ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2005, 15:04:22 |
|
||
|
Фигня какая-то
|
|||
|---|---|---|---|
|
#18+
Hi WORKSNS! Оно конечно оптимизируемо, и если единсвтенно для чего применяется фильтр так это SCAN, SKIP и отображение ОДНОЙ записи в форме (без грида) - тогда всё нормально. Но если используется грид, и версия фокса <9 (в 9-ке уже есть Grid.Optimize) то это смерть - не могёт там грид оптимизированно вынимать записи для заполнения видимых строчек... Впрочем для целей отображения лучше всегда применять запросы/представления. Ибо при выполнении запроса условия проверится всего 1 раз на подходящую запись (ну на самом деле чуть сложнее, но лгавное - что ЕДИНОВРЕМЕННО всё отработает и больше не будет дёргаться), а вот фильтр - он постоянно дёргает проверки - т.е. SKIP 1 SKIP -1 - он будет проверять/искать запись 2 раза... Повторишь 100 раз движение - будет каждый раз проверять... Posted via ActualForum NNTP Server 1.2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2005, 00:55:49 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=33198191&tid=1593730]: |
0ms |
get settings: |
9ms |
get forum list: |
21ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
205ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
74ms |
get tp. blocked users: |
2ms |
| others: | 206ms |
| total: | 538ms |

| 0 / 0 |
