Banco de Dados Dicas Rápidas

Concatenar o Histórico do lançamento contábil em Queries

Escritor por Victor Amemiya

FAAAAALA PESSOAL!!!

Tudo bom?!

O artigo de hoje será uma dica rápida.

 

Irei mostrar um macete muito interessante na hora de fazer uma consulta nos lançamentos contábeis (CT2) . Caso tenha que analisar o campo histórico do lançamento contábil, observe a dica que deixo abaixo: (vale lembrar que este campo é quebrado em diversos registros, quando ultrapassa o limite do campo de histórico)

 

A grande vantagem de utilizar esta técnica é possibilitar a concatenação dos históricos contábeis em um único campo. Este método possibilita buscas rápidas, uma vez que será criada uma função diretamente no banco de dados.

 

Observação: este tutorial representa procedimentos para serem utilizados com banco de dados SQL Server, posteriormente, criaremos uma versão para Oracle e demais bancos, qualquer dúvida, deixe um comentário.

 

A seguir, confira o passo-a-passo de como criar e utilizar esta facilidade:

Passo-a-Passo para criação da Função para concatenar

Passo 1:

 

O primeiro passo consiste em abrir o programa SQL Management (SSMS.EXE), através deste aplicativo que criaremos uma função em nosso banco de dados;

Passo 2:

 

Agora que já estamos dentro do SQL Management Studio, podemos nos conectar ao banco ao qual desejamos criar a funcionalidade.

Passo 3:

 

Clique com o botão direito sobre o banco ao qual deseja utilizar, navegue até a opção “Nova Consulta” e clique, esta ação irá abrir uma janela que permite a realização de consultas. Através desta janela, iremos realizar a criação da nossa função.

Observação:

 

Antes de criarmos a função, veja como é criada na tabela CT2 e exibida uma consulta de um determinado lançamento que possui um histórico relativamente comprido:

Note que para o lançamento de CRÉDITO há duas linhas de registros na tabela, enquanto que para as informações do DÉBITO existem quatro.

O indicativo de Crédito é o campo CT2_DC=’2′, onde o campo histórico inicia, a continuação do histórico sempre é gravada no registro CT2_DC=’4′ que vem na sequência, o mesmo ocorer para o Débito (CT2_DC=’1′).

Passo 4:

 

Para criar a função executa a sequência de Códigos explicada abaixo:

Observação: No exemplo, utilizei o nome da função como ‘RetCT2Conc’, entretanto, utilize o nome que desejar, lembrando de alterar na chamada no momento de realizar a consulta, posteriormente. Note também que está sendo considera apenas TPSALD=’1′, manipule conforme a sua necessidade.

 

Create Function fnc_RetCT2Conc(@FILIAL varchar(2), @DT varchar(8), @LOTE varchar(6), @SBLOTE varchar(3), @DOC varchar(6),@SEQLAN varchar(3),@SEQUEN varchar(10)) returns VarChar(400) as
Begin
Declare @rchave VarChar(400) = ''
Select @rchave = LTRIM(RTRIM(CT2_HIST)) + @rchave From CT2990
Where CT2_FILIAL = @FILIAL
AND CT2_DATA = @DT AND CT2_LOTE = @LOTE
AND CT2_SBLOTE = @SBLOTE AND CT2_DOC = @DOC
AND CT2_SEQLAN = @SEQLAN
and CT2_SEQUEN = @SEQUEN
AND CT2_DC IN ('1','2','3','4')
AND CT2_TPSALD = '1'
AND D_E_L_E_T_ = ''
ORDER BY CT2_SEQHIS DESC

Return @rchave
End
Fique atualizado, É GRÁTIS!
Cadastre o seu endereço de e-mail e fique por dentro de todas as atualizações da AcademiaERP.
Não enviamos spam.

Passo 5:

 

Uma vez que função foi criada com sucesso e obteve a mensagem conforme o print (Comando(s) concluído(s) com êxito.), devemos utilizar esta função para melhorar a nossa consulta conforme o exemplo abaixo:

–Utilização no Select
SELECT CT2_FILIAL, CT2_DOC, CT2_SEQUEN, CT2_SEQLAN,CT2_LOTE, CT2_SBLOTE, CT2_LINHA,
CT2_DATA, CT2_DC, CT2_DEBITO, CT2_CREDIT, CT2_VALOR, CT2_HIST, --, *
CT2_HIST1 = dbo.fnc_RetCT2Conc(CT2_FILIAL, CT2_DATA, CT2_LOTE, CT2_SBLOTE, CT2_DOC, CT2_SEQLAN, CT2_SEQUEN )
FROM CT2990
WHERE
CT2_FILIAL ='01'
AND CT2_DATA ='20151211'
AND CT2_LOTE ='008850'
AND CT2_DOC = '000002'
AND CT2_DC IN ('1','2','3')
AND D_E_L_E_T_<>'*'

group by CT2_FILIAL, CT2_DOC, CT2_SEQUEN, CT2_SEQLAN,CT2_LOTE, CT2_SBLOTE, CT2_LINHA, CT2_DATA, CT2_DC, CT2_DEBITO, CT2_CREDIT, CT2_VALOR, CT2_HIST
ORDER BY CT2_DATA, CT2_LOTE, CT2_SBLOTE, CT2_DOC, CT2_LINHA

Nota:

 

Observe que no resultado é possível visualizar ambas as colunas, o retorno da coluna padrão CT2_HIST e o retorno da função que criamos, onde houve a concatenação e apenas uma linha. Também, note que na consulta que realizamos EXCLUÍMOS os lançamentos do tipo CT2_DC=’4′, uma vez que este será concatenado nos lançamentos onde o campo CT2_DC for ‘1’, ‘2’ ou ‘3’.

Complemento:

 

  • Esta funcionalidade poderá ser utilizada normalmente em seus programas AdvPL;
  • Caso necessite remover a função que foi criada, execute a função demonstrada a seguir:
–Substitua o “fnc_RetCT2Conc” pela nome da função que criou, no meu exemplo, criei a função com este nome.

 

--Dropar a Função
DROP function dbo.fnc_RetCT2Conc

Pessoal, caso tenha alguma dúvida, sugestão ou crítica, por favor, não exite em nos enviar uma mensagem. Ficaremos feliz em recebê-la e, certamente, retornaremos o mais breve possível.

 

Muito obrigado e boa sorte.

Sobre o Autor

Victor Amemiya

Faaaaaala galera, tudo bom? Eu sou o Victor, formado em GSI pela Faculdade Impacta de Tecnologia. Minha praia é desenvolvimento, mas também gosto muito de banco de dados. Tem alguma dúvida, crítica ou sugestão? Me envie um e-mail: victor.amemiya@optera.com.br

Deixe um comentário

Dúvida?