Primavera Express-Agendar alterações na base de dados

29 12 2011

imageRecorrendo à funcionalidade "Tarefas Agendadas", do Windows, podemos programar a execução de instruções num servidor SQL directamente sobre uma base de dados, sem a mínima intervenção do utilizador.

 

Isto permite não só que tarefas rotineiras que eram executadas com alguma frequência, passem a ser executadas de forma automática poupando trabalho e evitando falhas, mas também permite fazer algo mais interessante como criar automatismos de alteração de dados que de outra forma, isto é, quando dependentes da intervenção de um utilizador, deixariam de fazer muito sentido quer pela carga de trabalho associada.

 

Para este exemplo vou utilizar o Primavera Express, criando alguns automatismos que visam aumentar a produtividade, e automatizando a atribuição de descontos a artigos de forma dinâmica.

 

 

 

1-Configuração da ligação ao servidor

Abra o bloco de notas do Windows e coloque a seguinte informação:

OSQL -U SA -P PRIMAVERA -S vmmodel\PRIEXPRESS -d pridemo -i C:\PRIMAVERA1.SQL


O que se encontra a vermelho poderá ter que ser alterado, consoante as configurações existentes no seu sistema. A saber:

SA: nome do utilizador do SQL Server associado à instancia de dados do Primavera Express (numa instalação do Primavera Express por defeito é o utilizador SA).

PRIMAVERA: password do utilizador SA (numa instalação do Primavera Express por defeito é PRIMAVERA).

vmmodel\PRIEXPRESS: localização do servidor de dados SQL Server do Primavera Express, onde vmmodel é o nome do computador (em vez do nome, poderá utilizar o IP) e PRIEXPRESS é o nome da instancia de dados do Primavera Express (numa instalação por defeito, PRIEXPRESS é o nome da instancia).

pridemo: nome da base de dados onde as instruções irão ser executadas. Deverá colocar o prefixo “PRI” antes do nome da base de dados que é mostrado no Administrador (numa instalação por defeito, o nome da base de dados de trabalho é EXPRESS, logo: PRIEXPRESS).

C:\PRIMAVERA1.SQL: localização e nome do segundo ficheiro que irá ser criado no passo seguinte.

 

 

Para consultar todos os paramentos possíveis de utilizar no ficheiro de ligação ao SQL Server, consulte este link.

 

 

Depois de devidamente configurados os parâmetros anteriores deverá guardar o ficheiro na raiz da unidade de sistema, normalmente C:, mas com a extensão .bat. Para isso terá que alterar em “Guardar com o tipo:” para “Todos os ficheiros”, e, depois de definir um nome para o ficheiro, à sua escolha, colocar a extensão “.bat” ( Batch File), tal como no exemplo:

image

 

 

 

 

 

2- Definição das instruções a executar

Deverá novamente abrir o bloco de notas do Windows e colocar a instrução que irá ser executada de forma automática. Aqui são necessários conhecimentos de SQL (Structured Query Language/Linguagem de Dados Estruturada), mais ainda se quiser fazer algo mais elaborado e complexo.

 

Nota importante: o utilizador deverá ter perfeita noção que alterações indevidas ou incorrectas dentro da base de dados podem comprometer a integridade e a consistência da informação. Considere fazer uma cópia de segurança antes de efectuar testes numa base de dados em produção (consulte este artigo para mais infirmações).

 

Como um primeiro exemplo irei colocar a seguinte instrução:

update artigo set desconto=desconto+1 where artigo in (‘B0006’, ‘B0005’)

Esta instrução tem como objectivo modificar o desconto dos artigos com os códigos B0006 e B0005, somando 1% ao desconto existente no momento em que a instrução for executada. O objectivo é que, o desconto seja igual ao dia do mês. Se dia 1 colocar o desconto em 1% e configurar esta tarefa para ser executada todos os dias às 00:00, a cada dia será somado mais 1%.

image

