Comment afficher un sous-ensemble d'une table
-
27-10-2019 - |
Question
J'ai un problème peuplant une table de données avec les données correctes.
J'ai un tableau de données que j'utilise sous une forme. Il est appelé userConfigProfiles. Il a 2 colonnes FK groupId (ce joint à UserGroupInfo) et corpProfileId (ce joint à une table que j'ai créé). Ces données en userConfigProfiles est peuplée d'une autre forme et est actuellement peuplée de façon appropriée.
La question est, je dois créer une chute sur le formulaire SalesTable qui montre un sous-ensemble des lignes de userConfigProfiles basés hors de ce UserGroups l'utilisateur actuel est.
J'ai essayé de le faire en ajoutant le code ci-dessous la table, userConfigProfiles sous forme SalesTable:
public void init()
{
userConfigProfiles.data(userConfigProfiles::find());
super();
}
Ensuite, j'ajouté cette méthode de découverte à la table elle-même:
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;
}
Cependant, il semble que même si ma méthode de recherche est appelée et renvoie les données correctes, il ne touche pas les données qui entre dans la liste déroulante sur mon formulaire.
Ma liste déroulante est un champ de StringEdit avec un DataSource de userConfigProfiles et DataField de corpProfileId.
Je suis assez sûr qu'il ya plusieurs façons de résoudre mon problème et je suis ouvert à l'un d'eux, même si cela signifie enlever tout mon code et faire le menu déroulant complètement différente.
La solution
Créer une requête à l'aide UserConfigProfiles
de table avec un exist rejoindre (propriété joinMode
) à la table UserGroupList
, utilisez la relation appropriée, puis ajoutez une gamme sur le champ UserId
avec un value
de (currentUserId())
.
Cette valeur est une dynamique requête expression qui est fournie par la classe < a href = "http://community.dynamics.com/product/ax/axtechnical/b/daxit/archive/2010/01/13/dynamics-ax2009-8211-useful-utility-8220-sysqueryrangeutil-8221.aspx" rel = "nofollow"> SysQueryRangeUtil .
Enfin créer une recherche en utilisant la classe SysTableLookup en utilisant votre requête.
Autres conseils
De loin le meilleur tutoriel sur les méthodes de recherche est par Vanya:
http://kashperuk.blogspot.com/ 2009/04 / consultation-méthodes tutoriel sur mesure-list.html
Télécharger le XPO tutoriel et l'utilisation d'une de ses options pour votre formulaire. Votre code ressemble un peu à un travail hack.
Si vous essayez d'afficher un sous-ensemble d'enregistrements sur la table, vous devez modifier la requête (), mais si vous essayez de changer les valeurs affichées à partir d'une recherche, puis je vérifier son billet de blog .