Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Fernando Signoretto

Quebrar registros do datareader por categoria de produtos!!

Recommended Posts

Ae pessoal, beleza?!

 

Sou novato em ASP.NET, tava fuçando aqui e queria criar um relatório de uma tabela simples. Pesquisei na net e achei uma classe report generator no site http://www.eoliv.com/index.php?o=2&s=3

 

Consegui rodar perfeitamente o relatório, criei uma tabela de produtos com os campos: codigo, descricao, categoria, valor.

 

Para testar a soma de totais eu somei todos os valores dos produtos e imprimi no fim do relatório, funcionou mto bem tb, mas agora eu gostaria de quebrar por categoria e imprimir um sub-total cada vez q passar o último registro de uma determinada categoria.

 

Eu trabalhava com a linguagem Progress e nela eu dava um break by no for each da tabela e fazia if last-of (categoria) then. Gostaria de saber se tem alguma função do tipo last-of para o datareader q eu uso para carregar o meu relatório.

 

Segue abaixo o código do meu relatório:

 

Dim r As New Reportr.CompanyName = "Company Name"r.Title = "Produtos"r.Orientation = Orientation.Verticalr.FontSize = 10r.Preview = Truer.AddColum("Código", 200)r.AddColum("Descrição", 200)r.AddColum("Categoria", 200)r.AddColum("Valor")dim totalGeral as decimalDim strConn As String = ConfigurationManager.AppSettings("connectionapont")Dim conexao As FbConnection = New FbConnection(strConn)Dim strSql As String = "select * from produtos"Dim cmd As New FbCommand(strSql, conexao)Dim dr As FbDataReaderconexao.Open()dr = cmd.ExecuteReader()With dr  Do While .Read() And Not r.Cancel    r.Detail(0).Text = .Item(0)    r.Detail(0).Border = Report.BorderSide.All    r.Detail(0).Text = .Item(1)    r.Detail(0).Border = Report.BorderSide.All    r.Detail(0).Text = .Item(2)    r.Detail(0).Border = Report.BorderSide.All    r.Detail(0).Text = .Item(3)    r.Detail(0).Border = Report.BorderSide.All    r.PrintDetail()    totalGeral += .Item(3)  Loopend withr.Detail(2).Text = "TOTAL:"r.Detail(2).Border = Report.BorderSide.Allr.Detail(2).BackColor = Drawing.Color.Silverr.Detail(2).Bold = Truer.Detail(3).Text = Format(totalGeral, "##0.00")r.Detail(3).Alignment = Drawing.StringAlignment.Centerr.Detail(3).Border = Report.BorderSide.Allr.Detail(3).BackColor = Drawing.Color.Silverr.Detail(3).Bold = Truer.Close()
Gostaria de saber se com o datareader eu consigo fazer essa quebra por categoria, ou se precisaria usar um objeto mais completo tipo o dataset!

 

Todo mundo q eu perguntei falou pra eu fazer algo simples, usar gridview q facilitaria. Mas eu gostaria de saber como quebrar usando esse tipo de relatório, só por questões didáticas mesmo.

 

Agradeço desde já! http://forum.imasters.com.br/public/style_emoticons/default/grin.gif

Fernando

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.