Archive for Eylül, 2010

Macros in axapta

In Axapta’s predecessor, macros were widely used. The predecessor did not support
classes, so macros were used instead. This might be the reason that macros are a part of
MorphX today. In MorphX macros are not commonly used. A few places make use of
macros such as keeping track of the list of fields stored when using dialogs. It is
recommended only to use macros to define constants. Macros are not supposed to be
used for code, as reusing code from macros is not flexible as using methods.
Macros can be created under the Macro node in the AOT, as a local macro in a method
or a single line defining a constant. The main difference between a macro and a method
is that a macro has no variable declaration part, and the code in a macro is not validated
for errors before executed from a method. This is one of the main reasons not to put
code in macros, as it makes the code more difficult to read.

Read more

İletişim Araçları

Merhaba

Mehmet Aktürk arkadaşımın hazırlamış olduğu eğitim dokumanından yaralanarak bu yazıları hazırladım. Kendisine yardımlarından dolayı teşşekkür ederim.

Son kullanıcı ile iletişime geçmek her yazılımın önemli bir parçasıdır ve sürecin doğru işlemesi için kritiktir. İletişimin ana tipleri aşağıdaki gibidir:

  • Büyük miktarda verinin girildiği ya da alındığı formlar ve raporlar.
  • Belirli özel veri girişleri ve çıktıları için yazdırma komutları, bilgilendirme günlükleri ve dialog kutuları

Bu bölümde yazdırma komutlarını, bilgilendirme günlükleri ve dialog kutularını nasıl kullanacağımızı görücez. Formlar ve raporlar daha ileri seviye konularda ele alınacaktır.

Print komutu

Print komutu istediğimiz değeri ekranda yazdırmamızı sağlar fakat bu ekran öyle hızlı işletilir ki bunu göremeyiz. Bu yüzden pause komutunuda kullanmalıyız. Bu komut print komutu işletildikten sonra akışı durdurur ve açılan print penceresini dondurur. Print komutu normal programlama süreçlerinde kullanışlı değildir ve kullanımı bir anlam ifade etmez. Bu komut programcılar tarafında özel durumlarda bazı değerleri görebilmek için kullanılır.

print “This is a test message.”;

pause;

Read more

Dahili(Built-in) Fonksiyonlar

Microsoft Dynamics AX X++ ta geliştirme yapılmasına yardımcı olan bir çok dahili fonksiyon içerir. Bunlar matemetiksel işlemler yapar, data tiplerini çevirir, sistem değerleri döndürür vb.

Dahili Fonksiyonları Kullanmak

Dahili fonksiyonları X++ kodunun herhangi bir yerinde kullanabilirsiniz. Bu fonksiyonaları elle yazabilir, kod editörde sağ tuş yapılarak açılan bağlam menüde Yerleşik İşlevleri Listele seçeneği ile ya da Shift+F4’e basarak bu fonksiyonların listesini görüntüleyebilirsiniz.

Dahili Fonksiyon Örnekleri:

Bu örnekte position dan başlayarak number kadar olan string alınır.

str subStr(str text, int position, int number);

Read more

Döngüler

Yinelenen ifadeler yazılımda döngüler olarak bilinirler. Döngülerde söylenmesi gereken en önemli şey döngünün devamını sağlayan şartın aynı zamanda muhakkak döngüyü sonlandırmasıda gerekmektedir. Bu dikkate alınmaz ise program akışı sonsuz döngüye girer ve hata alınır. X++ ta üç ana döngü vardır:

  • while loop
  • do while loop
  • for statement
While Döngü İfadesi

While ifadesi yanında parantez içinde belirtilen koşul sağlandıkça kuşak imleçleri arasındaki kod tekrarlanarak işletilir. Burda dikkat edilmesi gereken önce şartın kontrol edilmesi ve sonra gerekirse kod işletilir.

Read more

Switch İfadesi

Switch ifadesi birden fazla koşul olduğunda kullanılan bir yapıdır. Aşağıdaki örnek üzerinden hareket eder isek switch yanındaki ifade case lerde belirtilen durumların esas aldığı ifadedir. Caselerde olabilecek durumlar ifade edilir. Break ise işgili koşul sağlanıp kod işletildikten sonra switch bloğundan çıkılmasını ve bir sonraki kodun işletilmesini sağlar. Bunun yapılma sebebi ise ikinci bir durum  koşulu sağlayabilir ve gereksiz kod  işletilir. Default ise tüm durumlar dışında kalan koşul için yazılır.

