lundi 30 juin 2014

Personnaliser la requête d'un lookup

Vous souhaiteriez utiliser un lookup existant, celui-ci vous convient parfaitement malheureusement la requête sur lequel il s'appuie n'est pas assez restrictive.

Pas de soucis, à cela une solution simple : vous n'avez qu'à coder l'événement lookup du champ en question.

Voici un exemple de code que l'on pourrait mettre en place sur un champ de sélection d'un employé s'appuyant sur l'EDT EmplId :

public void lookup()
{
    SysTableLookup          sysTableLookup;
    Query                   query = new Query();
    QueryBuildDataSource    qbds;
    ;
    //Création du lookup
    sysTableLookup=SysTableLookup::newParameters(tablenum(EmplTable),this);
   
    //Ajout des champs à présenter dans le lookup
    sysTableLookup.addLookupfield(fieldnum(EmplTable,EmplId));
    sysTableLookup.addLookupfield(fieldnum(EmplTable,Name));

    //Définition de la requête à utiliser par le lookup
    qbds = query.addDataSource(tableNum(EmplTable));
    qbds.addRange(fieldNum(EmplTable,Title)).value("Votre Valeur");

    //Rattachement de la query au lookup
    sysTableLookup.parmQuery(query);
   
    //Affichage du lookup
    sysTableLookup.performFormLookup();
}

Et voilà....vous obtiendrez le champ de sélection attendu avec les bonnes données dans la liste déroulante.