17.08.2009, 08:48 | #1 |
Участник
|
relation по 2 полям
Есть таблица Table1(field1, field2) , Table2(field1, field2) . Как настроить так, чтобы в первой таблице можно было выбровать только сочетания (field1, field2) , которые есть во второй таблице?
Можно сделать новое поле field3 rfr уник ключ в Table2 , но можно ли как-ниюудь обойтись без этого, просто c помошью relations? Realation в Table1(field1, field2) по обоим помям на Table2(field1, field2) не помог |
|
17.08.2009, 08:55 | #2 |
Участник
|
Цитата:
P.S.: Ещё посмотрите как подобная связь реализована в системе, например, для пары таблиц RAssetStandards -> RAssetTrans Последний раз редактировалось S.Kuskov; 17.08.2009 в 09:16. |
|
17.08.2009, 09:09 | #3 |
Участник
|
Есть relation по 2 полям на Table1. Захожу в table browser Table1, нажимаю на field1 выпадает пустой лукап на table2. То же самое, если нажать на field2.
Последний раз редактировалось kitty; 17.08.2009 в 09:13. |
|
17.08.2009, 09:47 | #4 |
Участник
|
И лукап должен работать. Пример: PurchTable->RContractTable связь по мимо прочего по двум полям RContractCode и RContractAccount, т.е. в зависимости от типа договора список договоров в лукапе меняется.
|
|
17.08.2009, 09:51 | #5 |
Member
|
Под field1 и field2 таблицы Table2 должны быть созданы расширенные типы данных. В типах данных должны быть указаны связи с соответствующими полями таблицы Table2. Для полей таблицы необходимо в свойствах выставить наследование от этих типов данных.
Поле field1 таблицы Table1 должно также наследоваться от того же типа данных, который был создан для поля field1 таблицы Table2. Это обеспечит, чтобы в новой записи таблицы Table1 всегда открывался список значений из таблицы Table2. Правда, если field1 таблицы Table2 будет неуникальным, то лукап будет выглядеть несколько странным (значения там будут дублироваться). Данная проблема может быть решена, если поле field1 таблицы Table2 будет заполняться на основании справочника (и расширенный тип данных будет ссылаться не на Table2.field1, а на этот справочник). Для того, чтобы лукапилось поле field2 таблицы Table1 наследовать его от расширенного типа данных, который создан для поля field2 таблицы Table2 нельзя. Для него как раз и нужно создать связь по двум полям. Данное поле будет лукапиться в результате только после заполнения поля field1 таблицы Table1. Ну и значения там будут только те, которые есть в связанной таблице Table2.
__________________
С уважением, glibs® |
|
17.08.2009, 16:35 | #6 |
Участник
|
спасибо
Все делаю , как у вас описано : Table2 : поле Field1 - имеет EDT, смотрящий на эту же Table2 поле Field1 Table2 : поле Field2 - имеет EDT, смотрящий на эту же Table2 поле Field2 Table1 : поле Field1 - имеет EDT, смотрящий Table2 поле Field1 Table1 : поле Field2 - не имеет EDT Table1 имеет relation по 2 полям на Table2: Table1. Field1 =Table2.Field1 Table1. Field2 =Table2.Field2 В результате, при клике на Table1. Field1 открывается лукап на Table2, а вот Table1. Field2 не имеет лукапа совсем теперь(. Что делаю не так? |
|
17.08.2009, 19:20 | #7 |
Участник
|
удалось, спасибо! проблема была в том, что Validate = no на relation.
Можно ли сделать так, чтобы при выборе в лукапе на Table1.Field2, Table1.Field1 заполнялся автоматически (или все равно придется fieldModified переопределять)? |
|
17.08.2009, 19:57 | #8 |
Member
|
Цитата:
Сообщение от kitty
...
при выборе в лукапе на Table1.Field2, Table1.Field1 заполнялся автоматически ...
__________________
С уважением, glibs® |
|
17.08.2009, 20:32 | #9 |
Участник
|
Да, как вы описали все работает. Но хочется, чтобы при выборе записи в одном из полей, второе заполнялось тоже. Я так понимаю, что тут уже relation не поможет, можно только в modifiedField Table1.Field2 приписать заполнение Table1.Field1. У меня таблица "Подгруппы" содержит поле Группа. Пользователь должени иметь возможность на форме Клиента(которая имеет 2 поля Группа и Подгруппа ) как заполнить поле Группа, оставив Подгруппа незаполненным или заполнить оба поля, выбрав значение из поля Подгруппа( таким образом, одновременно подтянув Группу тоже из таблицы Подгруппа).
|
|
17.08.2009, 20:51 | #10 |
Member
|
В Аксапте так не делают. Соответственно, рекомендуется так не делать. Для единообразия. Иначе интерфейс перестанет быть интуитивно понятным, если каждый программист будет писать как ему нравится.
Тем не менее техническая возможность сделать так как вы пишете есть. Но только путем кодирования.
__________________
С уважением, glibs® |
|
20.08.2009, 12:20 | #11 |
Участник
|
Хорошо, а можно без программирования очищать значение в Table1.Field2 , если пользователь меняет значение в Table1.Field1?
|
|
20.08.2009, 12:26 | #12 |
Ищущий знания...
|
На сколько я знаю, нет.
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
Теги |
relation |
|
Похожие темы | ||||
Тема | Ответов | |||
И снова про Relation | 7 | |||
Пропал Relation в фильтре | 5 | |||
Как найти Relation | 6 | |||
Relation на таблице и EDT | 2 | |||
Создать Relation в AOT программным кодом | 3 |
|