Skip links

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


Notice: Trying to access array offset on value of type bool in /var/www/vhosts/dmrbt.com/httpdocs/wp-content/themes/boo/rella/extensions/aq_resizer/aq_resizer.php on line 117

Notice: Trying to access array offset on value of type bool in /var/www/vhosts/dmrbt.com/httpdocs/wp-content/themes/boo/rella/extensions/aq_resizer/aq_resizer.php on line 118

Notice: Trying to access array offset on value of type bool in /var/www/vhosts/dmrbt.com/httpdocs/wp-content/themes/boo/rella/extensions/aq_resizer/aq_resizer.php on line 117

Notice: Trying to access array offset on value of type bool in /var/www/vhosts/dmrbt.com/httpdocs/wp-content/themes/boo/rella/extensions/aq_resizer/aq_resizer.php on line 118
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.

Join the Discussion