Group by ile lookup örneği

InventColor tablosuna yazılan metot

client static void lookupColorIdGroupBy(FormStringControl   ctrl,
                                        str                 _filterStr
                                        )
{
    SysTableLookup          sysTableLookup;
    Query                   query;
    QueryBuildDataSource    queryBuildDataSource;
    QueryBuildRange         queryBuildRange;
    ;

    sysTableLookup = SysTableLookup::newParameters(tablenum(InventColor), ctrl);
    sysTableLookup.addLookupfield(fieldnum(InventColor, InventColorId));
    sysTableLookup.addLookupfield(fieldnum(InventColor, Name));

    query = new Query();
    queryBuildDataSource = query.addDataSource(tablenum(InventColor));
    queryBuildDataSource.orderMode(OrderMode::GroupBy);
    queryBuildDataSource.addGroupByField(fieldnum(InventColor, InventColorId));
    queryBuildDataSource.addGroupByField(fieldnum(InventColor, Name));
    if(_filterStr)
    {
        QueryBuildRange = queryBuildDataSource.addRange(fieldnum(InventColor, InventColorId));
        queryBuildRange.value(_filterStr);
    }
    sysTableLookup.parmUseLookupValue(false); // aynı satırın tekrarlamaması için önemli
    sysTableLookup.parmQuery(query);
    sysTableLookup.performFormLookup();
}

Kullanmak istediğiniz formun filed’ına yazacağınız kod

public void lookup(FormControl _formControl, str _filterStr)
{
    ;
    InventColor::lookupColorIdGroupBy(_formControl, _filterStr);
}