Makale Özeti

Com connector nesnesi ile Ax veri iletişimi

Makale

Dynamics Ax dış dünya ile erişim noktalarından biri olan com connector nesnesi gerçekten hayati öneme sahiptir ,özellikle Ms

    Dynamics Ax dış dünya ile erişim noktalarından biri olan com connector nesnesi gerçekten hayati öneme sahiptir ,özellikle Ms .net platformu ile uğraşanlar com+ ile bağlantı / veri erişimi-sağlama konusunu hatırlayacaklardır , biz öncelikle Ax boyutunu ele alacağız.

 

    Ax AOS (Application Object Server) sunucusu tüm Ax kullanıcılarına (Standart client , web client , com+ client ) aktif olarak erişim/yönlendirme hizmeti sunar , bu sayede com connector nesneside aktiftir ve biz istediğimiz her an Ax ile Veri Alış/verişini sağlayabiliyoruz, şimdi birlikte com connectorün kurulumunu yapalım;

 

    Öncelikle Ax configuration utility ekranını açıp Business connector sekmesine tıklayalım ,

 

 

      Settings grupta bulunan “Allow debugging of X++ code ..” seçeneği eğer com+ kullanıcısını local/Domain etki alanı kullanıcıları ile aktive edeceksek tıklı olmalıdır, Os component servislerini çalıştıracak kullanıcı default aktif pc kullanıcısıdır.

      Logon kısmında component için password atayabiliriz,

 

      Administrative tools kısmında da kayıt etmek ve kaldırmak için iki butonumuz var , com+ ekleyeceğimiz için register butonuna klikliyorum,

 

 

 

        Com+ object dışındaki nesne kullanımlarınıda ileride inceleyeceğiz , Com+ register için “Register Com+ (component services) “ radio buttonu klikliyorum , burada dikkat edilecek nokta axaptanın Com (component services) için kullanacağı library dll uzantılı dosyasını bazen oto getiremiyor olması nedeniyle yukarıdaki referansı bizim verebilmemiz gerekebiliyor, ok butonu ile componentimin kurulumunu tamamlıyorum.

 

         Evet MST-Component servisinde (start-settings-control panel-administrative tools-component services) nesneyi aşağıdaki gibi oluşturduk ,

 

         Birkaç opsiyondan bahsetmek istiyorum kısaca, componentin properties kısmında ne kadar süre boşta kalacağı (işlem yapılmaz ise kapanma süresi ), com + nesnemiz ile AOS uygulamamız farklı pclerde olacabilir ,bu nedenle Firewall ve diğer filtreleme yazılımlarına takılabileceğinide unutmamalıyız ,etki alanı içinde ise de default  local/domain user atamamız yerinde olacaktır.

 

Evet şimdi Vb Script ile axaptaya erişimimizi test edelim,

 

Bunun için Visual basic üzerinde bir proje oluşturalım ve sırasıyla form , List view,text box ve commandbutton kontrol ekleyelim ,

 

Project- reference menüsünden Connector Type Library set ediyoruz

 

Formumuzun general section kısmına ;

Dim Axapta As AxaptaCOMConnector.Axapta

  'declare ediyoruz

Private Sub Form_Load()

  ‘ Tüm işlemlerimiz için öncelikle kullanıcının Axaptaya login olması gerekiyor

  Set Axapta = New AxaptaCOMConnector.Axapta

  Axapta.Logon "Kullanıcı_adı", "Şifre", "", ""

End Sub

Command butona ise ;

Private Sub Lookup_Click()

  Dim Item As ListItem

  Dim AxaptaQuery As AxaptaCOMConnector.IAxaptaObject

  Dim AxaptaDataSource As AxaptaCOMConnector.IAxaptaObject

  Dim AxaptaRange As AxaptaCOMConnector.IAxaptaObject

  Dim CustTableBuffer As AxaptaCOMConnector.IaxaptaRecord

  'Ax connector için yapacağımız query,datasource ve range işlemleri için , nesnelerini declare ediyoruz

  CustTable = 77                         'Tabloya ait id

  CustTable_Name = 2                'Fielda ait id

  Set AxaptaQuery = Axapta.CreateObject("Query")     ' Ax query için tanımladığımız  “query” set ediliyor

  Set AxaptaDataSource = AxaptaQuery.Call("AddDataSource", CustTable)    'işlem yapılacak data source (tablo) set ediliyor

  Set AxaptaRange = AxaptaDataSource.Call("AddRange", CustTable_Name)   'ds range set ediliyor

  ' Range kontrolden range dolduruyoruz

  AxaptaRange.Call "Value", Range.Text

  Set AxaptaQueryRun = Axapta.CreateObject("QueryRun", AxaptaQuery)

  '  List kontrolde seçili olan içerik siliniyor

  ListView.ListItems.Clear

   i = 1

  While (AxaptaQueryRun.Call("Next"))

  Set CustTableBuffer = AxaptaQueryRun.Call("GetNo", 1)

   Set Item = ListView.ListItems.Add(i, "Key" + Str(i),       CustTableBuffer.field("AccountNum"))

  ' Verileri belirlediğimiz kutucuklara atıyoruz.

  Item.SubItems(1) = CustTableBuffer.field("Name")

  Item.SubItems(2) = CustTableBuffer.field("Address")

  Item.SubItems(3) = CustTableBuffer.field("Phone")

  Item.SubItems(4) = CustTableBuffer.field("Telefax")

   i = i + 1

  Wend 

  'Döngü ve işlemler tamamlanıyor

  End Sub

      Formumuzu kapatırken (form closed method) açık olan connectoru kapatıyoruz ki bir sonraki girişimizde tekrar hatasız açabilelim,

 

Private Sub Form_Unload(Cancel As Integer)

  ‘  Log off

  Axapta.Logoff

  Set Axapta = Nothing

End Sub

 

         Projemizi çalıştırıyoruz ,görüntüde Name alanına “office*” girerek lookup butonuna tıklıyoruz

 

 

 

 

Hoşçakalın,