Array
(
)

Relatório Plano de Contas

Dbluka
   - 24 ago 2004

Gostaria de saber como devo desenvolver uma rotina de modo que eu consiga extrair uma relatório pelo QuickReport do Delphi 5 e a base de dados em Access.
Caso possam, favor enviar resposta o mais rápido possível, pois estou precisando disso p/ dar continuidade ao meu trabalho e como estou engatinhando em programação preciso muito da ajuda de vocês, OK?!

Desenvolvi a coisa da seguinte forma, mas caso queiram podem fazer observações na base de dados...

Tenho duas tabelas:
Tabela (Codigos)
- Cod (Pk)
- Titulo_Cod

Tabela (Entrada de Dados)
- Unidade
- Ano
- Codigo (FK)
- Valor

Base de Dados está assim:
(Codigos)
Cod - Titulo
3.0.0 - Despesa
3.1.0 - Despesa Pessoal
3.1.1 - Despesa Pessoal Fixa
3.1.2 - Despesa Pessoal Extra
3.2.0 - Despesa Outros

(Entrada de Dados)
Unidade - Ano - Codigo - Valor
A - 2004 - 3.1.1 - 10,00
A - 2004 - 3.1.2 - 20,00
B - 2003 - 3.1.1 - 50,00
A - 2004 - 3.2.0 - 40,00
A - 2004 - 3.1.1 - 15,00

RELATÓRIO DESEJADO:
ANO: 2004
UNIDADE: A
COD - TITULO - VALOR
3.0.0 - Despesa - 85,00 (= Soma itens 3.1.0 e 3.2.0)
3.1.0 - Despesa Pessoal - 45,00 (igual soma 3.1.1 e 3.1.2)
3.1.1 - Despesa Pessoal Fixa - 25,00 (= soma 1ª e 5ª lin tab EntDd)
3.1.2 - Despesa Pessoal Variavel - 20,00 (= 2ª lin tab Ent Dados)
3.2.0 - Despesa Outros - 40,00 (= 4ª linha da tabela Entrada) como esta conta tem valor, significa que não existe contas ligadas a ela, pois se houvesse, o valor atribuido a ela seria o somatório das contas ligadas a ela.

Desde já agradeço pela atenção.


Torres Delphi
   - 28 ago 2004

Primeiro de tudo, eu mudaria o nome das tabelas e dos campos. Vc deve criar seu padrao, mas sugiro seguir esta dica. O nome das colunas, identificam a qual tabela pertencem.
Para a tabela do plano de contas, vc poderia sua TAB_PLACTA, com os campos CTA_ID, CTA_COD e CTA_DESCR.
Utilize o CTA_ID, para relacionar com a tabela dos lancamentos contabeis (a q vc chama de entrada), pois se houver a necessidade de alterar o codigo da conta, vc nao tera problemas com os lancamentos q ja estao relacionados a ela. Esse conceito eh de normalizacao de tabelas, talvez vc ja tenha programado em Clipper ou qq outra linguagem DOS onde esses tipos de relacionamentos de campos eram largamente utilizados.
Para emitir o relatorio desejado, imagino q vc tem a necessidade de listar os resultados das contas por niveis, logo, o valor de 3, 3.1 e 3.2 sao diferentes, onde, o resultado do nivel 3 eh a somatoria de todas as contas que comecam com 3.
Minha dica, eh coluna um filtro antes da emissao do relatorio, onde o usuario coloca o nivel de contas q deseja ver, assim, vc pode dar um SUM qdo a conta o SUBSTRING (se estiver usando comandos SQL) da conta for de 1 ate o nivel informado.
Acho q eh isso...