Цитата:
Сообщение от
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));
Огромное спасибо всем, кто участвовал в решении проблемки!!!