Posts Tagged ‘ x++

İstisnalar (Exceptions)

İstisna programın normal akışı kesildiğinde ortaya çıkan durumdur.  İstisna örnekleri:

  • Yazdırma sırasında printerin güç düğmesinin açık olmaması
  • Olmayan bir dosyaya erişmek
  • Olmayan bir kaydı güncellemek

Bu istisnalar meydana geldiğinde program bunları yönetmek için harekete geçmelidir. Örneğin, eğer kullanıcı olmayan bir dosyayı ele almayı istemiş ise sistem bu istisnayı yakalamalı ve yeni bir dosya oluşturmalı gibi.

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

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

Axapta’dan direk SQL Insert, Update ve Delete işlemleri

Global  değişkenler

class ETGHRMKariyerSync

{

    CCADOConnection         ADOConnection;

    CCADOConnection         Connection;

 

}

 

UPDATE

public static server void HRMEducationTypeUpdate(HRMEducationType _HRMEducationType )

{

    Statement   statement;

    str         SQLCommand;

    ;

  Read more

Axapta’da arama metodu örneği

Merhaba

8 arama sahası ve 5 farklı tablo içeren bir arama formu istendiğinde nasıl bir metod yazabileceğinizin bir örneğini paylaşıyorum.

Hangi sahanın dolu olacağı belli olmayan ve kombinasyonun çok fazla olduğu bu durumda öncelikle en çok kriter girilebilecek

olan ana tabloyu alıp döngü içinde diğerlerinin varlığı kontrol etmek mantıklı.

Kriterlere uyan bir kayıt olursa bunun bir container a dolduruyoruz.

public Container simpleSearch(  BorAXEmplId  _boraxEmplId

                                ,EMplId _emplId

                                ,HRMIdentificationNumber _number

                                ,EmplName _name

                                ,HrmLastName _lastName

                                ,Birthdate _birthDate

                                ,NameTwenty _birthPlace

                                ,Email _email)

{

Read more

Axapta string kontrol

Merhaba

Axaptada string kontrollerine yerleşik işlevlerden ve global klasından ulaşılabilir.

Bunlara ek olarak internette mevcut olan string klası bize “startsWith”, “endsWith”, “contains”, “split”, “replace”, “replaceAll” vs.  gibi metodlar sunmaktadır.

String klasını buradan  indirebilirsiniz. 

Standart axapta fonksiyonlarından bir kaç örnek vermek gerekirse:

static void stringKontrol(Args _args)
{
;
   

info(strfmt(“%1″,strlen(“asd”)); // stringin uzunluğunu verir.

info(strfmt(“%1″,strfind(“asdfghjklş”,”sdf”,0,strlen(“sdf”)))); // aranan stringin başlangıç noktasını verir

 info(strdel(“asdfghjklş”,2,3)); // 2 konumundan başlayarak 3 karakter siler.
}

Buna benzer birçok  axapta fonksiyonu mevcuttur.

Selamlar.

Lookup’ta join ile query yazmak

Merhaba

Axapta  formlarında bir alanın lookup metodunu ezmek zorunda kalabilirsiniz.

Örneğimizde bir lookup metedu var.  join ile query yazılıp kriter veriliyor.
static client void lookupPortfolioPromissory(FormStringControl _ctrl, CurrencyCode _filterStr)// para birimine göre farklı gelsin
{
    SysTableLookup          sysTableLookup = SysTableLookup::newParameters(tablenum(BankAccountTable),_ctrl);
    Query                   query = new Query();
    QueryBuildDataSource    queryBuildDataSource = query.addDataSource(tablenum(BankAccountTable)); // birinci tablomuz
    QueryBuildDataSource    qdbs;
    ;

Read more

Query & Dialog Örnekleri 6

Merhaba

static void Query6(Args _args)
{
    CustTable   cust;
    CustTrans   custTrans;

    Query                   q = new Query();
    QueryRun                qr;
    QueryBuildDataSource    qbdsCustTable;
    QueryBuildDataSource    qdbsCustTrans;
    QueryBuildRange         qbrCurrency;
    QueryBuildRange         qbrRiskAmount;
    CurrencyCode            currency;
    Amount                  riskAmount;

    dialog                  d = new Dialog(“Müşteriler”);
    dialogField             dfCurrency;
    dialogField             dfRiskAmount;

    ;
    //Dialog
    dfCurrency = d.addField(typeId(CurrencyCode));
    dfRiskAmount = d.addField(typeId(Amount), “Max risk tutarı :”);

    if(d.run())
    {
        //getFromDialog
        currency    = dfCurrency.value();
        riskAmount  = dfRiskAmount.value();

Read more

Page 2 of 812345...Last »