AX 2012 View'a computed column eklerken yaptığımız aslında create view cümlesine ekleme yapmak ve SQL Server tarafında hatasız oluşmasını sağlamak.
Öncelikle view tablo metodlarına eklemek istediğimiz kolon için bir metod ekliyoruz:
public static server str SNBisBuggedReverse()
{
return strFmt("select top 1 sign(sum(accountingcurrencyamount)) from GENERALJOURNALACCOUNTENTRY g "+
"where isnull(%1,'') <> '' and exists (select * from TRANSACTIONREVERSALTRANS t where t.TRACENUM = %1 and t.REFRECID = g.RECID and t.REFTABLEID = %2) "+
"group by g.LEDGERACCOUNT "+
"order by 1 desc",SysComputedColumn::comparisonField(identifierstr(PAXMizanView), identifierstr(TransactionReversalTrans), identifierstr(TraceNum)),
tableNum(GeneralJournalAccountEntry));
}
Yukarıda görüldüğü gibi AX sorgusu değil de SQL Server sorgusu kullandım metodu eklerken. Metodumuz aşağıdaki gibi bir string değer döndürecek:
select top 1 sign(sum(accountingcurrencyamount)) from GENERALJOURNALACCOUNTENTRY g where isnull(T4.TRACENUM,'') <> '' and exists (select * from TRANSACTIONREVERSALTRANS t where t.TRACENUM = T4.TRACENUM and t.REFRECID = g.RECID and t.REFTABLEID = 3119) group by g.LEDGERACCOUNT order by 1 desc
View'a eklediğimiz kolonun NoYes cinsinde Enum olmasını istiyoruz. O zaman:
Ardından Eklediğimiz View metodu ViewMethod property alanından seçiyoruz.
Eklediğim yeni kolon maalesef view hızını çok yavaşlatan bir kolondu, mümkün oldukça daha basit birşeyler seçmek view hızı açısından önemli.
Axapta - Usable functions for queries
5 yıl önce
Hiç yorum yok:
Yorum Gönder