VB.NET kullanarak Axapa Business Connector işlemleri

VB.NET kullanarak Axapa Business Connector işlemleri

Bir önceki makalemizde Axapta Business Connector arabirimini ve arabirimde bulunan fonksiyonları tanımıya çalışmıştık.

Şimdi VB.Net kullanarak Axapta"ya nasıl bağlanacağımızı (logon), bir Axapta Class"ını nasıl çağıracağımızı ve Axapta"dan bunu nasıl karşılayacağımıza bakalım.

İlk olarak açtığımız .net projemizde Axapta Business Connector "ü projemizin referanslarına eklememiz gerekmektedir.

Bu yapabilmek için projemizin "references" kısmına gelerek yeni bir referans ekleyiniz, COM sekmesinde "Axapta COM Connector 1.2 Type Library " i bulunuz ve OK tuşuna basınız. Bu işlem proje referanslarına Axapta Business Connector "ü ekleyecektir.

Projemizin referanslarına COM connector"ü eklediğimizi düşünelim. Dikkat edecek olursanız referanslara eklediğimiz  dll aslında Axapta Configuration Utility  kullanarak register (bilgi kütüğü) ettiğimiz "axcom.dll" lidir.

Projemizin Public Class"ında referans a eklediğimiz COM Connector"u tanımlamalıyız.

Private axapta As AxaptaCOMConnector.Axapta2

Şimdi Axapta"ya nasıl bağlanacağımız bakalım.

NOT : Örneklerini göreceğiniz foksiyonların hata ve sonlandırma kısımlarını ihtiyaca bağlı olarak değişeceğinden fazla detaylı yazmadım.  Genel .Net kurallarına göre yazabilirsiniz.

Private Function Logon2(ByVal defaultLogon As String, ByVal configuration As String, ByVal company As String, ByVal Password As String)    Const FUNCTION_NAME = "GetNotificationHeader"    Try        axapta = New AxaptaCOMConnector.Axapta2        axapta.Logon2(defaultLogon, Password, company, "", "", "", configuration, "false", "", "")    Catch ex As Exception        Dim strErrorMessage As String        strErrorMessage = " ERROR IN " & MODULE_NAME & "." & FUNCTION_NAME & _        " ERRSOURCE: " & Err.Source & _        " ERRCODE: " & Err.Number & _        " ERRDESC: " & Err.Description & _        " ERRLINE: " & Erl()        InformationManager.HandleError(MODULE_NAME, FUNCTION_NAME, strErrorMessage, InformationManager.LOG_TYPE_ERROR)        Err.Clear()    Finally    End TryEnd Function defaultLogon: Axapta"ya bağlanacak kullanıcı. configuration: Axapta"ya bağlantı kuracağımız konfigürasyon"un ismi. company: Axapta da şirket ismi.  Password: Axapta"ya bağlanacak kullanıcının parolası. Bu örnekte kullanıcımız Axapta"da tanımlı normal Axapta kullanıcısıdır. axapta = New AxaptaCOMConnector.Axapta2 Axapta değişkenimizi new"leyerek yeni bir nesne olarak tanımlıyoruz. axapta.Logon2(defaultLogon, Password, company, "", "", "", configuration, "false", "", "") Axapta2 arabirimini kullanarak  IAxapta2::Logon2 fonksiyonu ile Axapta"ya bağlanıyoruz. Diğer parametrelerini görmek için bir önceki makalemizi inceleyebilirsiniz. InformationManager.HandleError bir hata olması durumunda hatayı sistem event log "una kayıt atar.

Axapta"ya bağlandıktan sonra aynı Axapta nesnesini kullanarak Axapta içinde bulunan Global Class ına ait operatingSystem metod"unu çağırmaya çalışalım.

