Páginas

Como importar dados utilizando uma folha de estilo em excel com o AX 2012

Já se passaram muitos meses desde a última postagem e muitas coisas mudaram nesse tempo todo.
 
Mas agora com o novo desafio de reaprender as novas funcionalidades do Dynamics AX 2012 vou ser mais ativo no blog conforme as novas descobertas.

E a primeira dela é como utilizar a folha de estilo que criávamos a partir do próprio AX na versão 2009, porém no 2012 está um pouco diferente e tive que dar algumas cabeçadas e ler alguns posts para conseguir entender a lógica da coisa.
 
A primeira sacada da coisa começa na instalação do client.
 
É imprescindível instalar nos Componentes do cliente os Suplementos do Office.

Componentes de instalação
Agora sim, começa a criação da folha de estilo para importação de dados.
Vamos supor que quero importar um Plano de Contas (LedgerChartOfAccounts). 
 
A seleção em vermelho corresponde a tabela LedgerChartOfAccounts
Agora vamos iniciar o Excel e nele teremos a opção Dynamics AX.


 
No meu caso a conexão entre a aplicação e o office já está criada, vi em alguns posts na internet que é necessário realizar essa conexão manualmente.
Com a conexão estabelecida, vamos selecionar Adicionar Dados > Adicionar Tabelas
 
 
Agora vamos selecionar a tabela que queremos criar a folha de estilo e prosseguir.
 
 
Vamos arrastar o campo Descrição para a folha de estilo, desmarcar a opção Campos e iniciar o preenchimento.
 
 
E fazer a publicação.
Nesse caso como só temos um registro a inserir, podemos Publicar Tudo, mas é possível publicar apenas um registro selecionado.
 
 
Após a publicação é exibida uma nova planilha com o status da publicação e mensagens de erro caso ocorra.
 
 
E são exibidos os registros já existentes na tabela.
 
 
Registros na folha de estilo

Registros do plano de contas

Porém, vamos supor que queremos realizar uma importação de tabelas relacionadas, como a MainAccount. Para isso podemos adicionar no nosso próprio excel a nova tabela seguindo o mesmo procedimento anterior. Podemos também montar nossa folha de estilo de acordo com as informações que vamos preencher arrastando os campos, porém temos que adicionar o campo chave para a tabela LedgerChartOfAccounts que nesse caso é o Plano de Contas e preencher com o respectivo registro relacionado.
 
Registros da MainAccount
Registros do plano de contas
Porém tenho algumas observações a fazer.
Caso queira incluir um novo registro na tabela pai (LedgerChartOfAccounts), não será necessário realizar a publicação da tabela pai, para depois preencher a tabela filha (MainAccount) com o campo de relacionamento entre as tabelas.
Para realizar essa operação simultânea basta ir em Publicar > Opções de Publicação
 
 
E nas opções definir a Ordem de publicação.
 
 
Assim a tabela LedgerChartOfAccounts irá criar o novo registro e quando for publicada a tabela MainAccount já existirá a referência e não ocorrerá nenhum erro.
 
É algo bem básico e simples, mas que me deu um pouco de trabalho, pois também nas documentações que tenho não encontrei nada a respeito. Então se alguém estiver com dificuldades esta é uma boa dica para iniciar e espero que possa ser útil.
 
[]'s
 
Alexssander


Como executar um restore database via query no SQL Server

Recentemente tive problemas com o restore do SQL Server que deu um erro e não estava conseguindo restaurar um backup de uma base de projetos na base de desenvolvimento, conversando com meu amigo DBA Sandro Bichbich ele me mostrou uma maneira de criar uma query que faz o restore (bem mais rápido por sinal que a ferramenta do próprio SQL Server).

Ao invés de utilizarmos a ferramenta nativa do SQL:


Podemos criar uma query que faça esse trabalho, porém é importante que essa query não esteja sendo executada na database que estamos utilizando para ser restaurada, para isso vamos utilizar a database master.

Agora vamos executar o seguinte código:

RESTORE FILELISTONLY from disk = 'Local onde se encontra o backup'

Feito isso vamos pegar o resultado do LogicalName para criar o seguinte código:


RESTORE DATABASE [Base a ser restaurada] FROM DISK = 'Local onde se encontra o backup'

WITH  FILE = 1,  NOUNLOAD ,  STATS = 1,  RECOVERY , 
move 'NomeLógico'   to 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\BaseASerRestaurada.mdf',
move 'NomeLógico_log'   to 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\BaseASerRestaurada_log.LDF',
REPLACE
Go

No meu caso o resultado ficou assim:

RESTORE FILELISTONLY from disk = 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Backup\DynamicsAX_Proj.bak'

RESTORE DATABASE [DynamicsAX_Dev] FROM DISK = 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Backup\DynamicsAX_Proj.bak'

WITH  FILE = 1,  NOUNLOAD ,  STATS = 1,  RECOVERY , 
move 'DynamicsAx_Proj'   to 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\DynamicsAx_Dev.mdf',
move 'DynamicsAx_Proj_log'   to 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\DynamicsAx_Dev_log.LDF',
REPLACE
Go

[]'s
Alexssander