Dynamics Search Engine

Sunday, January 11, 2015

How to fix error Invalid object name tempdb.DBO and TRUNCATE TABLE tempdb. DBO in Microsoft Dynamics AX 2012

How to fix error Invalid object name tempdb.DBO and TRUNCATE TABLE tempdb. DBO in Microsoft Dynamics AX 2012.

This article explain how to resolve tempdb.DBO error and TRUNCATE TABLE tempdb. DBO when you do a posting in Microsoft Dynamics AX 2012

Applied on: Dynamics AX 2012 R3

Error:
SQL error description: [Microsoft][SQL Server Native Client 11.0][SQL Server]Invalid object name 'tempdb.DBO.t20143_ADF272F84AED47BF8B58C5DF75F56229'.

SQL statement: TRUNCATE TABLE tempdb."DBO".t20143_ADF272F84AED47BF8B58C5DF75F56229

Symptom:
Sometimes when you do posting in Microsoft Dynamics AX 2012 it throws an error which says like [Microsoft][SQL Server Native Client 11.0][SQL Server]Invalid object name 'tempdb.DBO.t20143_ADF272F84AED47BF8B58C5DF75F56229 also says SQL statement: TRUNCATE TABLE tempdb."DBO".t20143_ADF272F84AED47BF8B58C5DF75F56229.

Sample screenshot:


 
 
 
 
 
 
 

 
 
 
 
Resolution:
Solution is to restart the AOS.


 

Tuesday, January 6, 2015

How to read and insert record from a CSV file using X++ code into Microsoft Dynamics AX 2012 table

How to read and insert record from a CSV file using X++ code into Microsoft Dynamics AX 2012 table.

This article helps you to understand how to read data from a CSV file and insert into Microsoft Dynamics AX 2012 table.

Applied on: Dynamics AX 2012 R3.
Prerequisite
: Basic Dynamics AX 2012 programming knowledge.
Target audience
: AX programmers.
Assumption: You are familiar with Dynamics AX 2012 and CSV file


Below job inserts records from a CSV file to CustGroup table.

static void CustGroupCSVInsert(Args _args)
{
    Dialog          dialog  = new Dialog();
    DialogField     dialogField;
    AsciiIo         importFile;
    str             filePath,fileNameOnly;
    filetype        type;
    container       record;
    str             delimiter = ",";
    int             totalRecords;
    CustGroup       custGrp;

    dialogField=dialog.addField(extendedTypeStr(FilenameOpen),"Select File","Select file to import");
    dialog.caption("File Picker");
    dialog.filenameLookupFilter(['csv','*.csv']);

    if(!dialog.run())
        return;

    [filePath, fileNameOnly, type] = fileNameSplit(dialogField.value());
    importFile = new AsciiIo(dialogField.value(), 'R');

    if((!importFile) || (importFile.status() != IO_Status::Ok))
    {
        warning("Error in opening import file");
        throw(Exception::Error);
    }

    importFile.inFieldDelimiter(Delimiter);

    try
    {
        ttsbegin;
        custGrp.clear();
        record = importFile.read(); // First row - Column name - Header

        while(importFile.status() ==  IO_Status::Ok)
        {
            record = importFile.read();
            if(!record)
                break;

            totalRecords = totalRecords + 1;
            custGrp.clear();

            custGrp.CustGroup = conPeek(record, 1);
            custGrp.Name = conPeek(record,2);

            custGrp.insert();
        }
        ttscommit;
    }

    catch(Exception::Error)
    {
        Throw(Exception::Error);
    }

    info(strFmt("Total Read Records = %1",totalRecords));
}


Sample .CSV file image.