Private Function getOSName() As String    Dim result As Object    Try        result = axapta.CallStaticClassMethod("Global", "operatingSystem", Nothing, Nothing, Nothing, Nothing, Nothing, Nothing)        If (Not result Is Nothing) Then            Return result.ToString()        Else            Return Nothing        End If    Catch ex As Exception    Finally        If Not axapta Is Nothing Then            Try                axapta.Logoff()            Catch ex As Exception            End Try        End If    End TryEnd Function Bu fonsiyon bize kullandığımız operasyon sistemimizi döndürecektir. result = axapta.CallStaticClassMethod("Global", "operatingSystem", Nothing, Nothing, Nothing, Nothing, Nothing, Nothing) Axapta2 arabiriminin IAxapta::CallStaticClassMethod fonksiyonunu kullandık. Hatırlayacağınız gibi  CallStaticClassMethod fonksiyonunun ilk parametresi Class ismi ikinci parametresi ise Class"a ait metod du. result.ToString()  operatingSystem metodu tarafından dönen değer. axapta.Logoff() sistemle bağlantımızı keser.

Bir de bizim yazdığımız bir Axapta Class"ını nasıl çağıracağımıza bakalım. Yukarıda yazdığımız fonksiyonu da kullanalım. Yazacağımız örnekte bir recordSet"i göndermeye çalışacağız.

Private Function CallAxaptaClassMethod(ByVal axRecorset As ADODB.Recordset, ByVal strAxMethodName As String)    Const FUNCTION_NAME = "CallAxaptaClassMethod"    Dim osName As String    Dim returnd As Object    Dim ssss As String    Try        osName = getOSName()        If Not osName Is Nothing Then            axapta.TTSBegin()            returnd = axapta.CallStaticClassMethod("dataInAxapta", strAxMethodName, axRecorset, Nothing, Nothing, Nothing, Nothing, Nothing)            axapta.TTSCommit()        Else            Throw New Exception("Axapta Connection Not Setvvvv")        End If    Catch ex As Exception        Dim strErrorMessage As String        axapta.TTSAbort()        If Not axapta Is Nothing Then            axapta.Logoff()        End If        strErrorMessage = " ERROR IN " & MODULE_NAME & "." & FUNCTION_NAME & _        " ERRSOURCE: " & Err.Source & _        " ERRCODE: " & Err.Number & _        " ERRDESC: " & Err.Description & _        " ERRLINE: " & Erl()        InformationManager.HandleError(MODULE_NAME, FUNCTION_NAME, strErrorMessage, InformationManager.LOG_TYPE_ERROR)        Err.Clear()    Finally    End TryEnd Function Bu örnekte CallStaticClassMethod kullanarak bizim tanımladığımız dataInAxapta Class"ımızın strAxMethodName parametresi ile belirtiğimiz metod "u çağırıyoruz. Gördüğünüz gibi bir recordset"i de parametre olarak göndere biliriz.

Şimdi son olarak Axapta da bu işlemi nasıl karşılayacağımızı görelim.

Static boolean axaptaCOM(COM _recordSet){    CCADORecordSet CCADORecordSet;    ;    try    {        CCADORecordSet = new CCADORecordSet(_recordSet);        while (!CCADORecordSet.EOF())        {            Alan = CCADORecordSet.fields().itemName("Alanİsmi").value();            ...................             CCADORecordSet.moveNext();        }        return true;    }    catch(Exception::Error)    {        .................    return False;    }        ....................    }} Dikkate ederseniz VB.Net ile gönderdiğimiz recordset "i bir COM nesnesi olarak içeri alıyoruz. Bunu bir recordset"e dönüştürmemiz için Axaptada tanımlanmış  CCADORecordSet Class"ını kullanabiliriz. Axapta isimlendirmesi biraz garip olduğu için aramalarda bulamaya bilirsiniz ama CC ile başlayan Class"ların çoğu bu tür işlemler için hazırlanmış Class"lardır. İncelemenizde fayda olduğunu düşünüyorum.

Daya çok bilgi için http://msdn2.microsoft.com/en-us/library/default.aspx sayfasını ziyaret edebilirsiniz.

Döküman Arama

Başlık :

Kapat