Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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
Carregando comentários...