Archive for Şubat 18th, 2013

Ax 2012 ile yazdığımız bir sorgunun SQL ifadesini almak

Merhaba

Ax ile yazdığımız bir sorgunun nasıl bir SQL ifadesi oluşturduğunu görmek için ax 2012 ile gelen  getSQLStatement() metodunu kullanabiliriz.  Şöyle bir örnek yapalım.


static void FD_generateonlyAndgetSQLStatement(Args _args)
{
CustTable custTable;
CustTrans custTrans;
;

select generateonly firstOnly10  AccountNum, CustGroup from custTable
join CurrencyCode , AmountMST from custTrans
where custTrans.AccountNum == custTable.AccountNum;

info(custTable.getSQLStatement());
}

Çalıştırdığınızda çıktısı şöyle olacaktır.

SELECT TOP 10 T1.ACCOUNTNUM,T1.CUSTGROUP,T1.RECID,T2.CURRENCYCODE,T2.AMOUNTMST,T2.RECID

FROM CUSTTABLE T1 CROSS JOIN CUSTTRANS T2 WHERE (T1.DATAAREAID=?) AND ((T2.DATAAREAID=?)

AND (T2.ACCOUNTNUM=T1.ACCOUNTNUM))

Burada önemli olan generateonly ifadesi generateonly olmadan bu çıktıyı elde edemezsiniz. Ne işe yarıyor derseniz  bir sorguda kullandığınızda sadece SQL ifadesini oluşturuyor ama çalıştırmıyor. Bu sayede getSQLStatement() metodunu çağırdığımızda SQL ifadesini görebiliyoruz.

SQL ifadesinde dikkatimi çeken diğer bir nokta da TOP 10 kısmı. Gördüğünüz gibi aslında FirstOnly (herhengi bir rakam ) şeklinde bir metod kolayca yapılabilir. Ax’ı geliştiren arkadaşlar artık bunu yapmalı.

Selamlar.