Archive for the ‘ x++ ’ Category

Ax’ta formun verikaynağındaki kayıtları kodla seçmek

Merhaba

Örneğin muşteriler formunda CTRL veya Shift tuşlarıyla birden çok kayıt seçebilirsiniz. Bazı durumlarda belli kritere uyan kayıtları seçili hale getirmek isteyebilirsiniz. Mesala para birimi dolardan farklı olan müşterileri seçip onların Id lerini görelim. CustTable formuna bir buton ekleyip click(); metoduna şu kodu yazalim.


void clicked()
{
    CustTable   custTableMark;
    CustTable   buffer;
    ;
    while select custTableMark
        where custTableMark.Currency != "USD" // herhangi bir kriter verebilirsiniz
    {
    // datasource taki kayıtları işaretliyoruz
    // CTRL veya Shift ile seçmişiz gibi davranır
        custTable_ds.markRecord(custTableMark,1); // 0 ve 1  işaretlemeyi belirler
    }

// DataSource'ta seçtiğimiz kayıtları dolanmak için bu kodu kullanabiliriz.
    for (buffer = custTable_ds.getFirst(true) ? custTable_ds.getFirst(true) : custTable_ds.cursor();
                  buffer;
                  buffer = custTable_ds.getnext())
    {
        info(buffer.AccountNum);
    }
}

Selamlar.

Axapta editöründeki Script menusune ekleme yapmak

Merhaba

Axapta editorunda sağ script menusu mevcut bazı uygulamalar mevcut. Sizde bu menuye kendi scriptlerinizi ekleyebilirsiniz.
Öreneğin benim geliştirmelerde kullandığım standart bir yorum satırı var. Şu şekilde ;

// <ETG – etg_fd > GN :002   T : 28.05.2011  A : Stok kartı düzeltmeleri

// <ETG – etg_fd > GN :002

Tanımı şöyle ;

// <ETG – /*Revizyon yapan*/> GN: /*Geliştirme no*/   T: /* Tarihi buraya yazıyoruz*/ A: /* açıklama*/
// Kodu Buraya Yazalım
// <ETG – /*Revizyon yapan*/> GN:

Bu kodu Script menusune eklemek için EditorScript klasına şu metodu eklemeliyiz.

Read more

Benzersiz kayıt anahtarını yeniden adlandırma.(renamePrimaryKey)

Merhaba,

Axaptada örneğin CustTable formunda sağ tıklayıp kayıt bilgileri derseniz aşağıdaki ekran açılır.

Yeniden adlandır butonu ile müşteri kodunu değiştirebilirsiniz. Ax bütün ilişkili tablolarda müşteri kodunu değiştirir. Bu işlem PrimaryKey olan diğer alanlar içinde gecerlidir. Farklı formlarda bu fonksiyonu kullanabilirsiniz. Ancak bu işlem tek bir kayıt için çalışır. Öreneğin siz bütün müşterilerin başında “M-” olsun istiyorsunuz bunu kodla yapmanız gerekir.

Örnek bir job yazalım:

Read more

Form üzerinde ItemId çoğaltmak

Merhaba

InventTable (Madde kartları) formuda bir stok kodunu çoğaltmak isterseniz bir kaç tabloda kayıt oluşturmanız gerekir. Forda bu işlemler için metodlar mevcut. Bizde formda Create() metodunu kullanarak madde kodu hariç bütün alanları aynı olan bir kayıt oluşturuyoruz. Madde kodunu kullanıcının girmesini bekliyoruz kaydettiğinde Madde kodu hariç bire bir aynı kayıtları elde ediyoruz.

Bunun için inventTable a bir buton ekleyelim ve Clicked() metodundan şu metodu çağıralım.

