carlos_j Posted November 29, 2012 Report Share Posted November 29, 2012 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 Link to comment Share on other sites More sharing options...
Solution Rechousa Posted November 29, 2012 Solution Report Share Posted November 29, 2012 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 More sharing options...
carlos_j Posted November 29, 2012 Author Report Share Posted November 29, 2012 (edited) 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 November 29, 2012 by carlos_j Link to comment Share on other sites More sharing options...
ccc Posted July 5, 2013 Report Share Posted July 5, 2013 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 More sharing options...
Rechousa Posted July 5, 2013 Report Share Posted July 5, 2013 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 More sharing options...
ccc Posted July 6, 2013 Report Share Posted July 6, 2013 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 More sharing options...
Rechousa Posted July 6, 2013 Report Share Posted July 6, 2013 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 More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now