switch (expression)

{

    case ‘Choice1′: Statement1;

                    Statement2;

                    break;

Read more

Koşullu İfadeler

Koşullu ifadeler program içinde koşulun sağlanması ile hangi fonksiyonel ifadenin çalışacağını belirlemek için kullanılır ve böylece program akışını yönetir.Koşullu ifadeler durumu değerlendiren ve true – false döndüren mantıksal ifadeler kullanılır. Üç birincil koşullu ifade vardır:

  • If Statement
  • Switch Statement
  • Ternary Operators


If statement

İf ifadesi hemen yanındaki parantezler içinde verilen ifadenin true olması şartıyla altındaki kuşak imleçleri arasındaki kodu işletir.

Read more

Operatörler

Operatorler değişkenleri ve alan değerlerini istenilen şekilde işleyebilmek için kullanılırlar ve mantıksal program akışını bu değerleri esas alarak kontrol ederler.

  • Atama operatörleri değişkenin ya da alanın içeriğini değiştirir.
  • Aritmetik operatörler değikenler ve alanlar üzerinde matemetiksel işlemleri gerçekleştirirler.
  • İlişkisel operatörler değerler arasında ilişki kurar ve sonuca göre true ya da false döndürür.
Atama Operatörleri

Read more

Diziler(Arrays) && Containers

Array tanımlanırken isiminin sonuna köşeli parantez koyulur ( [ ] ).

Eleman sayısını bu köşeli parantez içinde belirtebilirsiniz

Değer atamak istediğinizde hangi array elemanına değer atanacağını belirtebilirsiniz.

real     realUnlimtedArray[];        // Unlimited index values

Read more

Axapta’da değişkenler

Değişkenler kod bloğu işletilene kadar veryi tutarlar:

  • Tüm değişkenler bir kapsama sahiptirler. Bu değişkenin erişilebildiği alanı ifade eder.
  • Değişkenler genel bir erişim sahasına sahip olabilirler. Bunun için değişkenin classDeclerationda tanımlanması gerekir. Yada yerel bir erişim sahasına sahip olabilirler buda değişkenin method içinde tanımlanması anlamına gelir.

Değişken tanımlarken tipinin tutmak istedeğiniz veri tipiyle uyumlu olmasına dikkat etmeliyiz. Yine değişkenlere sistemde daha önce kullanılmış komut ve anahtar kelimeler dışında isimler verilebilir. Bu reserve edilen kelimelerin listesini Geliştirmeci Yardımının altında Anahtar Kelimeler başlığı altında bulabilirsiniz.

Önerilen Uygulama: Değişkenlere isim verilirken okuduğunuzda size bir anlam ifade edicek şekilde olmasına dikkat edin!

Değişken Tanımlamak

Bütün değişkenler kullanılmadan önce tanımlanmalıdır. Bir değişken tanımlandığında belleğin bir kısmı reserve edilir. Basit bir değişken ya da nesne değişkeni tanımlası söz dizimi aynıdır.

Read more

Query ile yapamadığınız bir join’i nasıl yapabilirsiniz?

Merhaba

BankAccountTable’ı lookup da açtırmak istiyoruz. Kriterlerimiz şöyle.

Lookupta  BankAccountTable.AssignedBankTransType alanı boş olanlar ve BankTransType.BankTransType   <>  BankAccountTable.AssignedBankTransType

İlişkisiyle  BankTransType’ın BankTransType.ExchangeNoteDocType’ı Çek ve senetten farklı olan kayıtlar isteniyor.

Query’de   bu join’in nasıl yapılacağını bulamadım.  Bu sebepten  temp tablo kullanmaya  karar verdim.  while select kullanarak temptabloyu doldurup.

Sonra lookup için query’ı yazdım.

Axaptada joinlerle ilgili bir makaleyi ilerki zamanlarda yayınlayacağım.

Örenk metod şöyledir.

 

static client void lookupPortfolioPromissory(FormStringControl _ctrl, CurrencyCode _filterStr)
{
    SysTableLookup                sysTableLookup = SysTableLookup::newParameters(tablenum(tmpBankAccountTable),_ctrl);
    Query                                     query = new Query();

Read more

Page 1 of 212