Query ile yapamadığınız bir join’i nasıl yapabilirsiniz?

Merhaba
BankAccountTable’ı lookup da açtırmak istiyoruz. Kriterlerimiz şöyle.
Lookupta  BankAccountTable.AssignedBankTransType alanı boş olanlar ve BankTransType.BankTransType   <>  BankAccountTable.AssignedBankTransType
İlişkisiyle  BankTransType’ın BankTransType.ExchangeNoteDocType’ı Çek ve senetten farklı olan kayıtlar isteniyor.
Query’de   bu join’in nasıl yapılacağını bulamadım.  Bu sebepten  temp tablo kullanmaya  karar verdim.  while select kullanarak temptabloyu doldurup.
Sonra lookup için query’ı yazdım.
Axaptada joinlerle ilgili bir makaleyi ilerki zamanlarda yayınlayacağım.
Örenk metod şöyledir.
 
static client void lookupPortfolioPromissory(FormStringControl _ctrl, CurrencyCode _filterStr)
{
SysTableLookup                sysTableLookup = SysTableLookup::newParameters(tablenum(tmpBankAccountTable),_ctrl);
Query                                     query = new Query();


QueryBuildDataSource  queryBuildDataSource = query.addDataSource(tablenum(tmpBankAccountTable));
QueryBuildDataSource  qdbs;
str 100                                   strd;
BankAccountTable          BankAccountTable;
BankTransType                 BankTransType;
tmpBankAccountTable  tmpBankAccountTable;
;

  //  delete_from tmpBankAccountTable;  // tablo özelliklerinden  temp true yaparsanız bu satıra gerek kalmaz
    while select BankAccountTable
where BankAccountTable.CurrencyCode == _filterStr
{
if(BankAccountTable.AssignedBankTransType)
{
while select BankTransType
where BankTransType.BankTransType       == BankAccountTable.AssignedBankTransType
&&    BankTransType.ExchangeNoteDocType != ExchangeNoteDocType::PromissoryNotes
&&    BankTransType.ExchangeNoteDocType != ExchangeNoteDocType::Cheque
{
// info(strfmt(“%1”,BankAccountTable.AccountId));

tmpBankAccountTable.clear();
tmpBankAccountTable.AccountID = BankAccountTable.AccountId;
tmpBankAccountTable.Name      = BankAccountTable.Name;
tmpBankAccountTable.insert();
}
}
else
{
// info(strfmt(“%1”,BankAccountTable.AccountId));

tmpBankAccountTable.clear();
tmpBankAccountTable.AccountID = BankAccountTable.AccountId;
tmpBankAccountTable.Name      = BankAccountTable.Name;
tmpBankAccountTable.insert();
}

    }

sysTableLookup.addLookupfield(fieldnum(tmpBankAccountTable,AccountId));
sysTableLookup.addLookupfield(fieldnum(tmpBankAccountTable,Name));

    sysTableLookup.parmQuery(query);
sysTableLookup.performFormLookup();
}

Selamlar.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Dijital Dönüşümünüzü AI İle Hızlandırın

Dynamics 365 ve AI destekli çözümlerle iş süreçlerinizi optimize edin, verinizi anlamlı içgörülere dönüştürün ve büyümenizi sürdürülebilir hale getirin.

AI-Ready Enterprise Partner

Microsoft Dynamics 365 ve yapay zekâ çözümleriyle kurumsal sistemlerinizi güçlendirir, operasyonel karmaşıklığı azaltır ve geleceğe hazır bir mimari tasarlarız.

DMR Göztepe Merkez Ofis

Eğitim Mah. Hızırbey Cad. No:118/5 D:1 Kadıköy İstanbul

Marmara Üniversitesi Göztepe Kampüsü Teknopark

Tel: +90 216 470 79 49

E-posta: info@dmrbt.com

DMR Başıbüyük Ofis

Başıbüyük Mahallesi Süreyyapaşa Başıbüyük Yolu Sk. No: 4/7 Maltepe İstanbul

Marmara Üniversitesi Başıbüyük Kampüsü Teknopark

Tel: +90 216 470 79 49

E-posta: info@dmrbt.com