Makale Özeti

Axapta üzerinde işlem yapmak istediğinizde bunu mümkün olduğunca Axapta üzerinde yapmanızı tavsiye ederim. Kendine özel bir veritabanı yapısı olduğu için, sql server üzerinden yapılan müdahelelerde problem çıkma olasılığı yüksektir. Ancak çıkış noktası bulunamayan durumlarda veya sorgularda daha fazla performans sağlamak için, sql server üzerinde çalışabilecek sorguları Axapta üzerinden koşturabilirsiniz. Özellikle Axapta içerisindeki yazılabilen sql ifadelerinin daha yetersiz olması yüzünden yapılabilecek bir çözüm olarak kullanılabilir.

Makale

Axapta üzerinde işlem yapmak istediğinizde bunu mümkün olduğunca Axapta üzerinde yapmanızı tavsiye ederim. Kendine özel bir veritabanı yapısı olduğu için, sql server üzerinden yapılan müdahelelerde problem çıkma olasılığı yüksektir. Ancak çıkış noktası bulunamayan durumlarda veya sorgularda daha fazla performans sağlamak için, sql server üzerinde çalışabilecek sorguları Axapta üzerinden koşturabilirsiniz. Özellikle Axapta içerisindeki yazılabilen sql ifadelerinin daha yetersiz olması yüzünden yapılabilecek bir çözüm olarak kullanılabilir.

Sql server üzerinde çalışacak sorguyu çalıştırabilmek için öncellikle bir bağlantı nesnesi, sorgu çalıştırma nesnesi ve sonuçları tutacak bir nesne yaratmamız gerekir.

Basit bir örnek yapalım ve nesneleri onun üzerinden tanıyalım. Örneğimiz müşteriler tablosundan (CustTable) şirket koduna göre bir select işlemi yapsın ve display metot aracılığı ile geriye müşteri kodu sahasını (AccountNum) göndersin.

display real MusteriKoduGonder()

{

    AccountNum        _MusteriNo;

    Str                    sSql;

    DataAreaId         _SirketKodu;

    Connection         Con = new Connection();

    Statement                   stmt = Con.createStatement();

    ResultSet          result;

    ;

    _SirketKodu = "010";

    sSql     = " SELECT * ";

    sSql   += " FROM CUSTTABLE ";

    sSql   += " WHERE CUSTTABLE.DATAAREAID = '" + _SirketKodu + "' ";

   

    result  = stmt.executeQuery(sSql);

    while (result.next()){

        _MusteriNo = result.getString(1);

    }

    stmt.close();

    result.close();

    return _MusteriNo;

}

String tipindeki sSql değişkeni aracılığı ile sql sorgumuzu string birleştirme yöntemi ile oluşturuyoruz.

Con ismini verdiğimiz Connection tipindeki değişkeni New Connection() deyimi ile bağlantı nesnesini yaratıyoruz. Sorgu sonucu gelen kayıtları ResultSet tipinde tanımladığımız ve sorgu sonucunu tutacak olan result değişkenine atıyoruz. Bu atama işleminide Con ismini verdiğimiz Connection nesnesinin createStatement metodunu kullanarak Statement’a atıyoruz. Elimizde olan resultSet ile döngü içerisinde istediğimiz sahanın indeks numarasını vererek ilgili değişkene atıyoruz. Örneğimizde almak istediğimiz saha string tipinde olduğu için result nesnesinin, getString özelliğini kullandık. Eğer almak istediğimiz saha başka tipde olsaydı onun ilgili özelliğini çağıracaktık.

Bu yöntem ile Axapta içinde tanımlı olmayan başka veritabanlarındaki başka tablolara da erişim sağlayabiliriz.

Bu yöntem ile çektiğimiz veriler üzerinde Axapta’nın sorgu kolaylıklarından yararlanamıyoruz. Örneğin fetch, execute section gibi işlemleri gerçekleştiremiyoruz.

Bu yöntemde, eğer bir yazım hatası oluşursa (yazdığımız sql ifadesinde) kod yazım esnasında bunu göremiyoruz. Bu hatayı ancak çalışma esnasında görebiliyoruz. Ayrıca çalışma esnasında bununla ilgili verdiği hatalarda çok açıklayıcı olamıyor.

Yeliz Korkmaz, MVP

yelizkorkmaz@tnn.net