join etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
join etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

15 Temmuz 2015 Çarşamba

AXAPTA - InventDimExistsJoin makrosuyla InventDim tablosuyla esnek join

 InventDim tablosuyla esnek joinler yapmak için fazla kasmanıza gerek bırakmayan bir makro var:

InventDimParm       dimParm;
InventDim           dimValues,dimJoin;
;
...
//Join where ile kullanacağımız alanları dolduruyoruz
 dimvalues.wMSLocationId = inventdim.wMSLocationId;
    if (inventdim.InventSiteId)
        dimvalues.InventSiteId = inventdim.InventSiteId;
    if (inventdim.configId)
        dimvalues.configId = inventdim.configId;
 //
InventDimParm bu alanlara göre ayarlanacak
    dimparm.initFromInventDim(dimValues);

    while select lclInventSum
        where lclInventSum.ItemId == itemId && leftQty > 0
              #InventDimExistsJoin(lclInventSum.InventDimId,dimJoin,dimValues,dimParm)



İlk parametre join yapılan tablonun ilgili InventDimId alanı, ikinci parametre InventDim tablosunun tanımlanan adı, Üçüncü paremetre ile değerler gidiyor. Dördüncü paremetre de parametre tablosu. Bu tablonun değişik kullanımları da mevcut.

10 Ekim 2013 Perşembe

AXAPTA - Join A tablosunu B tablosuna ve yine A tablosunu C tablosuna bağlamak

Bir forumda öğrendiğim yöntemle bunu yapabiliyorum. Püf noktası fetchMode komutu. Eğer fetchMode komudunu kullanmazsanız düzgün bir select oluşmaz. 
Query query = new Query();
QueryBuildDataSource qbds,qbds1,qbds2;
;
qbds = query.addDataSource(tableNum(SMAServiceOrderTable));
qbds1 = qbds.addDataSource(tableNum(B_RepairJournal));
qbds1.fetchMode(QueryFetchMode::One2One);
qbds1.addLink(fieldNum(B_RepairJournal,ServiceOrderId),fieldNum(SMSServiceOrderTable,ServiceOrderId));
qbds2 = qbds.addDataSource(tableNum(InventTable));
qbds2.fetchMode(QueryFetchMode::One2One);
qbds2.addLink(fieldNum(SMAServiceOrderTable,ItemId),fieldNum(InventTable,ItemId));

info(qbds.toString());