Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / (SET RELATION) / 9 сообщений из 9, страница 1 из 1
05.03.2005, 11:54
    #32947993
Серж-1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(SET RELATION)
Вопрос как мне правильно зделать? Мне надо осуществить связь из первой таблицы из полей num_var_g1, num_var_g2, num_var_g3 ко второй по поля num_var_go.
Что я делаю нетак?
пример прилогается.
...
Рейтинг: 0 / 0
05.03.2005, 11:55
    #32947996
Серж-1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(SET RELATION)
...
Рейтинг: 0 / 0
05.03.2005, 12:08
    #32948036
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(SET RELATION)
Очень большая просьба. Прочитай, что такое связь в FoxPro

Раздел "Связи и отношения между таблицами"
http://www.foxclub.ru/kb/index.php?sid=35321&aktion=artikel&rubrik=004&id=103&lang=ru

Связь - это позиционирование указателя записи. Куда (на какую запись) надо позиционироваться по твоим условиям?
...
Рейтинг: 0 / 0
05.03.2005, 12:27
    #32948082
Серж-1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(SET RELATION)
Тоесть если я становлюсь на первую запись в таблице b_l_chan где в поле Num_var_g1=1, Num_var_g2=2, Num_var_g3=3 мне надо чтобы в таблице varnica отоброжались строки в которых Num_var_go=1,2,3.
Но комбинацыя в полях Num_var_g1, Num_var_g2, Num_var_g3 может быть разная тоесть:
4, 5, 0
6, 0, 0
и так далее.
Может щас будет понятнее.
...
Рейтинг: 0 / 0
05.03.2005, 12:45
    #32948148
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(SET RELATION)
Еще раз. Связь - это позиционирование записи примерно по такой схеме:

Одно (конкретное) значение в главной таблице - связывается с одним (конкретным) значением в подчиненной.

У тебя значение главной таблицы НЕ определено: или Num_var_g1, или Num_var_g2, или Num_var_g3. Т.е. одно из 3-х возможных значений.

По таким условиям связь через Relation сделать невозможно ! Нет однозначного ответа, куда должен встать указатель записи в подчиненной таблице, если есть значение во всех 3 полях главной!

Я вообще удивлен, что тебе в принципе удалось сделать 3 связи. FoxPro должен был ругнуться уже при попытке организовать вторую связь.

Однако решение твоей задачи в принципе существует. Но не через Relation, а через запросы (или Local View). Т.е. подчиненная таблица - это запрос вида:

Код: plaintext
1.
2.
3.
SELECT * FROM varnica ;
WHERE Num_var_go = b_l_chan.Num_var_g1 OR ;
Num_var_go = b_l_chan.Num_var_g2 OR ;
Num_var_go = b_l_chan.Num_var_g1

Этот запрос должен обновляться (выполняться перезапрос) при переходе на другую строку таблицы b_l_chan (в методе AfterRowColChange главного Grid)
...
Рейтинг: 0 / 0
05.03.2005, 14:13
    #32948397
Серж-1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(SET RELATION)
Вот теперь большое прибольшое СПАСИБО.
...
Рейтинг: 0 / 0
05.03.2005, 15:53
    #32948606
Серж-1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(SET RELATION)
Здела всё так как написал "ВладимирМ", но чёта получается нетак как хотелось бы. Но после выполнение кода
Код: plaintext
1.
2.
3.
SELECT * FROM varnica ;
WHERE Num_var_go = b_l_chan.Num_var_g1 OR ;
Num_var_go = b_l_chan.Num_var_g2 OR ;
Num_var_go = b_l_chan.Num_var_g3
На весь экран открывается таблица varnica с правильным отбором а во втором гриде где прописана эта таблица значения не изменяются.
Что не так?
...
Рейтинг: 0 / 0
05.03.2005, 16:08
    #32948635
Серж-1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(SET RELATION)
...
Рейтинг: 0 / 0
05.03.2005, 22:14
    #32948979
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(SET RELATION)
Смотри вложение. Здесь реализован простейший механизм через SQL-Statment. Если бы таблицы были включены в базу данных или просто существовал бы контейнер базы данных, то можно было бы создать Local View. В этом случае код несколько сократился бы.

У формы добавлено свойство nRecno и на это свойство создан метод nRecno_Assign(). Использование глобальных переменных - крайне порочная практика. Источник большого количества проблем.

Источником данных для Grid2.RecordSourceType = 4 - SQL Statment, который собственно и формируется в nRecno_Assign()

Пример написан в VFP6SP5. В младших версиях метода Prop_Assign() не существовало и пример в таком виде не запустится. Нужно будет чуть изменить код.
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / (SET RELATION) / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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