Domanda

Ho un problema nel compilare una tabella di dati con i dati corretti.

Ho una tabella dati che sto utilizzando in un modulo. Si chiama userConfigProfiles. Ha un groupId di 2 colonne FK (questo si unisce a UserGroupInfo) e corpProfileId (questo si unisce a una tabella che ho creato). I dati in userConfigProfiles vengono popolati da un altro modulo e sono attualmente popolati in modo appropriato.

Il problema è che devo creare un menu a discesa nel modulo SalesTable che mostri un sottoinsieme delle righe in userConfigProfiles in base a quali UserGroup si trova l'utente corrente.

Ho provato a farlo aggiungendo il codice seguente alla tabella, userConfigProfiles nel modulo SalesTable:

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

    super();
}

Quindi ho aggiunto questo metodo find alla tabella stessa:

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

Tuttavia, sembra che anche se il mio metodo find viene chiamato e restituisce i dati corretti, non influisce sui dati che vanno nell'elenco a discesa sul mio modulo.

Il mio elenco a discesa è un campo StringEdit con un DataSource di userConfigProfiles e un DataField di corpProfileId.

Sono abbastanza sicuro che ci siano diversi modi per risolvere il mio problema e sono aperto a nessuno di essi, anche se ciò significa rimuovere tutto il mio codice e fare il menu a discesa in modo completamente diverso.

È stato utile?

Soluzione

Crea una query utilizzando la tabella UserConfigProfiles con un exist join (proprietà joinMode) alla tabella UserGroupList, utilizza la relazione appropriata, quindi aggiungi un intervallo nel campo UserId con un value di (currentUserId()).

Questo valore è un ' espressione di query dinamica fornita dalla classe SysQueryRangeUtil .

Infine, crea una ricerca utilizzando la classe SysTableLookup utilizzando la tua query.

Altri suggerimenti

Di gran lunga il miglior tutorial sui metodi di ricerca è di Vanya:

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

Scarica il suo tutorial XPO e usa una delle sue opzioni per il tuo modulo.Il tuo codice assomiglia un po 'a un hack.

Se stai tentando di visualizzare un sottoinsieme di record sulla tabella, dovresti modificare la query (), ma se stai cercando di modificare i valori visualizzati da una ricerca, controlla il suo post sul blog.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top