27 Kasım 2012 Salı

If ve like

Axapta'da like operatörü sadece sql - select cümleciklerinde değil, if komutunda da kullanılabilir:

if (ItemId like "WX*")

5 Kasım 2012 Pazartesi

AXAPTA - Excel Import

void clicked()
{
    SysExcelApplication application;
    SysExcelWorkbooks   workbooks;
    SysExcelWorkbook    workbook;
    SysExcelWorksheets  worksheets;
    SysExcelWorksheet   worksheet;
    SysExcelCells       cells;
    COMVariantType      type;
    int                 row;
    str                 line;
    Filename            Filename;
    ;
    super();
    Filename = WinApi::getOpenFileName(element.hWnd(),['XLS dosyaları','*.xls'],"","Serino dosyası");
    if (!Filename)
        return;

    application = SysExcelApplication::construct();
    workbooks = application.workbooks();
    try
    {
        workbooks.open(filename,0,true);
    }
    catch (Exception::Error)
    {
        throw error(strfmt("Dosya açılamıyor: %1",Filename));
    }

    element.lock();
    workbook = workbooks.item(1);
    worksheets = workbook.worksheets();
    worksheet = worksheets.itemFromNum(1);
    cells = worksheet.cells();
    do
    {
        row++;
        type = cells.item(row+1,1).value().variantType();

        switch(cells.item(row,1).value().variantType())
        {
            case COMVariantType::VT_BSTR:
                line = cells.item(row,1).value().bStr();
                break;
            case COMVariantType::VT_DECIMAL, COMVariantType::VT_R4, COMVariantType::VT_R8:
                line = strfmt("%1",any2int(cells.item(row,1).value().double()));
                break;
            case COMVariantType::VT_I1, COMVariantType::VT_I2, COMVariantType::VT_I4:
                line = strfmt("%1",cells.item(row,1).value().int());
                break;
            case COMVariantType::VT_UI1, COMVariantType::VT_UI2, COMVariantType::VT_UI4:
                line = strfmt("%1",cells.item(row,1).value().uLong());
                break;
            case (COMVariantType::VT_DATE):
                line = date2str(cells.item(row,1).value().date(),123,2,1,2,1,4);
             case COMVariantType::VT_EMPTY:
                line ="";
                break;
            default:
                line="";
}
        if (Line != "")
            element.insertSerial(line);
    }
    while (type != COMVariantType::VT_EMPTY);
    application.quit();
    element.unLock();
}

15 Ekim 2012 Pazartesi

AXAPTA - Client Arabelleğini Temizleme

Bazen yeni yazdığınız kodlar client'i resetleseniz bile client tarafında görünmeyebilir. Bu durumda client bilgisayarında aşağıdaki kodları çalıştırmanız işe yarayabilir:

xSession::removeAOC();
SysTreeNode::refreshAll();
SysFlushDictionary::doFlush();
SysFlushAOD::doFlush();
xSession::updateAOC();

9 Ekim 2012 Salı

AXAPTA - Empty compound statement uyarısı

Axapta derleme esnasında bu uyarıyı verir. Boş blokları temizleyerek bu uyarıdan kurtulunabilir. Ancak Try/Catch bloğunda bunu yapamazsınız. Bu durumda ne yapacaksınız?
catch (Exception::Error)
{
 exceptionTextFallThrough();
}


Uyarıyı kaldırmaktan başka bir işlevi olmayan bu fonksiyonu bir blogdan buldum.

8 Ekim 2012 Pazartesi

AXAPTA client ve server için ayrı ayrı bugünün tarihi

Bugünün datetime değerinin fonksiyonunu daha önce de vermiştim, ancak o sadece client içindi. Client ve server için ayrı ayrı:

warning(strfmt("Client datetime değeri: %1",DatetimeUtil::getSystemDateTime()));
warning(strfmt("Server datetime değeri: %1",DatetimeUtil::utcNow()));


12 Eylül 2012 Çarşamba

Axapta if ve parantez

Aşağıdaki blok hatalı mı?

            if (_ServiceShipment == B_SMAServiceShipment::B_Hand)
                if (!Personels.WithHand)
                    continue;
Ben hatalı olmadığını düşünüyodum. Çünkü ikinci if komutunun da continue ile birlikte tek komut olarak alınacağını sanıyordum. Ama öyle değilmiş. Parantez gerekiyor:

            if (_ServiceShipment == B_SMAServiceShipment::B_Hand)
            {
                if (!Personels.WithHand)
                    continue;
            }

4 Haziran 2012 Pazartesi

AXAPTA - Kontrolün lookup buttonunu gizlemek

Bir kontrolün lookup buttonu gizlemek için:

 DSerial.lookupButton(FormLookupButton::Never);