Показать сообщение отдельно
Старый 15.01.2009, 15:32   #4  
rkorchagin is offline
rkorchagin
Участник
 
81 / 69 (3) ++++
Регистрация: 26.09.2006
Ну как бы решил....
надо получается на каждом датасорсе что на одном уровне ставить
fetchMode(QueryFetchMode::One2One);

только потом сделать Map и проверять уже выведен ли vendInvoiceJour или нет - а то так получается что печатается столько раз сколько VendTrans (vendInvoiceTrans)


X++:
//TE-rko
static void testDatasource(Args _args)
{


    Query   query = new query();
    QueryBuildDataSource qbds, qbds1, qbds2;
    querybuildrange qbr;
    QueryRun qr;
    VendInvoiceJour VendInvoiceJour;
    ;

    qbds = query.addDataSource(tablenum(VendInvoiceJour));

    qbds1 = qbds.addDataSource(tablenum(VendTrans));
    qbds1.relations(true);
    qbds1.fetchMode(QueryFetchMode::One2One);

    qbr = qbds1.addRange(fieldnum(VendTrans,Recid));
//    qbr.value(strfmt("%1",1));//-2082064522));



    qbds2 = qbds.addDataSource(tablenum(VendInvoiceTrans));
    qbds2.relations(true);
    qbds2.fetchMode(QueryFetchMode::One2One);

    qbr = qbds2.addRange(fieldnum(VendInvoiceTrans,InvoiceId));

  //  qbr.value("TI00005951");
  qbr.value("RV300654228");

     qr = new QueryRun(query);
     while (qr.next())
     {
        if (qr.changed(tablenum(VendInvoiceJour)))
        {
            VendInvoiceJour = qr.get(tablenum(VendInvoiceJour));
            info(VendInvoiceJour.InvoiceId);
        }

     
     }




}
Цитата:
Поэтому я не совсем понимаю, где у вас на данный момент OR и откуда вы хотите его убрать?
OR по умолчанию в аксапте между датасорсами на одном уровне. А когда ставишь fetchMode(QueryFetchMode::One2One); на каждом датасоурсе - то получается именно AND.