Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Relation и Filter / 19 сообщений из 19, страница 1 из 1
09.10.2008, 07:44
    #35584599
Sara_gul
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Relation и Filter
В 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
...
Рейтинг: 0 / 0
09.10.2008, 09:57
    #35584753
Sara_gul
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Relation и Filter
Привет всем!!! Продолжаю сообщение. Сервер внезапно отключился... Помогите кто-нибудь, если сталкивался с такой проблемой. ПЛЗ...

В 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, фильтр сработал правильно, но на экране она все равно есть. Что сделано не так???
...
Рейтинг: 0 / 0
09.10.2008, 10:26
    #35584818
vkluch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Relation и Filter
Relation устанавливает видимость подчиненной таблицы со стороны главной.
т.е. Вы видите записи подчиненной таблицы при перемещении по главной, но не наоборот.

Set filter сам по себе, устанавливается на каждую таблицу отдельно.
...
Рейтинг: 0 / 0
09.10.2008, 10:31
    #35584842
Sara_gul
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Relation и Filter
vkluchRelation устанавливает видимость подчиненной таблицы со стороны главной.
т.е. Вы видите записи подчиненной таблицы при перемещении по главной, но не наоборот.

Set filter сам по себе, устанавливается на каждую таблицу отдельно.

т.е. я должна поставить фильтр и в Tab2...
...
Рейтинг: 0 / 0
09.10.2008, 10:35
    #35584857
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Relation и Filter
Весь код:
Код: plaintext
1.
2.
3.
4.
5.
select tab1
set order to nom
SET FILTER TO tab1.priz
select tab2
SET RELATION TO nom INTO tab1
go top
...
Рейтинг: 0 / 0
09.10.2008, 10:36
    #35584864
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Relation и Filter
Блин, копипаст из вашего кода - сплошные ошибки. Должно быть так:
Код: plaintext
1.
2.
3.
4.
set order to nom
SET FILTER TO setup.priz
select tab2
SET RELATION TO nom INTO tab1
go top
...
Рейтинг: 0 / 0
09.10.2008, 10:37
    #35584865
vkluch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Relation и Filter
Фильтры как хотите.
Но чтобы увидеть как работает Relation Вы должны двигаться по главной таблице и видеть записи подчиненной.
Если вы двигаетсь по подчиненной то уставка Relation не имеет смысла.
...
Рейтинг: 0 / 0
09.10.2008, 10:37
    #35584871
Sara_gul
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Relation и Filter
AndreTMВесь код:
Код: plaintext
1.
2.
3.
4.
5.
select tab1
set order to nom
SET FILTER TO tab1.priz
select tab2
SET RELATION TO nom INTO tab1
go top


сейчас попробую...
...
Рейтинг: 0 / 0
09.10.2008, 10:45
    #35584901
Sara_gul
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Relation и Filter
AndreTM из вологодских лесов... :)
не получилось... фильтр не сработал. выдал вообще все что было :(
...
Рейтинг: 0 / 0
09.10.2008, 11:05
    #35584961
homik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Relation и Filter
Разберите пример
[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.
IF setup.priz= 1 
  SET FILTER TO tab1.priz= 1 
  go top 
ELSE
  SET FILTER TO tab1.priz= 0 
  go top 
ENDIF
нет переключения на главную таблицу
...
Рейтинг: 0 / 0
09.10.2008, 11:36
    #35585054
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Relation и Filter
Sara_gulAndreTM из вологодских лесов... :)
не получилось... фильтр не сработал. выдал вообще все что было :(
Код: plaintext
set filter to tab1.priz=setup.priz
...
Рейтинг: 0 / 0
09.10.2008, 12:19
    #35585230
Sara_gul
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Relation и Filter
AndreTM Sara_gulAndreTM из вологодских лесов... :)
не получилось... фильтр не сработал. выдал вообще все что было :(
Код: plaintext
set filter to tab1.priz=setup.priz


Да, я именно так и написала. Все равно первая строчка выходит, затем идут уже профильтрованные. Почему первая запись выходит? Я даже на нее встать не могу. Просмотрела таблицу через Browse этой записи нет, фильтр сработал правильно, а на экране она есть??? Что за глюк...
...
Рейтинг: 0 / 0
09.10.2008, 12:43
    #35585308
vkluch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Relation и Filter
В первом посте упоминается о форме, значит есть почти наверняка и гриды (а что в них неизвестно)
Предлагаю Вам подкрепить словесное описание проблемы кодом, который воспроизводит проблему (репро).
Минимизировать репро, избавляясь от фрагментов, которые не является абсолютно необходимыми для воспроизведения проблемы.
А уже потом Вам помогут разбираться. Наверняка никаких глюков, что пишите то и получаете.
...
Рейтинг: 0 / 0
09.10.2008, 13:00
    #35585366
12345зайчик
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Relation и Filter
2 Sara_gul

имею опыт разработки в фокспро и всегда считал и считаю
фильтры - злом

еслы Вы кратенько поставите задачу,
я покажу примеры разработки без применения фильтров
и навигации
...
Рейтинг: 0 / 0
09.10.2008, 13:16
    #35585449
Sara_gul
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Relation и Filter
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 ее нет???
...
Рейтинг: 0 / 0
09.10.2008, 14:00
    #35585605
12345зайчик
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Relation и Filter
вот пример с релейшинами,
что не оч.правильно

по-позже выложу другое решение
...
Рейтинг: 0 / 0
09.10.2008, 14:11
    #35585643
vkluch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Relation и Filter
Для иллюстрации (может пригодится)
...
Рейтинг: 0 / 0
09.10.2008, 14:51
    #35585808
Sara_gul
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Relation и Filter
vkluchДля иллюстрации (может пригодится)

12345зайчик ))))
мда, ассортимент товара мне понравился))) Спасибо огромное за проделанную работу :)

vkluch, пасибки... и тебе большое, запустила и твою прогу, супер... все работает в ней :)


Только в обоих случаях у вас в форме два грида, а у меня один. Дело в том, что из одной формы мы вызываем другую, которую я и должна обработать, с одним гридом. При запуске программы открывается форма с кнопками, при нажатии одной из кнопок открывается ВОТ ЭТА МОЯ ФОРМА с гридом - одним. При нажатии другой эта же форма с этим же гридом, но с другими данными. При нажатии одной кнопки форма-грид выходит с продуктами, при нажатии другой форма-грид с хоз.товарами. Так вот в 1-ом и во 2-ом случае фильтр срабатывает, но первая запись и там и там. "Помидоры" и в продуктах, и в хоз.товарах. Хорошо в 1-ом случае это правильно, а во 2-ом? А если первыми будут "подшипники", они тоже и там и там. Так они и в продуктах... Что-то с 1-ой записью. Причем, еще раз повторю, ее в таблице нет, профильтровалось все правильно.

В любом случае, благодарю всех, кто помогает мне. Огромное, просто, спасибо :)
...
Рейтинг: 0 / 0
09.10.2008, 15:07
    #35585872
vkluch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Relation и Filter
Ну тогда можно так.
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Relation и Filter / 19 сообщений из 19, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]