Как показать только подмножество таблицы - PullRequest
0 голосов
/ 17 февраля 2012

У меня проблема с заполнением таблицы данных правильными данными.

У меня есть таблица данных, которую я использую в форме. Это называется userConfigProfiles. У этого есть 2 столбца FK groupId (это присоединяется к UserGroupInfo) и corpProfileId (это присоединяется к таблице, которую я создал). Эти данные в userConfigProfiles заполняются из другой формы и в настоящее время заполняются соответствующим образом.

Проблема в том, что мне нужно создать раскрывающийся список в форме SalesTable, в котором показано подмножество строк в userConfigProfiles, исходя из того, в каких группах пользователей находится текущий пользователь.

Я попытался сделать это, добавив приведенный ниже код в таблицу userConfigProfiles в форме SalesTable:

public void init()
{
    userConfigProfiles.data(userConfigProfiles::find());

    super();
}

Затем я добавил этот метод поиска к самой таблице:

static public userConfigProfiles find()
{
    userConfigProfiles userProfile;
    UserGroupList userGroupList;

    str 8 u = curUserId();

    select *
    from userProfile
    order by userProfile.bdcProfileId
        join userGroupList
    where userProfile.groupId == userGroupList.groupId
        && userGroupList.userId == u;

    return userProfile;
}

Однако, похоже, что мой метод find вызывается и возвращает правильные данные, он не влияет на данные, которые попадают в раскрывающийся список в моей форме.

Мой раскрывающийся список представляет собой поле StringEdit с источником данных userConfigProfiles и полем данных corpProfileId.

Я почти уверен, что есть несколько способов решить мою проблему, и я открыт для любого из них, даже если это означает удаление всего моего кода и создание выпадающего списка совершенно по-другому.

Ответы [ 2 ]

2 голосов
/ 18 февраля 2012

На сегодняшний день лучший учебник по методам поиска - Ваня:

http://kashperuk.blogspot.com/2009/04/lookup-methods-tutorial-custom-list.html

Загрузите его учебник XPO и используйте один из его вариантов для своей формы. Ваш код выглядит как хакерская работа.

Если вы пытаетесь отобразить подмножество записей в таблице, вам следует изменить запрос (), но если вы пытаетесь изменить отображаемые значения из поиска, я бы проверил его сообщение в блоге .

1 голос
/ 18 февраля 2012

Создайте запрос, используя таблицу UserConfigProfiles с существующим соединением (свойство joinMode) с таблицей UserGroupList, используйте соответствующее отношение, затем добавьте диапазон в поле UserId с value из (currentUserId()) .

Это значение является динамическим выражением запроса , которое предоставляется классом SysQueryRangeUtil .

Наконец, создайте поиск, используя класс SysTableLookup , используя ваш запрос.

...