Formlarda Hızlı Filtreleme Yapma – 1


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

2 comments on “Formlarda Hızlı Filtreleme Yapma – 1

  1. Pingback: Formlarda Hızlı Filtreleme Yapma – 2 (Tarih filtresi) | Dynamics AX Geliştirme – Dynamics AX Development

Yorum yapın

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Değiştir )

Twitter picture

You are commenting using your Twitter account. Log Out / Değiştir )

Facebook photo

You are commenting using your Facebook account. Log Out / Değiştir )

Connecting to %s