Herkese Merhaba,
Bu yazımda Axapta formlarında hızlı bir şekilde nasıl filtre yapılacağına dair bilgileri paylaşmaya çalışacağım. Formlarda filtre yapabilmek için birkaç yöntem var.
- Alana göre filtreleme.
- Kılavuza göre filtreleme.
- Form açılırken yapılması istenen sıralama veya filtreleme .
- Tarih alanına göre filtreleme
- Ekstra alanlara göre filtreleme (Radio buton, CheckBox , ListBox ile filtreleme)
Bu makalemde ilk 3 yöntemi anlatmaya çalışacağım.
Şimdi bunları biraz açalım…
1. Alana göre filtreleme.
Filtrelemek istediğimiz alana sağ klik yapıp alana göre filtre seçilerek, verilen değere göre filtre yapılabilir.
Ör: Müşteriler formunda Müşteri hesabına göre filtreleme.
2. Kılavuza göre filtreleme.
Filtrelemek istediğimiz grid te üzerindeki Araç çubuğundaki kılavuza göre filtre butonu seçilince,
gridde üst kısmında filtre kısmı açılmış olur.
3. Form açılırken yapılması istenen sıralama veya filtreleme
a) Sıralama
Formlarda sıralama için kod yazılmazsa index e göre sıralama yapar.
Ama indexe göre sıralama yapmasını istemiyorsak formun datasource’sunun init metoduna kod yazmamız gerekiyor.
Ör:
Örneğimizdeki kod, custTable formu açıldığında CustGroup a göre sıralamayı sağlayacaktır.
void init()
{
;
super();
this.query().dataSourceTable(tablenum(custTable)).addOrderByField(fieldnum(custTable,CustGroup), sortorder::Ascending);
}
Filtreleme
Bir formu sadece programa giren kullanıcı bazlı filtreleme yapmak istiyoruz. Kullanıcılar sadece kendisi ile ilgili kayıtları görmesini istiyoruz.
Eğer bunlar grup değilse ve herkes için ayrı security key tanımlayamayacağımızdan dolayı, kod yardımıyla yapmamız gerekiyor.
Ör:
xTable isminde bir tablomuz ve formumuz var. Bu tablomuzda emplId isminde bir alanımız var. Bu alanda kullanıcı ID leri tutuluyor.
xTable formu açıldığında sadece giren kullanıcı ID sine göre filtreleme yapılmasını ve başka kullanıcıların bilgilerini görmesini istemiyoruz.
Bu işlemi şu şekilde yapabiliriz.
//classDeclaration
public class FormRun extends ObjectRun
{
QueryBuildRange qbrownerid;
}
//filtre yapacağımız formun (xTable) datasourcesinin init metodu
public void init()
{
super();
qbrownerId = this.query().dataSourceTable(tablenum(xTable)).addRange(fieldnum(xTable,emplId ));
}
//filtre yapacağımız formun datasourcesinin executeQuery metodu
public void executeQuery()
{
;
qbrownerId.value(queryvalue(smmutility::getCurrentContact()));
super();
}
Bu 3 metoda bu kısımları eklersek formu kullanan kullanıcıya göre filtre yapmış oluruz.
Bu yazımda ilk 3 filtreleme yönteminden bahsettim. Diğer makalemde Tarih filtresini açıklamaya çalışacağım.
Mustafa ÜN
İstanbul



Pingback: Formlarda Hızlı Filtreleme Yapma – 2 (Tarih filtresi) | Dynamics AX Geliştirme – Dynamics AX Development
Bu blogda yer alması gereken güzel bir yazı olmuş.
Teşekkürler.