Author Archive

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

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