'Um código bem básico para uma estrutura de três níveis escrito em 'VB para o Access 2010 
Option Compare Database
Sub centro_custo()
' funciona para uma estrutura de contas em 3 niveis
Dim rs1 As Recordset
Dim rs2 As Recordset
Dim soma_n1, soma_n2, soma_n3 As Double
Dim tamanho_conta As Integer
Dim strSQL As String
' lista todas as contas cadastradas em centro_custo
Set rs1 = CurrentDb.OpenRecordset("SELECT id_centro_custo, descricao, tipo_conta FROM centro_custo ORDER BY id_centro_custo DESC;")
Do While Not rs1.EOF
   ' contas nivel 3
   ' todas contas analiticas, nessa estrutura as contas tem o nivel 3
   If (rs1("tipo_conta") = "A") Then
       ' processa o nivel 3 na query em strSQL
       strSQL = "SELECT cc.id_centro_custo, cc.descricao, sum(m.valor_movimento) AS total_conta FROM centro_custo cc INNER JOIN movimento m  ON m.id_centro_custo LIKE cc.id_centro_custo WHERE cc.id_centro_custo =  '" & rs1("id_centro_custo") & "' GROUP BY cc.id_centro_custo, cc.descricao;"
       Set rs2 = CurrentDb.OpenRecordset(strSQL)
       If Not rs2.EOF Then
           soma_n3 = rs2("total_conta")
       Else
           soma_n3 = 0
       End If
       soma_n2 = soma_n2 + soma_n3
       Debug.Print rs1("id_centro_custo") & " - " & rs1("descricao") & " - " & rs1("tipo_conta") & " - " & soma_n3
   Else
       tamanho_conta = Len(rs1("id_centro_custo"))
       ' contas nivel 2
       If tamanho_conta = 3 Then
           Debug.Print rs1("id_centro_custo") & " - " & rs1("descricao") & " - " & rs1("tipo_conta") & " - " & soma_n2
           soma_n1 = soma_n1 + soma_n2
           soma_n2 = 0
       Else
           ' contas nivel 1
           If tamanho_conta = 1 Then
               Debug.Print rs1("id_centro_custo") & " - " & rs1("descricao") & " - " & rs1("tipo_conta") & " - " & soma_n1
               soma_n1 = 0
           End If
       End If
   End If
   ' avanca proximo registro
   rs1.MoveNext
Loop
End Sub
' Informo ainda que os níveis podem ser configurados via matrizes 
' e código desenvolvido acima é procedural
' Recomendo definir uma mascara do plano de contas
Resultado do Código em VBA Acima Descrito 
Mais uma vez espero ter ajudado!
APdSJC!
DBA, MySql, Oracle, Postgres, SQL Server, DB2, BI, TI, Business Intelligence, Data Science, Machine Learning, IoT, Arduino
quinta-feira, 26 de dezembro de 2013
Código, Algoritmo de um Plano de Contas escrito em VB
Complementando um artigo descrito em http://emersonhermann.blogspot.com.br/2012/09/consulta-sql-de-plano-de-contas-query.html
Consulta SQL de Plano de Contas - Query Contabil - Query para Centro de Custo, apenas exponho um simples código para elucidar como deveria ser feito, isto é, como seria implementado um algoritmo para totalizar um plano de contas em uma linguagem de programação, a exemplo aqui do VBA, em casos que não é possível usar uma query ou um SGBD sem um suporte mais abrangente ao SQL a exemplo do ACCESS 2010. 
Assinar:
Comentários (Atom)

 
