|
Relation и Filter
|
|||
---|---|---|---|
#18+
В Init формы делаю связь двух таблиц: sele tab1 set order to nom bbc=RELATION(1) && 04-04-05 IF LEN(ALLTRIM(bbc))=0 && 04-04-05 SET RELATION TO tab2.nom INTO tab1 ADDITIVE ENDIF Затем фильтрую по tab1 по признаку 1 или 0 в поле priz ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2008, 07:44 |
|
Relation и Filter
|
|||
---|---|---|---|
#18+
Привет всем!!! Продолжаю сообщение. Сервер внезапно отключился... Помогите кто-нибудь, если сталкивался с такой проблемой. ПЛЗ... В Init формы делаю связь двух таблиц: sele tab1 set order to nom bbc=RELATION(1) IF LEN(ALLTRIM(bbc))=0 SET RELATION TO tab2.nom INTO tab1 ADDITIVE ENDIF Затем фильтрую tab1 по признаку 1 или 0, которые в поле priz. Это поле в tab2 нет, но на экран я вывожу содержимое tab2, профильтрованное. sele tab2 SET ORDER TO nom IF setup.priz=1 SET FILTER TO tab1.priz=1 go top ELSE SET FILTER TO tab1.priz=0 go top ENDIF Таблица Setup хранит этот признак, к этой таблице можно обращаться когда угодно. Суть проблемы в том, что на экран постоянно выводится с остальными профильтрованными записями первая запись tab2, в независимости от признака 0 или 1. В чем дело, не пойму? Причем на эту запись я встать не могу, так как по сути ее нет в tab2, фильтр сработал правильно, но на экране она все равно есть. Что сделано не так??? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2008, 09:57 |
|
Relation и Filter
|
|||
---|---|---|---|
#18+
Relation устанавливает видимость подчиненной таблицы со стороны главной. т.е. Вы видите записи подчиненной таблицы при перемещении по главной, но не наоборот. Set filter сам по себе, устанавливается на каждую таблицу отдельно. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2008, 10:26 |
|
Relation и Filter
|
|||
---|---|---|---|
#18+
vkluchRelation устанавливает видимость подчиненной таблицы со стороны главной. т.е. Вы видите записи подчиненной таблицы при перемещении по главной, но не наоборот. Set filter сам по себе, устанавливается на каждую таблицу отдельно. т.е. я должна поставить фильтр и в Tab2... ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2008, 10:31 |
|
Relation и Filter
|
|||
---|---|---|---|
#18+
Весь код: Код: plaintext 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2008, 10:35 |
|
Relation и Filter
|
|||
---|---|---|---|
#18+
Блин, копипаст из вашего кода - сплошные ошибки. Должно быть так: Код: plaintext 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2008, 10:36 |
|
Relation и Filter
|
|||
---|---|---|---|
#18+
Фильтры как хотите. Но чтобы увидеть как работает Relation Вы должны двигаться по главной таблице и видеть записи подчиненной. Если вы двигаетсь по подчиненной то уставка Relation не имеет смысла. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2008, 10:37 |
|
Relation и Filter
|
|||
---|---|---|---|
#18+
AndreTMВесь код: Код: plaintext 1. 2. 3. 4. 5.
сейчас попробую... ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2008, 10:37 |
|
Relation и Filter
|
|||
---|---|---|---|
#18+
AndreTM из вологодских лесов... :) не получилось... фильтр не сработал. выдал вообще все что было :( ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2008, 10:45 |
|
Relation и Filter
|
|||
---|---|---|---|
#18+
Разберите пример [SRC автор]** Подготовка примера CREATE CURSOR tbl1(nom N(2),priz n(1)) CREATE CURSOR tbl2(nom N(2)) FOR i=1 TO 10 INSERT INTO tbl1(nom,priz) VALUES(i,IIF(MOD(i,2)=0,1,0)) INSERT INTO tbl2(nom) VALUES(i) ENDFOR ** Создаем индексы и связи SELECT tbl2 INDEX on nom TO nom1 SET ORDER TO nom1 SELECT tbl1 SET RELATION TO nom INTO tbl2 IN tbl1 ** Непосредственно пример lnSomeVariable=0 IF lnSomeVariable=1 SET FILTER TO tbl1.priz=1 ELSE SET FILTER TO tbl1.priz=0 ENDIF GO top ** Это показывает что и как работает FOR i=1 TO 10 SELECT tbl1 GO i brow SELECT tbl2 brow endfor [/src] У Вас в : Код: plaintext 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2008, 11:05 |
|
Relation и Filter
|
|||
---|---|---|---|
#18+
Sara_gulAndreTM из вологодских лесов... :) не получилось... фильтр не сработал. выдал вообще все что было :( Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2008, 11:36 |
|
Relation и Filter
|
|||
---|---|---|---|
#18+
AndreTM Sara_gulAndreTM из вологодских лесов... :) не получилось... фильтр не сработал. выдал вообще все что было :( Код: plaintext
Да, я именно так и написала. Все равно первая строчка выходит, затем идут уже профильтрованные. Почему первая запись выходит? Я даже на нее встать не могу. Просмотрела таблицу через Browse этой записи нет, фильтр сработал правильно, а на экране она есть??? Что за глюк... ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2008, 12:19 |
|
Relation и Filter
|
|||
---|---|---|---|
#18+
В первом посте упоминается о форме, значит есть почти наверняка и гриды (а что в них неизвестно) Предлагаю Вам подкрепить словесное описание проблемы кодом, который воспроизводит проблему (репро). Минимизировать репро, избавляясь от фрагментов, которые не является абсолютно необходимыми для воспроизведения проблемы. А уже потом Вам помогут разбираться. Наверняка никаких глюков, что пишите то и получаете. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2008, 12:43 |
|
Relation и Filter
|
|||
---|---|---|---|
#18+
2 Sara_gul имею опыт разработки в фокспро и всегда считал и считаю фильтры - злом еслы Вы кратенько поставите задачу, я покажу примеры разработки без применения фильтров и навигации ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2008, 13:00 |
|
Relation и Filter
|
|||
---|---|---|---|
#18+
12345зайчик2 Sara_gul имею опыт разработки в фокспро и всегда считал и считаю фильтры - злом еслы Вы кратенько поставите задачу, я покажу примеры разработки без применения фильтров и навигации Хорошо. Есть форма с одним гридом в которой нужно выдавать только те записи, которые необходимы, согласно признака 1 или 0. Так вот, в init этой формы я описываю, что должно выдаваться в гриде. Данные должны быть из нескольких таблиц связанных между собой. Из таблицы1 мы вывводим номер, из таблицы2 все остальные. Но необходимо выводить только с учетом этого признака, а он есть только в таблице1, во второй его нет. А вывожу я данные таблицы2. Проверяла пошагово через debugger, все профильтровало, смотрю табл1 через browse профильтровало, табл2 тоже. Но на экране в первом случае priz=0 выводит данные с этим признаком, но при этом присутствует первая запись этой таблицы, не важно priz=1 или 0, причем встать я на нее не могу, go top работает правильно ведь этой записи нет по сути, сработал фильтр. Использую приблизительный пример вывода на экран: ***************** nom nasw zena 1 помидор 25 2 шурупы 15 3 шины 30 4 подшипники 50 ************ так вот помидоры здесь не должны быть, а курсор мой стоит на "шурупах" - все сработало правильно go top, и в табл2 "помидоров" нет. Но на экране первая запись выходит. Почему? Ведь в табл2 ее нет??? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2008, 13:16 |
|
Relation и Filter
|
|||
---|---|---|---|
#18+
вот пример с релейшинами, что не оч.правильно по-позже выложу другое решение ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2008, 14:00 |
|
Relation и Filter
|
|||
---|---|---|---|
#18+
Для иллюстрации (может пригодится) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2008, 14:11 |
|
Relation и Filter
|
|||
---|---|---|---|
#18+
vkluchДля иллюстрации (может пригодится) 12345зайчик )))) мда, ассортимент товара мне понравился))) Спасибо огромное за проделанную работу :) vkluch, пасибки... и тебе большое, запустила и твою прогу, супер... все работает в ней :) Только в обоих случаях у вас в форме два грида, а у меня один. Дело в том, что из одной формы мы вызываем другую, которую я и должна обработать, с одним гридом. При запуске программы открывается форма с кнопками, при нажатии одной из кнопок открывается ВОТ ЭТА МОЯ ФОРМА с гридом - одним. При нажатии другой эта же форма с этим же гридом, но с другими данными. При нажатии одной кнопки форма-грид выходит с продуктами, при нажатии другой форма-грид с хоз.товарами. Так вот в 1-ом и во 2-ом случае фильтр срабатывает, но первая запись и там и там. "Помидоры" и в продуктах, и в хоз.товарах. Хорошо в 1-ом случае это правильно, а во 2-ом? А если первыми будут "подшипники", они тоже и там и там. Так они и в продуктах... Что-то с 1-ой записью. Причем, еще раз повторю, ее в таблице нет, профильтровалось все правильно. В любом случае, благодарю всех, кто помогает мне. Огромное, просто, спасибо :) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2008, 14:51 |
|
|
start [/forum/topic.php?fid=41&msg=35584842&tid=1587196]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
63ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
others: | 327ms |
total: | 496ms |
0 / 0 |