Tal como no primeiro ficheiro criado, terá que  alterar em “Guardar com o tipo:” para “Todos os ficheiros”. Depois de definir o mesmo nome indicado no primeiro ficheiro e colocar a extensão “.sql”, guarde na raiz da unidade de sistema, neste caso C:\.

image

 

 

Poderá testar as configurações efectuadas acima, para saber se tudo correrá como esperado. Para isso, execute a Linha de Comandos (Menu Iniciar > Programas > Acessórios ou Menu Iniciar > Executar > cmd > OK ), navegue até à raiz da unidade de sistema, e execute o ficheiro PRIEXPRESSSQL.bat e espere até que seja mostrado resultado. Neste caso verificamos que 2 registos foram alterados, portanto tudo está OK.

image

Caso não obtenha sucesso deverá rever as configurações anteriores.

 

 

 

 

 

3- Agendamento da execução

Para agendar a execução da instrução SQL definida no passo 2 deverá utilizar o atalho Tarefas Agendadas que se encontra no Menu Iniciar > Programas > Acessórios > Ferramentas do Sistema.

image

Adicione uma tarefa, e no passo seguinte escolha o botão Procurar, indicando de seguida o ficheiro C:\PRIEXPRESSSQL.bat. Deverá agora identificar esta tarefa com um nome que facilmente indique no futuro qual a sua função, e escolher qual a periodicidade com que ela será executada.

image

 

Defina a hora e em que dias da semana a tarefa será executada, neste exemplo todos os dias às 00:00, e a data actual como data de inicio.

image

 

Indique a conta do Windows responsável pela execução da tarefa.

image

Tenha em mente que, caso não forneça os dados de uma conta que tenha password, a tarefa poderá não ser executada. Se for esse o caso, deverá activar a password no utilizador actual, ou criar um novo utilizador para o efeito.

 

image

 

Depois de criada, poderá alterar a tarefa criada anteriormente, clicando com o botão direito do rato em cima da mesma e escolhendo Propriedades, onde poderá entre outras opções desactivar a tarefa, alterar o utilizador/password que será utilizado para executar a tarefa, definir uma data final para a execução da tarefa e executar a tarefa mais do que uma vez por dia.

image

Poderá ver nesta janela a agenda para a sua execução, a próxima data/hora programada, ultima vez executada, resultado, etc.

 

 

 

 

 

Resultado Final:

Dia 1-12-2011, o desconto do artigo B0006 é alterado manualmente para 1%.

image

 

 

Dia 2-12-2011 às 00:00 é executada a tarefa:

image

É possível confirmar através da coluna “Última hora de execução” e pelo resultado: 0x0 que a tarefa foi executada com êxito.

Recorrendo à seguinte tabela poderá consultar os 3 estados possíveis:

0x0: A operação foi concluída com êxito.
0x1: Uma função incorreta ou desconhecida foi chamada.
0xa: Ambiente incorreto.

 

 

 

Ao editar o artigo temos agora a certeza que o desconto foi aumentado em 1% relativamente ao valor anterior.

image

 

 

 

Dia 3-12-2011, novo aumento para 3%.

image

 

Neste exemplo, ao chegar aos 31% de desconto, o utilizador teria que, dia 1 de Janeiro de 2011 colocar manualmente o desconto a 1% para que o valor do desconto passasse a acompanhar novamente o dia do mês. Evidentemente poderia ser criado um novo conjunto de ficheiros XXXX.bat e XXXX.sql com a instrução: update artigo set desconto=1 where artigo in (‘B0006’, ‘B0005’) e agendar a sua execução para dia 1 de cada mês.

 

 

 

 

Outros exemplos de instruções SQL:

Uniformizar a descrição de artigos para maiúsculas:

update artigo set descricao=UPPER(descricao)

(veja este artigo para mais detalhes)

 

 

 

Criar um Happy Hour, em que entre as 15:00 e as 17:00, todos os dias, o artigo B0006 tem um desconto de 30% e fora desse horário não tem nenhum desconto:

