25 Mart 2013 Pazartesi

AXAPTA text dosya okuma

...
    Filename                Filename;
    System.IO.StreamReader  readFile;
    System.String           line;
      ;
    super();
    Filename = WinApi::getOpenFileName(element.hWnd(),['TXT files','*.txt'],"","Text Files");
    if (!Filename)
        return;

    readFile = new System.IO.StreamReader(filename,System.Text.Encoding::get_UTF8());
    while (true)
    {

        line = readFile.ReadLine();
        if(System.String::IsNullOrEmpty(line))
           break;
        warning(line);
    }
       
    readFile.Close();
    readFile.Dispose();
...        



Text dosya okumanın çeşitli farklı yöntemleri var. Biri de Fatih Demirci'nin bloğundaki.

8 Şubat 2013 Cuma

6 Şubat 2013 Çarşamba

AXAPTA - DoInsert ile Insert arasındaki fark nedir?

DoInsert insert metoduna yazılan X++ kodlarını görmezden gelir, Insert ise çalıştırır:
http://dynamicsuser.net/forums/t/53377.aspx

Calling DoInsert ensures that any Axapta X++ code written in insert method of the record is not executed.

4 Şubat 2013 Pazartesi

AXAPTA - Tabbed Dialog kontrole giriş-çıkışları yakalamak

Giriş için pageActivated() , çıkış için de allowPageDeactivate() metodunu kullanabilirsiniz. Lostfocus() ve GotFocus() metodları ile ben bu sonuca ulaşamadım.

31 Ocak 2013 Perşembe

AXAPTA - bir kullanıcıya uyarı mesajı göndermek

static void sendAlertToUser(UserId _UserId,EventSubject _Subject,EventMessage _Message)
{
    EventInbox        inbox;
    EventInboxId      inboxId;
    SysClientSessions sessions;
    ;
    inboxId = EventInbox::nextEventId();
    inbox.initValue();
    inbox.ShowPopup            = NoYes::Yes;
    inbox.Subject              = _Subject;
    inbox.Message              = _Message;
    inbox.SendEmail            = true;
    inbox.UserId               = _UserId;
    inbox.InboxId              = inboxId;
    inbox.AlertCreatedDateTime = DateTimeUtil::getSystemDateTime();
    inbox.insert();
}

AXAPTA - kodla sipariş oluşturma

...
    SalesTable                  salesTable;
    NumberSeq                   NumberSeq;
    SalesLine                   salesLine;
    AxSalesLine                 axSalesLine = new axSalesLine();
    AxSalesTable                axsalesTable = new axSalesTable();
    ;
...
    ttsbegin;
    axsalesTable.parmSalesId();
    if (ServiceOrder.CustName == "")
        axsalesTable.parmCustAccount(ServiceOrder.CustAccount);// Cust Account
    else
        axsalestable.parmOneTimeCustomer(Dialog_OneTime.value());

    axsalesTable.parmDlvMode(Dialog_DLVMode.value());
    axsalesTable.parmDlvTerm(Dialog_DLVTerm.value());
    axsalesTable.save();
    while select forupdate Lines where Lines.RepairJournalId == _RepairJournalId && Lines.SalesId == "" &&
        Lines.CSApproval == B_Approval::Approved && Lines.ItemId != "" && Lines.Qty > 0
    {
        axSalesLine = AxSalesLine::construct();
        axSalesLine.parmSalesId(axsalesTable.parmSalesId());
        axSalesLine.parmItemId(Lines.ItemId);
        axSalesLine.parmSalesQty(Lines.Qty);
        axSalesline.parmSalesPrice(Lines.ProjSalesPrice);
        axSalesline.parmCurrencyCode(Lines.ProjCurrencyCode);
        axSalesline.parmSalesUnit(Lines.Unit);
        Lines.SalesId = axsalesTable.parmSalesId();
        Lines.update();
        axSalesLine.save();
    }
    ttscommit;
...

29 Kasım 2012 Perşembe

AXAPTA SysQuery ile Form ve Report'a Range Ekleme

Form için:
    SysQuery::findOrCreateRange(B_RMAOutTable_DS.query().dataSourceTable(tablenum(B_RMAOutTable)),        fieldnum(B_RMAOutTable,RMAIn)).
         value(QueryValue(NoYes::Yes));


Report için:

    SysQuery::findOrCreateRange(this.query().dataSourceTable(tablenum(SMAServiceOrderTable)),
        fieldnum(SMAServiceOrderTable,ItemSerialNum)).
 value(sysquery::valueNotEmptyString());


Run methoduna super'den önce yazabilirsiniz.