Pesquisando...
16 novembro 2010

Consulta no M. Access: retornando os documentos que já venceram seus prazos no arquivo corrente

Esse post mostra como criar uma consulta para retornar todos os documentos do banco de dados que já venceram seus prazos no arquivo corrente. Baseado no SGBD Access da Microsoft.

Nota da aula de "Tópicos avançados em banco de dados para arquivística" no curso de Arquivologia da UFSM.

Considerando que temos no banco de dados:


  • uma tabela de cadastro de documentos, com no mínimo seus campos de identificação: coddocumento (Numeração Automática); codclassificacao (Texto); dataproducao (Data/Hora); assunto (Texto); documentoanexo (Objeto OLE).





  • uma tabela pra definir os tempos de guarda dos tipos documentais. Exemplo de campos: codclassificacao (Texto); tempocorrente (Número (Inteiro longo)); tempointermediario (Número (Inteiro longo)); destinacaofinal (Texto).



  • uma tabela referenciando os códigos da classificação, ou seja, para cadastrar o plano de classificação e seus respectivos códigos que serão usados nas outras tabelas para identificar o documento. Exemplo de campos: codclassificacao (Texto); grupo (Texto); serie (Texto); subserie (Texto); tipodocumental (Texto).


Na consulta que será criada trabalharemos com dois principais campos: dataproducao (Data/Hora); tempocorrente (Número (Inteiro longo)) e a data atual que é buscada automaticamente no sistema pelo Access.

Logo, pensamos no seguinte cálculo: Data da produção do documento + Tempo no arquivo corrente < Data atual


Ou seja, somando a data de produção do documento com o tempo no arquivo corrente, tem que ser menor que a data atual para retornar os documentos.

Ok. Porém haverá um erro se a consulta for esta. Note que o campo da dataproducao é "Data/Hora" e do tempocorrente é "Número (Inteiro longo)". Ex.: DD/MM/AA (dataproducao) e 1 (tempocorrente). Este último foi feito assim, pensando em definir o tempo em anos.

Bom, a solução é multiplicarmos o número do campo tempocorrente por 365 (dias no ano). Após, realizar o cálculo acima proposto.

Criando a consulta
Clique no menu lateral em Consultas:


Clique em 'Criar consulta no modo design'. Adicione as três tabelas para a área de relacionamentos:


Faça os relacionamentos nas tabelas arrastando um campo da tabela para cima de outro na outra tabela. Ligue os campos: codclassificacao da tabela plano de classificação nos outros dois campos de mesmo nome em cada uma das outras duas tabelas. Veja o exemplo:


Agora defina os campos que aparecerão nesta consulta preenchendo o formulário abaixo dos relacionamentos. Próxima figura:


Nesta próxima etapa vamos construir a condição para criar a consulta, ou melhor, criar o cálculo citado antes. Clique com o botão direito do mouse na parte vazia do próximo campo, e em 'construir' como mostra a imagem a seguir:



Aparecerá uma janela onde deverá ser construído parte do cálculo. Navegando nas pastas laterais, construa a expressão conforme mostra a próxima figura e clique em OK.


Então voltará à tela anterior e ficará como mostra a próxima figura. Agora coloque a expressão <data() no campo 'critério'. Clique em Salvar e teste a nova consulta.


Esta consulta retornará todos os documentos cadastrados que já podem ser transferidos para o arquivo intermediário por ter vencido seu prazo no arquivo corrente.


Consulta para retornar os documentos passíveis de recolhimento

Você pode também fazer uma consulta retornando os documentos que já podem ser recolhidos ao arquivo permanente. Para isso, deve ser 'tempointermediario' + 'tempocorrente' + 'dataproducao' <data().
Mas lembre-se, como o campo tempointermediario também é de número inteiro longo, você deve multiplicar por 365. Assim, terá duas multiplicações por 365 na janela de construção de expressões. Veja o exemplo:


Note que esta consulta irá retornar TODOS os documentos que já venceram seus prazos no corrente e intermediário, independente da sua destinação final (eliminação ou descarte) exposto no campo 'destinaçãofinal' do documento.

Você pode exibir o campo 'destinaçãofinal' na consulta, preenchendo novamente o formulário abaixo da área de relacionamentos.


Obs.: Claro que não aparecerá nada se não tiver conteúdo de exemplo no banco de dados!

flw..

/Dhion Hedlund
Em 16 novembro 2010

1 comentários:

  1. Pode me dar a dica de como colocar um critério em consulta para mostrar o registro de cada cliente que tem a data mais recente de venda?

    ResponderExcluir