quinta-feira, 20 de dezembro de 2007

X++ - Excel via OleDB direto no AX

Saudações a todos!

O Microsoft Dynamics AX dispõe de várias formas de integração.

Entre elas, existe a opção de utilizar o . NET Framework diretamente no código X++, instanciando objetos dos namespaces desejados para ler os dados diretamente da base através do ADO.Net.

A discussão sobre integração surgiu originalmente no fórum MSDN, onde existe um tópico aberto sobre importação de dados para o DAX pelos variados meios, seja AIF, Excel table (que não é recomendável para Itens, vide tópico).
Vale lembrar que a participação de todos os profissionais do ramo nesse fórum é essencial para que possamos construir uma base de conhecimento, com uma "cara" mais prática, fortalecendo nossas referências no mercado.

Voltando ao assunto principal:

O método de acesso é realizado através do .Net framework.

As referências devem ser adicionadas no node
References do AOT.
Ex. System.Data / System.Data.resources / System.Data.SqlXml e assim por diante.

static
void MeuJob(Args _args)

{

System.Data.OleDb.OleDbConnection connection;
System.Data.OleDb.OleDbCommand command;
System.Data.OleDb.OleDbDataReader dr;
str id;
str nome;
str c;
str strSql;

c = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Dados.xls;Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\";";

// O parametro HDR determina se a primeira linha contem os nomes de colunas

// "IMEX=1;" lê os dados como texto.


connection = new System.Data.OleDb.OleDbConnection();
connection.set_ConnectionString(c);
connection.Open();

strSql = "SELECT * FROM [MinhaTabela$]";

//MinhaTabela corresponde ao nome da Planilha seguido por $ e entre []s.

command = new System.Data.OleDb.OleDbCommand(strSql, connection);
dr = command.ExecuteReader();


while (dr.Read())
{
id = dr.get_Item(0);
nome = dr.get_Item(1);
info(strfmt("%1 - %2",id,nome));
}
dr.Close();
}

Caso haja qualquer outra fonte de dados suportada pelos NameSpaces System.Data.* , seja Sql, OleDB ou ODBC, é só procurar o meio de conectar.

Uma fonte interessante é o site www.connectionstrings.com que comporta uma lista com as strings de conexão, bem como suas variações para quase todos os SGBDs disponíveis no mercado.

Aproveitando a época, eu gostaria de deixar um Feliz Natal e um Ótimo 2008 a todos que prestigiam nossa casa e compartilham as idéias.

Um abraço!

2 comentários:

Douglas Barreto disse...

Muito bom o artigo.
Eu gostaria de saber onde encontrar conceitos sobre os objetos(views,jobs,etc) do AX, pois estou começando a desenvolver agora e me seria muito útil.

abraços.

Douglas Barreto
Fenix Consultoria

André dos R. Santos disse...

Douglas, veja o Post sobre o livro Inside Microsoft Dynamics AX
(http://axaptabrasil.blogspot.com/2008/04/ebook-grtis-disponvel-para-download.html)

E também não deixe de visitar o blog com frequência, pois sempre que conseguimos um tempo, disponibilizamos material aqui para enriquecer a comunidade DAX no Brasil!

Abraço!