Usuário com melhor resposta
ReportViewer com multiplas colunas

Pergunta
-
ReportViewer com multiplas colunas, para geração de etiquetas.
Já entrei no endereço:
http://www.xhydra.com/dotnet/multi-column-reports-reportviewer-reports.html
Segui a risca as instruções e, mesmo assim ele não gera as várias colunas que preciso, isso em webforms.
Um exemplo de que preciso:
Etiqueta 1 Etiqueta 2 Etiqueta 3
Nome 1 Nome 2 Nome 3
Endereço 1 Endereço 2 Endereço 3
E tem de ser em report viewer ordens de cima!!!!
Grato, desde já!
Respostas
-
Danilo,
Consegui resolver o problema da seguinte forma: Exportar o ReportViewer para PDF
Relatório com colunas "Etiquetas".
Descrição do problema:
Fiz um teste com a versão do ReportViewer para .NET 2005 e .NET 2008 e existe um problema na hora de fazer a "renderização" do ReportViewer para ASP.NET (conforme consta no meu primeiro post, esse erro não ocorre com uma aplicação Windows Forms".
Em anexo, um exemplo completo para resolver o problema em ASP.NET
* Só um detalhe: Adicicione os campos do ReportViewer dentro de um List (componente do ReportView).
Code Snippet'referências do banco de dados
Imports
System.Data.SqlClientImports
System.Data'referências do reportview
Imports
Microsoft.Reporting.WebForms'referência ConnectionStrings web.config
Imports
System.Web.Configuration.WebConfigurationManagerPrivate Sub ExportarPDF()
Dim strConexao As String = ConnectionStrings("AWorks").ConnectionString()
Dim oConn As New SqlConnection
Dim strSQL As New StringBuilder
Dim oTable As New DataTable()
Dim reportPath As String = Server.MapPath("~\Relatorios\ReportViewer\rdlEtiqueta.rdlc")
Dim rView As ReportViewer = New ReportViewer()
Try
'passar os dados para o relatório (datatable)
'abrindo conexão com o banco de dados
oConn.ConnectionString = strConexao
oConn.Open()
'carregando os dados
strSQL.Append(" SELECT ")
strSQL.Append(" Production.Product.ProductID, ")
strSQL.Append(" Production.Product.Name, ")
strSQL.Append(" Production.Product.Color, ")
strSQL.Append(" Production.Product.ListPrice, ")
strSQL.Append(" Production.ProductSubcategory.Name AS NameSubcategory ")
strSQL.Append(" FROM ")
strSQL.Append(" Production.Product INNER JOIN Production.ProductSubcategory ")
strSQL.Append(" ON Production.Product.ProductSubcategoryID = Production.ProductSubcategory.ProductSubcategoryID ")
Dim oDA As New SqlDataAdapter(strSQL.ToString, oConn)
oDA.Fill(oTable)
'informando os dados para o reportview
rView.LocalReport.DataSources.Add(New ReportDataSource("dsProduct", oTable))
rView.LocalReport.ReportPath = reportPath
'
'exportando os dados do relatório para PDF
'
Dim warn() As Warning = Nothing
Dim streamids() As String = Nothing
Dim mimeType As String = "application/pdf"
Dim encoding As String = String.Empty
Dim extension As String = String.Empty
Dim byteViewer() As Byte
byteViewer = rView.LocalReport.Render("pdf", Nothing, mimeType, encoding, extension, streamids, warn)
Response.Buffer = True
Response.Clear()
Response.ContentType = "application/pdf"
Response.AddHeader("content-disposition", "inline; filename=ReportName.pdf")
Response.BinaryWrite(byteViewer)
Response.Flush()
Response.End()
Catch ex As Exception
System.Diagnostics.Debug.WriteLine(ex.Message)
Finally
'liberando os objetos
oConn.Dispose()
oTable.Dispose()
rView.Dispose()
oConn = Nothing
oTable = Nothing
rView = Nothing
Response.Clear()
End Try
End Sub
Não esqueça de marca a mensagem como "útil", caso tenha ajudado. -
Todas as Respostas
-
Danilo,
No momento tenho apenas uma solução para Windows Forms:
Code SnippetReportViewer1.SetDisplayMode(DisplayMode.PrintLayout)
Com issos as colunas são "renderizadas" corretamente pelo reportviewer. Para ASP.NET não encontrei nenhum método parecido.
Um exemplo completo em VB.NET
Code SnippetPrivate Sub ListaProdutos()
Dim strConexao As String = My.Settings.AWorksLikeConnectionString.ToString
Dim oConn As New SqlCeConnection
Dim strSQL As New StringBuilder
Dim oTable As New DataTable()
Dim oCmd As SqlCeCommand = Nothing
Try '1 passo: carregar o relat¢rio Dim strPathreport As String = String.Concat(Application.StartupPath.ToString(), "\rdlProduto.rdlc")strPathreport = strPathreport.Replace(
"bin\Debug\", "")ReportViewer1.LocalReport.ReportPath = strPathreport
ReportViewer1.SetDisplayMode(DisplayMode.PrintLayout)
oConn.ConnectionString = strConexao
oConn.Open()
'definindo o SQL do relat¢riostrSQL.Append(
" SELECT IDProduto, NomProduto FROM Produtos ")oCmd =
New SqlCeCommand(strSQL.ToString, oConn)oCmd.CommandText = strSQL.ToString
oCmd.CommandType = CommandType.Text
'executando o SQLCommand Dim oDataReader As SqlCeDataReader = oCmd.ExecuteReader(CommandBehavior.CloseConnection) 'converter o DataReader para DataTableoTable.Load(oDataReader)
'definindo o DataSource do relat¢rio Dim myReportDataSource As ReportDataSource = New ReportDataSource("dsProduto", oTable)ReportViewer1.LocalReport.DataSources.Add(myReportDataSource)
Catch ex As ExceptionSystem.Diagnostics.Debug.WriteLine(ex.Message)
Finally 'liberando os objetosoConn.Dispose()
oTable.Dispose()
oConn =
NothingoTable =
Nothing End Try -
Danilo,
Consegui resolver o problema da seguinte forma: Exportar o ReportViewer para PDF
Relatório com colunas "Etiquetas".
Descrição do problema:
Fiz um teste com a versão do ReportViewer para .NET 2005 e .NET 2008 e existe um problema na hora de fazer a "renderização" do ReportViewer para ASP.NET (conforme consta no meu primeiro post, esse erro não ocorre com uma aplicação Windows Forms".
Em anexo, um exemplo completo para resolver o problema em ASP.NET
* Só um detalhe: Adicicione os campos do ReportViewer dentro de um List (componente do ReportView).
Code Snippet'referências do banco de dados
Imports
System.Data.SqlClientImports
System.Data'referências do reportview
Imports
Microsoft.Reporting.WebForms'referência ConnectionStrings web.config
Imports
System.Web.Configuration.WebConfigurationManagerPrivate Sub ExportarPDF()
Dim strConexao As String = ConnectionStrings("AWorks").ConnectionString()
Dim oConn As New SqlConnection
Dim strSQL As New StringBuilder
Dim oTable As New DataTable()
Dim reportPath As String = Server.MapPath("~\Relatorios\ReportViewer\rdlEtiqueta.rdlc")
Dim rView As ReportViewer = New ReportViewer()
Try
'passar os dados para o relatório (datatable)
'abrindo conexão com o banco de dados
oConn.ConnectionString = strConexao
oConn.Open()
'carregando os dados
strSQL.Append(" SELECT ")
strSQL.Append(" Production.Product.ProductID, ")
strSQL.Append(" Production.Product.Name, ")
strSQL.Append(" Production.Product.Color, ")
strSQL.Append(" Production.Product.ListPrice, ")
strSQL.Append(" Production.ProductSubcategory.Name AS NameSubcategory ")
strSQL.Append(" FROM ")
strSQL.Append(" Production.Product INNER JOIN Production.ProductSubcategory ")
strSQL.Append(" ON Production.Product.ProductSubcategoryID = Production.ProductSubcategory.ProductSubcategoryID ")
Dim oDA As New SqlDataAdapter(strSQL.ToString, oConn)
oDA.Fill(oTable)
'informando os dados para o reportview
rView.LocalReport.DataSources.Add(New ReportDataSource("dsProduct", oTable))
rView.LocalReport.ReportPath = reportPath
'
'exportando os dados do relatório para PDF
'
Dim warn() As Warning = Nothing
Dim streamids() As String = Nothing
Dim mimeType As String = "application/pdf"
Dim encoding As String = String.Empty
Dim extension As String = String.Empty
Dim byteViewer() As Byte
byteViewer = rView.LocalReport.Render("pdf", Nothing, mimeType, encoding, extension, streamids, warn)
Response.Buffer = True
Response.Clear()
Response.ContentType = "application/pdf"
Response.AddHeader("content-disposition", "inline; filename=ReportName.pdf")
Response.BinaryWrite(byteViewer)
Response.Flush()
Response.End()
Catch ex As Exception
System.Diagnostics.Debug.WriteLine(ex.Message)
Finally
'liberando os objetos
oConn.Dispose()
oTable.Dispose()
rView.Dispose()
oConn = Nothing
oTable = Nothing
rView = Nothing
Response.Clear()
End Try
End Sub
Não esqueça de marca a mensagem como "útil", caso tenha ajudado. -
-