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.
Código (vb.net):
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
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.
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.
Código (vb.net):
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
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.