Показать сообщение отдельно
Старый 02.11.2014, 13:42   #8  
Music is offline
Music
Участник
 
33 / 10 (1) +
Регистрация: 01.07.2014
Цитата:
Сообщение от AndyD Посмотреть сообщение
Добавьте
X++:
dsSpecies.fetchMode(QueryFetchMode::One2One);
...
dsBreed.fetchMode(QueryFetchMode::One2One);
и outer join лучше передвинуть после inner join - не очень любит Аксапта смешивать эти связи на одном уровне

И еще.
Если у вас на таблицах прописаны релейшены, то можно не вызывать addLink(), а прописать relations(true); на датасорсах

Сработали оба варианта!
Часть кода (вариант 1):
X++:
    dsCust = query.addDataSource(tableNum(VetCustPetTable));
    dsSpecies = dsCust.addDataSource(tableNum(VetSpeciesTable));
    dsSpecies.joinMode(JoinMode::OuterJoin);
    dsSpecies.relations(true);
    dsSpecies.fetchMode(QueryFetchMode::One2One);

    dsBreed = dsCust.addDataSource(tableNum(VetBreedTable));
    dsBreed.joinMode(JoinMode::OuterJoin);
    dsBreed.relations(true);
    dsBreed.fetchMode(QueryFetchMode::One2One);
Часть кода (вариант 2):
X++:
    dsCust = query.addDataSource(tableNum(VetCustPetTable));
    dsSpecies = dsCust.addDataSource(tableNum(VetSpeciesTable));
    dsSpecies.joinMode(JoinMode::OuterJoin);
    dsSpecies.fetchMode(QueryFetchMode::One2One);
    dsSpecies.addLink(FieldNum(VetCustPetTable, SpeciesId), fieldNum(VetSpeciesTable, SpeciesId));

    dsBreed = dsCust.addDataSource(tableNum(VetBreedTable));
    dsBreed.joinMode(JoinMode::OuterJoin);
    dsBreed.fetchMode(QueryFetchMode::One2One);
    dsBreed.addLink(fieldNum(VetCustPetTable, SpeciesId), fieldNum(VetBreedTable, SpeciesId));
    dsBreed.addLink(fieldNum(VetCustPetTable, BreedId), fieldNum(VetBreedTable, BreedId));

Огромное спасибо всем, кто участвовал в решении проблемки!!!