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.