Jump to content

Resultados não organizados como pretendido


carlos_j
 Share

Go to solution Solved by Rechousa,

Recommended Posts

Boas pessoal.

Tenho na minha base de dados uma tabela dedicada ao controlo financeiro, onde guardo todos os movimentos efectuados. Até aqui tudo bem.

O problema surge quando faço uma pesquisa ordenada pelo campo data. Quando tenho mais de que um movimento registado no mesmo dia, a consulta em vez de me ordenar os resultados do primeiro para o último, ordena-me ao contrário, com o mais recente a aparecer primeiro, o que me causará um problema com o saldo da conta.

select * from finanças order by data

10pvrxj.jpg

Link to comment
Share on other sites

  • Solution

Viva,

Será que não queres ordenar antes pelo idMovimento?

SELECT * FROM finanças ORDER BY idMovimento ASC

ou então, para além da data, teres uma segunda ordem que seria o id do Movimento:

Será que não queres ordenar antes pelo idMovimento?

SELECT * FROM finanças ORDER BY data ASC, idMovimento ASC

Espero ter ajudado.

Pedro Martins

Sharing is Knowledge!

http://www.linkedin.com/in/rechousa

Link to comment
Share on other sites

Viva,

Será que não queres ordenar antes pelo idMovimento?

SELECT * FROM finançAS ORDER BY DATA ASC, idMovimento ASC

Espero ter ajudado.

Tenho de organizar pela data, porque essa consulta vai dar origem a um relátorio de contas.

Mas era mesmo isso que precisava, já funciona como pretendo, muito obrigado pela ajuda.

Edited by carlos_j
Link to comment
Share on other sites

Carlos,

É impressao minha ou tambem estas a guardar na tabela o calculo ( campo saldo)

Se assim for acho que nao o devias fazer, os calculos podes fazer na apresentaçao dos dados no relatorio.

E porque nao criar um campo debito e outro, credito na tabela, para permitir o sistema de contabilidade "double entry". em vez de tipo(despesa e receita).

Sao so sugestoes

Link to comment
Share on other sites

Olá,

Compreendo a opção tomada ao criar o campo saldo, senão vejamos este cenário:

Imaginando que existe uma funcionalidade para fazer pesquisa / filtro dos movimentos mediante um texto introduzido (ou até para um intervalo de de datas) e o utilizador pesquisa pelo texto "Material". Pela tua ordem de ideias ou não iria aparecer o campo saldo ou o algoritmo de cálculo teria de seria complexo para calcular o saldo para cada movimento desde o início e apresentar apenas os dados referentes à pesquisa que o utilizador pretende visualizar. Não é impossível, mas concerteza que será complexa e com elevado custo de performance. Além de que o saldo (em determinada data) não varia com o tempo. Se a 10 de Fevereiro de 2010 determinado utilizador tinha 100 euros na conta, daqui a 20 anos ao consultar o saldo de 10 de Fevereiro de 2010 o mesmo utilizador terá de ter o mesmo valor em conta. Daí, compreender em armazenar o valor num campo.

A outra questão (campos débito e crédito) sim, poderá fazer sentido, contudo estás a duplicar o número de colunas para armazenar um valor e ele concerteza que precisará do campo TIPO para armazenar e apresentar aos utilizadores o tipo de movimento (que poderá ter mais categorias do que receita e despesa).

Pedro Martins

Sharing is Knowledge!

http://www.linkedin.com/in/rechousa

Link to comment
Share on other sites

Ola a Todos,

"Calculated fields belong in queries not tables"

http://allenbrowne.com/casu-14.html

"Quando tenho mais de que um movimento registado no mesmo dia, a consulta em vez de me ordenar os resultados do primeiro para o último, ordena-me ao contrário, com o mais recente a aparecer primeiro, o que me causará um problema com o saldo da conta."

Este problema deixara de existir se nao armazenares o saldo, e se este for calculado.

E se te aparecer um documento de 20/12/2012, com se havia perdido , como vai ficar o saldo ? ou se tiveres de modificar algum registo por engano

Carlos

Link to comment
Share on other sites

Olá,

"Calculated fields belong in queries not tables"

http://allenbrowne.com/casu-14.html

Estou de acordo, desde que os campos calculados sejam referentes apenas ao próprio registo e, se vires o exemplo que colocaste, dás-me razão (Amount: [Quantity] * [unitPrice]).

Porém, aqui o cenário é diferente, já que o valor do saldo atual corresponde ao saldo anterior + entradas - saídas - neste caso o valor do saldo anterior está noutro registo e não no próprio, certo?

"Quando tenho mais de que um movimento registado no mesmo dia, a consulta em vez de me ordenar os resultados do primeiro para o último, ordena-me ao contrário, com o mais recente a aparecer primeiro, o que me causará um problema com o saldo da conta."

Certamente a ordem pela qual os registos foram inseridos é diferente da ordem pela qual estão a ser visualizados, ou houve algum erro, porque caso contrário isso não aconteceria.

E se te aparecer um documento de 20/12/2012, com se havia perdido , como vai ficar o saldo ? ou se tiveres de modificar algum registo por engano

Não conheço o âmbito da aplicação, mas quando pensei em saldos veio-me logo à cabeça extratos bancários em que não é possível modificar registos. Em caso de necessidade, é sempre possível recalcular os saldos - processo esse que se realiza apenas uma vez e os dados ficam imediatamente disponíveis para consulta, enquanto que pelo teu cenário, em qualquer consulta aos movimentos o saldo teria de ser sempre recalculado).

Pedro Martins

Sharing is Knowledge!

http://www.linkedin.com/in/rechousa

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.