27 Kasım 2012 Salı

If and like

In axapta like operator can use with if command like sql - select command :

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 files','*.xls'],"","Filename");
    if (!Filename)
        return;

    application = SysExcelApplication::construct();
    workbooks = application.workbooks();
    try
    {
        workbooks.open(filename,0,true);
    }
    catch (Exception::Error)
    {
        throw error(strfmt("File cannot open: %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 - clear client cache

Sometimes your new codes don't update at client side even you reset client computer. In this case this code part may help you:

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

9 Ekim 2012 Salı

AXAPTA - Empty compound statement warning

Axapta generates this warning when compiling. To avoid this warning empty blocks may be remove. But when issue Try/Catch block you can't do this. Well, what do you do?
catch (Exception::Error)
{
 exceptionTextFallThrough();
}


I found this function from a  blog, it does nothing except supress warning.

8 Ekim 2012 Pazartesi

AXAPTA client and server current datetime values

I published datetime value for just client before. Today's values for client and server:

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


12 Eylül 2012 Çarşamba

AXAPTA - X++ If and blocks

This code part below has mistake?


            if (_ServiceShipment == B_SMAServiceShipment::B_Hand)
                if (!Personels.WithHand)
                    continue;
I was thinking not. Because I thought second if with continue should be consider as one command. But it seem not. Requires paranthesis:

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

4 Haziran 2012 Pazartesi

Hide lookup button for a form control

Hide lookup button for a form control:

 DSerial.lookupButton(FormLookupButton::Never);