Burada copyTableFields metodumu kullandım. Şu yazımda bu metottan bahsetmiştim.

 void ItemCopy()
{
    InventTable inventTableCopy;
    InventTableModule InventTableModulePurch ,InventTableModuleInvent, InventTableModuleSales;   
    ;   
Read more

Global bir findRecId() metodunu nasıl yazabiliriz

Merhaba

Ax ile yazılım yaparken bir çok kez RecId ye göre sorgulama yapmak zorunda kalmışsınızdır. Genelde Tablolarda findRecId() metodu bulunmaz. Ya direk select cümleciği yazarsınız veya tabloya  findRecId() metodu eklersiniz. Bu daha  iyi bir çözüm olur tabiki. Ancak global  klasına findRecId() metodu eklmek ve heryerden kullanmak daha pratik bir çözüm olabilir. Nasıl yazabileceğimize bakalım.

Herhangi bir tabloyu parametre olarak alabileceği için common kullanıyoruz.

static common findRecId(common _table,
                        RecId   _recId,
                        Boolean _forUpdate = false)
{
Read more

Herhangi bir tablo satırını bire bir çoğaltmak

Merhaba

Örneğin bir SalesTable kaydınız var. Bu kaydın bütün alanlarını başka bir satıra kopyalamak istiyorsunuz. Standartta olan data() metodunu kullanabilirsiniz. Örnek verecek olursak.

static void RecorKopyala(Args _args)
{
    SalesTable salesTable;
    SalesTable salesTableCopy;
    ;
    salesTable = SalesTable::find(“s00001″);
      salesTableCopy.data(salesTable);
    salesTableCopy.SalesId = “s0002″;
    salesTableCopy.insert();
    // salesTable ve salesTableCopy aynı bilgileri içerirler SalesId hariç
}
Read more

Axaptada txt dosya okuyup SalesLine’ a kayıt atmak

Merhaba

Daha  önce txt formatında bir dosyayı okumakla ilgili bir makale yazmıştım. Buradan okuyabilirsiniz.

Aynı örneği biraz geliştirdim. Öncelikle dosyayı diyalogtan alıyoruz ve tab ile ayrılmış halini pars edip container a atıyoruz. Daha sonra burdaki satırlardan SalesLine oluşturuyoruz.

Örnek text dosyamız böyle olsun boşluklar tab. Editorden dolayı burada net anlaşılamıyor. 

NameAlias  Name                         Vergi  Adet   Fiyat

40306445    DAVIDOFF GOLD      0     2.00     14.00
40318523     KENT WHITE              0    1.00       7.00
40329055    CAMEL KISA BOX     8    7.00      18.00

Örenğimiz şöye :
void TxtTransfer()
{
    FileName            fileName  ;
    container           c;
    FileIOPermission    permission;
    TextBuffer          textBuffer;
    str                 readText;
    str                 readLine , strlineamount;
    int                 etgline  ;
    int                 i = 0;
    Dialog              dialog = new Dialog(“Dosya seçiniz.”);
    DialogField         dfFileName;
    SalesLine           txtSalesLine;
    InventTable         inventTable;
    InventItemSalesSetup InventItemSalesSetup;
    InventDim           txtinventDim;

    Amount              lAmount,KDV;
    ;
    #File

    dfFileName = dialog.addField(typeId(FileNameOpen));
    dialog.filenameLookupFilter(["All files", #AllFiles]);

Read more

String bir değişkeni raporda barkod olarak göstermek

Merhaba,

Bu çalışmada CustAccount alanını raporda barkod olarak nasıl gösterebileceğimizi öğreneceğiz.

Öncelikle verikaynağında (DataSource) CustTable Olan bir rapor hazırlayalım. Tasarım kısmında CustTableBody olsun ve CustAccoun ‘u sürükleyip bırakalım. Bu rapor şu anda CustAccount ‘ ları  listelemektedir.  Bundan sonra CustAccount ‘un yanına barkodu nasıl yazdıracağımıza baklaım.

Raporun ClassDecleration :

Buradan barkodun boyutlarını belirleyebilirsiniz.

public class ReportRun extends ObjectRun
{
    BarCodecode39    ordercodeId;
    #DEFINE.BarCodeFontSize(75)
    #DEFINE.BarCodeWidth(9000)
    #DEFINE.BarCodeHeight(900)
}

init metodumuz :

Read more

ExistsJoin ve NotExistJoin ile Lookup yazmak

Merhaba

Şöyle bir istek olsun.  Seçilecek vergi numarası ne müşteri nede satıcı tablosunda kullanılmış olsun. Bu gibi bir istekte notexistjoin kullanabiliriz. Eğer müşteride veya satıcıda  kullanılanlar listelensin denseydi existjoin kullanacaktık.

client static void lookupETGVATNum (FormStringControl ctrl, Common common)
{
    SysTableLookup          sysTableLookup = SysTableLookup::newParameters(tablenum(TaxVATNumTable), ctrl);
    Query                   query = new Query();
    QueryBuildDataSource    queryBuildDataSource = query.addDataSource(tablenum(TaxVATNumTable));
    QueryBuildRange         queryBuildRange = queryBuildDataSource.addRange(fieldnum(TaxVATNumTable, CountryRegionId));
    QueryBuildDataSource    qdbs;
    ;

// CustTable müşteri tablosunda olmayanları getiriyoruz
    qdbs  = queryBuildDataSource.addDataSource(tablenum(CustTable));
    qdbs.addLink(fieldnum(TaxVATNumTable , vatNum ),fieldnum(CustTable , vatNum ));
    qdbs.joinMode(joinmode::NoExistsJoin);

Read more

Axaptada yazıcı ayarlarına müdahale etmek

Merhaba,

Axaptada yazıcı ayarlarına printJobSettings() klası ile  mudahale edebilirsiniz.

Örneğin bir raporunuzun  3 kopya olarak basılmasını istiyorsunuz. Bunu elle yazıcı ayarlarından seçebileceğiniz gibi

kodlada bu işlemi otomatik yapabilirsiniz. Bunun için init metodunda şu kodu yazmanız yeterli.

element.printJobSettings().enableCopies(true);
element.printJobSettings().copies(3); // 3 kopya yazdır

Selamlar.

Page 8 of 15« First...678910...Last »