Cerzedelo Posted May 2, 2012 at 06:59 AM Report #452597 Posted May 2, 2012 at 06:59 AM Apesar de vosso leitor há algum tempo, é a primeira vez que participo no fórum, e quero endereçar cumprimentos a todos os que colaboram para a existência deste fórum. A minha dúvida é a seguinte: Desenvolvi uma aplicação em VB .net com ligação a uma base de dados SqlCe. Para poder imprimir os relatórios com os registos das tabelas da base de dados, recorri ao método do printdocument. Os relatórios estão ok e a impressão também ok. O problema reside no facto de pretender que me apareça, numa coluna de nome preço, o soma (o total) do preço de todos os registos. linhasporpagina = CInt(e.MarginBounds.Height / fontenormal.GetHeight(e.Graphics) - 10) While (linhaactual < linhasporpagina AndAlso reader.Read()) id = reader.GetInt32(0) nome = reader.GetString(1) descricao = reader.GetString(2) data = reader.GetDateTime(3) preco = Format(reader.GetValue(4), "#.##") posicaodalinha = margemsuperior + (linhaactual * fontenormal.GetHeight(e.Graphics)) e.Graphics.DrawString(id.ToString, fontenormal, Brushes.Black, margemesquerda + 10, posicaodalinha, New StringFormat) e.Graphics.DrawString(nome.ToString, fontenormal, Brushes.Black, margemesquerda + 50, posicaodalinha, New StringFormat) e.Graphics.DrawString(descricao.ToString, fontenormal, Brushes.Black, margemesquerda + 350, posicaodalinha, New StringFormat) e.Graphics.DrawString(data.Date, fontenormal, Brushes.Black, margemesquerda + 730, posicaodalinha, New StringFormat) e.Graphics.DrawString(preco.ToString, fontenormal, Brushes.Black, margemesquerda + 920, posicaodalinha, drawformat) linhaactual += 1 total += preco End While e.Graphics.DrawString(" Total : " & total, fontenormal, Brushes.Black, margemesquerda + 924, posicaodalinha + fontenormal.GetHeight(e.Graphics), drawformat) e.Graphics.DrawLine(caneta, margemesquerda, margeminferior, margemdireita, margeminferior) e.Graphics.DrawString(System.DateTime.Now.ToString, fonterodape, Brushes.Black, margemesquerda, margeminferior, New StringFormat) linhaactual += CInt(fontenormal.GetHeight(e.Graphics)) linhaactual += 1 e.Graphics.DrawString("Página: " & paginaactual, fonterodape, Brushes.Black, margemdireita - 50, margeminferior, New StringFormat()) paginaactual += 1 total1 += total If (linhaactual > linhasporpagina) Then e.HasMorePages = True Else e.HasMorePages = False End If Até ao momento o que consegui, foi que o programa me apresentasse o total por cada uma das páginas, mas o que pretendo é que na última página, me apresente o total do preço (todos os registos) de todas as páginas, i.e. o grand total. Desde já agradeço, ideias para eventuais soluções para o problema. Obg.
Cerzedelo Posted May 5, 2012 at 06:04 PM Author Report #453317 Posted May 5, 2012 at 06:04 PM Já consegui resolver o problema. A solução é no evento endprint passar a variável total de uma página, para depois no evento da outra página, fazer o somatório. Podem encerrar o tópico
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