Crie o ficheiro 1.bat e indique o ficheiro 1.sql como ficheiro associado (-i C:\1.sql). Crie o ficheiro 1.sql com a seguinte instrução:

update artigo set desconto=30 where artigo =’B0006′

Crie uma tarefa para correr o ficheiro 1.bat todos os dias às 15:00.

 

Crie agora o ficheiro 2.bat, e indique o ficheiro 2.sql como ficheiro associado. Crie o ficheiro 2.sql e coloque a seguinte instrução:

update artigo set desconto=0 where artigo =’B0006′

Crie uma segunda tarefa para correr o ficheiro 2.bat todos os dias às 17:00.

 

 

 

Recálculo de Stocks:

Exec GCP_CST_RecalculoStocks
@ArtigoInicial=N”,@ArtigoFinal=N”,
@ArmazemInicial=N”,@ArmazemFinal=N”,
@TipoRecalculo=0,@Simulacao=0,
@ArtNecRecalcPCM=0,
@RecalcQtdReservada=0,
@ExecPCMDocs=1,
@NPartes=0,
@Posto=N’00’

(veja este artigo para mais informações sobre o recálculo de stocks)

 

 

 

 

 

Cenário em que este artigo foi elaborado:

Windows XP com Primavera Express e SQL Server 2005

 

Notas finais:

  • Não é necessário que o Primavera Express se encontre aberto para que a tarefa agendada seja executada.
  • O computador terá que estar ligado para a tarefa ser executada.
  • Se possui uma edição paga do SQL Server, poderá utilizar o SQL Server Agent para agendar tarefas e rotinas relacionadas com o servidor de dados, como backups, compactações, etc (as edições Express não contemplam este serviço).
  • O utilizador poderá executar os ficheiros .bat manualmente, fazendo duplo clique sobre os mesmos, não conseguindo no entanto ver qual o resultado. Para ver o resultado terá que executar o .bat pela linha de comandos, tal como foi explicado anteriormente.

 

Links de interesse:

Como solucionar problemas de tarefas agendadas no Windows XP e no Windows Server 2003


Ações

Information

4 responses

7 01 2012
Primavera Express-Recálculo de Stocks « ..::invisible flame light::..

[…] saber como agendar esta tarefa, consulte este […]

7 01 2012
Primavera Express-Funcionalidades Ocultas « ..::invisible flame light::..

[…] “ES”. Para automatizar este processo através de uma rotina para o efeito (mais informações neste […]

29 03 2012
jlrsantos

Boa Noite
Muito obrigao pela ajuda que nos presta.
Gostaria de pedir ajuda para uma operação
Tenho express 6.4 e pretendo alterar a referencia dos artigos por ex: artigos que com os 3 primeiros caracteres FRG passem a 22 um exemplo FRG1004 passe a 221004 mas isto para todos os FRG
Muito Obrigado

30 03 2012
XpecialGUEST

Boa tarde,

Só tem uma hipótese de alterar códigos de artigos que é no Administrador. Depois de seleccionar a empresa, em baixo, escolha “Outros Utilitários”. Neste utilitário pode alterar os códigos de artigos, assim como de registos de outras tabelas, como clientes por exemplo.

Nota: Poderá fazer essas alterações antes de passar para a v8, ou depois.
Carlos

Deixe uma Resposta

Preencha os seus detalhes abaixo ou clique num ícone para iniciar sessão:

Logótipo da WordPress.com

Está a comentar usando a sua conta WordPress.com Terminar Sessão / Alterar )

Imagem do Twitter

Está a comentar usando a sua conta Twitter Terminar Sessão / Alterar )

Facebook photo

Está a comentar usando a sua conta Facebook Terminar Sessão / Alterar )

Google+ photo

Está a comentar usando a sua conta Google+ Terminar Sessão / Alterar )

Connecting to %s




%d bloggers like this: