1. * 5651 Sayılı Kanun'a göre TÜM ÜYELERİMİZ yaptıkları paylaşımlardan sorumludur.
    * Telif hakkına konu olan eserlerin yasal olmayan şekilde paylaşıldığını ve yasal haklarının çiğnendiğini düşünen hak sahiplerinin İLETİŞİM bölümünden bize ulaşmaları durumunda ilgili şikayet incelenip gereği 1 (bir) hafta içinde gereği yapılacaktır.
    E-posta adresimiz

Dynamics AX ile Excel Raporları Hazırlamak

Konusu 'Excel Çalışmaları' forumundadır ve Hazangülü tarafından 10 Ağustos 2009 başlatılmıştır.

  1. Hazangülü

    Hazangülü Forum Onuru

    Katılım:
    7 Haziran 2006
    Mesajlar:
    9.885
    Beğenileri:
    117
    Ödül Puanları:
    4.480
    Banka:
    976 ÇTL
    [Linkleri görebilmek için ÜYE olmalısınız!..]
    Bu makalemizde Dynamics AX üzerinden, hazır bir Excel şablonunu açıp ya da yeni bir Excel dosyayı yaratıp ilgili dosyaya nasıl veri gönderebildiğimizi inceleyeceğiz. Ayrıca bu iş için her zaman kullanabileceğimiz bir sınıf yaratacağız.
    Dynamics AX paketi de, diğer Microsoft ürünleri gibi güçlü entegrasyon yeteneklerine sahiptir ve Windows"un COM nesnelerine erişebilir. Excel uygulamasına erişmek için üç seçeneğimiz bulunmaktadır :

    1. Formumuza ActiveX nesnesi eklemek
    2. COM nesneleri aracılığıyla erişmek
    3. Dynmaics AX"in hazır sınıflarını kullanmak

    Biz örneğimizde 3. yöntemi uygulayacağız. Çünkü AX sınıflarını kullanmak daha anlaşılır kod yazmamızı ve servis paketi güncellemeleri ile gelecekteki Office versiyonlarını desteklememizi sağlar.
    Oluşturacağımız sınıfta 3 adet metod olacak :

    void ExcelDosyasiYarat(FileName _dosyaAdi= "") : Sınıfımızdan yeni bir nesne yarattıktan sonra kullanacağımız metoddur. Eğer "_dosyaAdi" parametresini gönderirsek ilgili excel dosyasından yeni bir kopya açar. Parametre göndermezsek yeni bir Excel dosyası yaratır.
    void VeriGonder(int satirNo, int sutunNo, AnyType deger) : Oluşturduğumuz Excel dosyasının ilgili satır ve sutununa gönderdiğimiz veriyi yazar.
    void Goster(boolean _goster = NoYes::Yes) : Bilgilerini doldurduğumuz Excel dosyasını kullanıcıya göstermeye yarar.

    Uygulamamızı yazmaya başlamak için Ctrl+D tuşlarına basarak Uygulama Nesne Ağacı"nı (AOT) açalım. Classes sekmesine gelelim ve sağ tuşa basarak "Yeni Class" seçeneğini işaretleyelim.
    [​IMG]
    Oluşturduğumuz yeni sınıfın ismini "ExcelRaporYaratici" olarak değiştirelim. Sınıf içerisindeki global değişkenlerimizi ilgili sınıfın "classDeclaration" adı verilen tanımlama metodunun içerisine yazıyoruz. Biz sınıfımızda

    SysExcelApplication
    SysExcelWorksheets
    SysExcelWorksheet
    SysExcelworkbooks
    Filename

    değişkenlerini kullanacağız. "SysExcel" ile başlayan değişkenler Dynamics AX"den Excel"e erişirken kullanacağımız sınıflarıdır. classDeclaration"ın son durumu aşağıdaki gibi olacaktır :
    [​IMG]
    Bir sonraki adımda gönderdiğimiz _dosyaAdi değişkenine göre varolan bir dosyadan yeni bir kopya yaratan, ya da parametre göndermezsek yeni bir Excel dosyası yaratan metodu yazacağız. Bunun için classDecleration üzerindeyken Ctrl+N komutunu kullanarak yeni bir metod yaratalım ve kodumuzu yazalım :

    [​IMG]
    stemcinin bilgisayarında Excel uygulaması olmamasına ya da herhangi bir olasılığına karşılık kodumuzu try-catch blokları arasına yazdık. SysExcelApplication::construct(); metodu ile Dynamics Ax, sisteminizde kurulu olan Excel uygulamasına ulaşır ve yeni bir Excel COM nesnesi yaratır. Eğer _dosyaAdi parametresini gönderdiysek sysExcelApplication.workbooks().add(...) metodu ile Excel uygulaması ilgili dosyayı açar, yoksa yeni dosya yaratır. SysExcelWorksheet nesnesi ile ilgili dosyanın 1. sayfasına erişeceğiz.

    Excel uygulamasına erişip, ilgili sayfasına ulaştığımıza göre artık dosyanın ilgili satır ve sütununa istediğimiz veriyi yazabiliriz. Bunun için "VeriGonder" metodumuzu yazıyoruz :

    [​IMG]
    Bu metod sayesinde parametre olarak gönderdiğimiz satır ve sütunu gösteren excel hücresine (cell) gidiyor ve verimizi yazıyoruz. Her tür veriyi yazabilmek için deger parametresinin tipini "AnyType" olarak gönderdik.

    Excel dosyamızı yarattık ve verileri doldurduk. Artık dosyamızı kullanıcıya gösterebiliriz. Bu işlem için de "Goster" metodumuzu yazıyor ve sınıfımızı tamamlıyoruz.
    [​IMG]
    azmış olduğumuz sınıfı herhangi bir uygulamamızdan rahatlıkla çağırabilir ve excel raporu yaratabiliriz. Yazmış olduğumuz sınıfı test etmek için yeni bir "job" yaratalım ve test edelim. Uygulama Nesne Ağacı"nda Jobs sekmesine gelin ve sağ tıklayın ve "Yeni Job" seçeneğini seçin.
    [​IMG]
    rneğimizde Maddeler tablosunu (Dynamics AX"de InventTable ismindeki tablo) dolaşıp madde numaralarını ve isimlerini Excel"e aktaracağız. Kodumuz resimdeki gibi olacaktır :

    [​IMG]
    Bu kodu çalıştırdığımızda aşağıdaki resimdeki Excel doyası ile karşılaşacağız.
    [​IMG]
    Projeyi ek dosyalar bölümünde bulabilir ve kendi uygulamalarınızda kullanabilirsiniz.
     

Sayfayı Paylaş