Pergunta

Estou tendo problemas para preencher uma tabela de dados com os dados corretos.

Tenho uma tabela de dados que estou usando em um formulário. É denominado userConfigProfiles. Ele tem 2 colunas FK groupId (isso se junta a UserGroupInfo) e corpProfileId (isso se junta a uma tabela que eu criei). Esses dados em userConfigProfiles são preenchidos a partir de outro formulário e atualmente são preenchidos de forma adequada.

O problema é que preciso criar um menu suspenso no formulário SalesTable que mostra um subconjunto das linhas em userConfigProfiles com base nos grupos de usuários em que o usuário atual está.

Tentei fazer isso adicionando o código abaixo à tabela, userConfigProfiles no formulário SalesTable:

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

    super();
}

Então, adicionei este método find à própria tabela:

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;
}

No entanto, parece que, embora meu método find seja chamado e retorne os dados corretos, ele não está afetando os dados que vão para a lista suspensa em meu formulário.

Minha lista suspensa é um campo StringEdit com um DataSource de userConfigProfiles e um DataField de corpProfileId.

Tenho certeza de que existem várias maneiras de resolver meu problema e estou aberto a qualquer uma delas, mesmo que isso signifique remover todo o meu código e fazer a caixa suspensa de maneira completamente diferente.

Foi útil?

Solução

Crie uma consulta usando a tabela UserConfigProfiles com uma junção exist (propriedade joinMode) para a tabela UserGroupList, use a relação apropriada e, em seguida, adicione um intervalo no campo UserId com um value de (currentUserId()).

Este valor é uma expressão de consulta que é fornecida pela classe SysQueryRangeUtil .

Finalmente crie uma pesquisa usando a classe SysTableLookup usando sua consulta.

Outras dicas

De longe, o melhor tutorial sobre métodos de pesquisa é o de Vanya:

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

Baixe seu tutorial XPO e use uma de suas opções para o seu formulário.Seu código parece um pouco com um trabalho de hack.

Se você estiver tentando exibir um subconjunto de registros na tabela, deverá modificar a consulta (), mas se estiver tentando alterar os valores exibidos em uma pesquisa, eu verificaria sua postagem no blog.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top