How to check the Released product variants with ItemId, color and size

private string255 checkInventDimCombination(ItemId               _ItemId,
                                            EcoResItemColorName  _inventColorId,
                                            EcoResItemSizeName   _inventSizeId)
{
    EcoResSize                      _ecoResSize;
    Query                           _query;
    QueryRun                        _queryRun;
    QueryBuildDataSource            _qbds, _qbds2, _qbds3, _qbds4, _qbds5;
    QueryBuildRange                 _qbr, _qbr2,_qbr3;
    String255                       _ret;
    ;

    _query  = new Query(queryStr(EcoResProductVariantsPerCompany));

    _qbds   = _query.dataSourceTable(tableNum(InventDimCombination));
    _qbr    = _qbds.addRange(fieldNum(InventDimCombination, ItemId));
    _qbr.value(_itemid);

    //color
    _qbds2 = _query.dataSourceTable(tableNum(EcoResProductVariantColor));
    _qbds4 = _qbds2.addDataSource(tableNum(EcoResColor));
    _qbds4.relations(true);
    _qbds4.fetchMode(QueryFetchMode::One2One);
    _qbr2 = _qbds4.addRange(fieldNum(EcoResColor, Name));
    _qbr2.value(_inventColorId);

    //size
    _qbds3 = _query.dataSourceTable(tableNum(EcoResProductVariantSize));
    _qbds3.addSortField(fieldNum(EcoResProductVariantSize, Size), SortOrder::Descending);
    _qbds5 = _qbds3.addDataSource(tableNum(EcoResSize));
    _qbds5.relations(true);
    _qbds5.fetchMode(QueryFetchMode::One2One);
    _qbr3 = _qbds5.addRange(fieldNum(EcoResSize, Name));
    _qbr3.value(_inventSizeId);

    _queryRun = new QueryRun(_query);
    // info(_queryRun.query().dataSourceNo(1).toString());
    while (_queryRun.next())
    {
        _ecoResSize = _queryRun.get(tableNum(EcoResSize));
        if(!_ret)
            _ret += _ecoResSize.Name;
        else
            _ret += "," + _ecoResSize.Name;
    }
    return _ret;
}
原文地址:https://www.cnblogs.com/Fandyx/p/3015349.html