A) Если описание (в вашем сценарии "США") было полем, а не полем отображения в LogisticsAddressCountryRegion, то правильный способ сделать это будет следующим:
- создайте новое отношение в InventTable, задайте для его свойства Table значение LogisticsAddressCountryRegion.
- щелкните правой кнопкой мыши новое отношение, выберите «Создать» > «Внешний ключ» > «Одно поле на основе альтернативного ключа».
- он автоматически создаст новое поле LogisticsAddressCountryRegion типа RefRecId (не LogisticsAddressCountryRegionId, как в вашем примере!). Затем вы можете вручную изменить его свойство ExtendedDataType с RefRecId на LogisticsAddressCountryRegionRecId.
- теперь, если вы вручную перетащите это поле из источника данных вашей формы в сетку или группу в вашей форме, будет создан элемент управления ReferenceGroup
- по умолчанию этот элемент управления будет отображать CountryRegionId ("US") из LogisticsAddressCountryRegion (так же, как это работает для вас сейчас). Вам это не нужно - вы хотите, чтобы Description отображался. В этом случае значение свойства ReplacementFieldGroup ReferenceGroup необходимо изменить с AutoIdentification на Description (предположительно, это имя группы в таблице LogisticsAddressCountryRegion, содержащей поле Description).
- Вуаля - описание ("США") отображается в этой форме, и поиск по-прежнему можно использовать, как и раньше.
B) Однако в вашем конкретном случае этот подход не может быть использован, потому что в таблице LogisticsAddressCountryRegion нет поля Description - есть метод отображения displayName, который извлекает описание из другой таблицы (LogisticsAddressCountryRegionTranslation).
В этом случае можно было бы использовать несколько более грубый подход: создать метод редактирования в InventTable, он должен использовать расширенный тип данных LogisticsAddressCountryRegionShortName. Закодируйте его так, чтобы он а) обновлял поле «Страна происхождения» в InventTable на основе введенного значения и б) отображал LogisticsAddressCountryRegion.displayName() на основе значения поля «Страна происхождения». Если вам нужна помощь в кодировании этого метода, я могу посоветовать. Затем перетащите этот метод редактирования, чтобы создать в форме элемент управления StringEdit. Вот и все. Обратите внимание, что вы не сможете использовать значение этого элемента управления для сортировки и фильтрации в своей форме.
C) Не беспокойтесь об этом выше. Используйте 2 элемента управления: один для выбора страны происхождения (будет отображаться «США»), а другой — для отображения описания («США»). Все, что вам нужно изменить в своем текущем решении, — это добавить новый элемент управления на основе метода отображения — как только вы выберете страну происхождения, метод отображения покажет ее описание. Я рекомендую вам использовать этот подход.
Примечание: "Вообще-то я нашел способ сделать это. Я создал поле такой же длины, что и "ShortName", которое равно 255. Затем я просто переопределил метод поиска. на поле." - нет нет нет, это очень плохая идея, не делайте этого. Между InventTable и LogisticsAddressCountryRegion должно быть отношение ForeignKey (ссылка либо на CountryRegionId, либо на RecId).
person
10p
schedule
04.08.2014