Usuário com melhor resposta
ReportView

Pergunta
-
Pessoal me ajudem,
{
clpFiliais ado = new clpFiliais(); DataTable fil = ado.ListaFiliais(); if (fil.Rows.Count > 0){
rpvFiliais.LocalReport.ReportPath =
"clInterface\\Reports\\rpFiliais.rdlc";rpvFiliais.LocalReport.DataSources.Clear();
dgv.DataSource = fil;
ReportDataSource myReport = new ReportDataSource("dsFiliais", fil);rpvFiliais.LocalReport.DataSources.Add(myReport);
}
}
pq meu relatorio não executa?
Att,
Respostas
-
Opa!
Em C# fica assim:
Code Snippetstring
strReportPath = Application.ExecutablePath;strReportPath = string.Concat(strReportPath.Replace("\\bin\\Debug", ""), \\CrystalReports\\rptProdutos.rpt);
Exemplo completo com reportview em VB.NET:
Code Snippet'referências do banco de dados
Imports
System.Data.SqlClientImports
System.DataImports
System.Text 'StringBuilder'referências do reportview
Imports
Microsoft.Reporting.WinForms'referências ConnectionStrings app.config
Imports
System.ConfigurationPrivate Sub ListaProdutos()
Dim strConexao As String = My.Settings("AWorks").ToString
Dim oConn As New SqlConnection
Dim strSQL As New StringBuilder
Dim oTable As New DataTable()
Dim oCmd As SqlCommand = Nothing
Dim strReportPath As String = ""
Try
'1 passo: carregar o relat¢rio
strReportPath = String.Concat(Replace(My.Application.Info.DirectoryPath(), "\bin\Debug", ""), "\Relatorios\rdlProdutos.rdlc")
rvPrintPreview.LocalReport.ReportPath = strReportPath
'2 passo: passar os dados para o relat¢rio
'abrindo conexÆo com o banco de dados
oConn.ConnectionString = strConexao
oConn.Open()
'definindo o SQL do relat¢rio
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.ProductCategory.Name AS NameCategory")
strSQL.Append(" FROM Production.Product")
strSQL.Append(" INNER JOIN Production.ProductSubcategory")
strSQL.Append(" ON Production.Product.ProductSubcategoryID = Production.ProductSubcategory.ProductSubcategoryID")
strSQL.Append(" INNER JOIN Production.ProductCategory")
strSQL.Append(" ON Production.ProductSubcategory.ProductCategoryID = Production.ProductCategory.ProductCategoryID")
strSQL.Append(" WHERE Production.Product.Color = @Color ")
oCmd = New SqlCommand(strSQL.ToString, oConn)
oCmd.CommandText = strSQL.ToString
oCmd.CommandType = CommandType.Text
'definindo o parametro do SQL
oCmd.Parameters.Add(New SqlParameter("@Color", SqlDbType.Char)).Value = "Red"
'executando o SQLCommand
Dim oDataReader As SqlDataReader = oCmd.ExecuteReader(CommandBehavior.CloseConnection)
'converter o DataReader para DataTable
oTable.Load(oDataReader)
'definindo o DataSource do relat¢rio
Dim myReportDataSource As ReportDataSource = New ReportDataSource("dsProduct", oTable)
rvPrintPreview.LocalReport.DataSources.Add(myReportDataSource)
Catch ex As Exception
System.Diagnostics.Debug.WriteLine(ex.Message)
Finally
'liberando os objetos
oConn.Dispose()
oTable.Dispose()
oConn = Nothing
oTable = Nothing
End Try
End Sub
Ajude a melhorar o nosso Fórum!
Não esqueça de marca a mensagem como "útil", caso tenha ajudado.
Todas as Respostas
-
MOF,
Só com esse pedaço de código fica ruim analisar (acho que está faltando a parte de visualização do relatório pelo componente reportview), Neste caso, vou postar um exemplo completo em C# de como carregar um relatório com reportview
Code Snippet//referências do banco de dados
using System.Data.SqlClient;
using System.Data;//referências do crystal reports
using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.Shared;//referência ConnectionStrings web.config
using System.Web.Configuration.WebConfigurationManager;private void ListaProdutos()
{
ReportDocument crReportDocument = new ReportDocument();
string strConexao = ConnectionStrings("AWorks").ConnectionString();
SqlConnection oConn = new SqlConnection();
StringBuilder strSQL = new StringBuilder();
DataTable oTable = new DataTable();
try {
//1 passo: carregar o relatório
string strPathreport = Server.MapPath("~\\Relatorios\\CrystalReports\\rptProdutos.rpt");
crReportDocument.Load(strPathreport);
//configurando para impressão em Landscape
//crReportDocument.PrintOptions.PaperOrientation = PaperOrientation.Landscape
//2 passo: 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 ");
SqlDataAdapter oDA = new SqlDataAdapter(strSQL.ToString, oConn);
oDA.Fill(oTable);
//definindo o DataSource do relatório
crReportDocument.SetDataSource(oTable);
//visualizando o relatório
crPrintPreview.DisplayGroupTree = false;
crPrintPreview.HasCrystalLogo = false;
crPrintPreview.ReportSource = crReportDocument;
}
catch (Exception ex) {
System.Diagnostics.Debug.WriteLine(ex.Message);
}
finally {
//liberando os objetos
oConn.Dispose();
oTable.Dispose();
oConn = null;
oTable = null;
}
}
Ajude a melhorar o nosso Fórum!
Não esqueça de marca a mensagem como "útil", caso tenha ajudado. -
Massa, deu uma luz.
Na verdade eu tinha esquecido de colocar o listafiliais() no load do relatorio.hehehe
neste exemplo que voce esta me mandando é pra crystal e web não?
como faco este mesmo exemplo para reportview e windows form.
como faco este comando para windows form:
string strPathreport = Server.MapPath("~\\Relatorios\\CrystalReports\\rptProdutos.rpt");
Parabens, mais uma vez você me da uma ajuda e tanto.
Obrigado.
-
Opa!
Em C# fica assim:
Code Snippetstring
strReportPath = Application.ExecutablePath;strReportPath = string.Concat(strReportPath.Replace("\\bin\\Debug", ""), \\CrystalReports\\rptProdutos.rpt);
Exemplo completo com reportview em VB.NET:
Code Snippet'referências do banco de dados
Imports
System.Data.SqlClientImports
System.DataImports
System.Text 'StringBuilder'referências do reportview
Imports
Microsoft.Reporting.WinForms'referências ConnectionStrings app.config
Imports
System.ConfigurationPrivate Sub ListaProdutos()
Dim strConexao As String = My.Settings("AWorks").ToString
Dim oConn As New SqlConnection
Dim strSQL As New StringBuilder
Dim oTable As New DataTable()
Dim oCmd As SqlCommand = Nothing
Dim strReportPath As String = ""
Try
'1 passo: carregar o relat¢rio
strReportPath = String.Concat(Replace(My.Application.Info.DirectoryPath(), "\bin\Debug", ""), "\Relatorios\rdlProdutos.rdlc")
rvPrintPreview.LocalReport.ReportPath = strReportPath
'2 passo: passar os dados para o relat¢rio
'abrindo conexÆo com o banco de dados
oConn.ConnectionString = strConexao
oConn.Open()
'definindo o SQL do relat¢rio
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.ProductCategory.Name AS NameCategory")
strSQL.Append(" FROM Production.Product")
strSQL.Append(" INNER JOIN Production.ProductSubcategory")
strSQL.Append(" ON Production.Product.ProductSubcategoryID = Production.ProductSubcategory.ProductSubcategoryID")
strSQL.Append(" INNER JOIN Production.ProductCategory")
strSQL.Append(" ON Production.ProductSubcategory.ProductCategoryID = Production.ProductCategory.ProductCategoryID")
strSQL.Append(" WHERE Production.Product.Color = @Color ")
oCmd = New SqlCommand(strSQL.ToString, oConn)
oCmd.CommandText = strSQL.ToString
oCmd.CommandType = CommandType.Text
'definindo o parametro do SQL
oCmd.Parameters.Add(New SqlParameter("@Color", SqlDbType.Char)).Value = "Red"
'executando o SQLCommand
Dim oDataReader As SqlDataReader = oCmd.ExecuteReader(CommandBehavior.CloseConnection)
'converter o DataReader para DataTable
oTable.Load(oDataReader)
'definindo o DataSource do relat¢rio
Dim myReportDataSource As ReportDataSource = New ReportDataSource("dsProduct", oTable)
rvPrintPreview.LocalReport.DataSources.Add(myReportDataSource)
Catch ex As Exception
System.Diagnostics.Debug.WriteLine(ex.Message)
Finally
'liberando os objetos
oConn.Dispose()
oTable.Dispose()
oConn = Nothing
oTable = Nothing
End Try
End Sub
Ajude a melhorar o nosso Fórum!
Não esqueça de marca a mensagem como "útil", caso tenha ajudado.