REPORTVIEWER VIA CODIGO
Pessoal,
Eu estou querendo criar relatórios no reportviewer só que completamente via código. Eu até encontrei um código no site da Microsoft para gerar a consulta e criar o relatório, porém, como no corpo do report tem um tablix o mesmo exige que eu crie um dataset para associar ao controle. Ao tentar criar o dataset pede que eu crie um DataSource, tudo via Wizard. O projeto não compila por que não tem dataset e nem datasource associado. Enfim, existe alguma forma de construir e associar tudo via código??
Uso Visual Studio 2010 e não tenho a menor experiência com Reportviewer.
Eu estou querendo criar relatórios no reportviewer só que completamente via código. Eu até encontrei um código no site da Microsoft para gerar a consulta e criar o relatório, porém, como no corpo do report tem um tablix o mesmo exige que eu crie um dataset para associar ao controle. Ao tentar criar o dataset pede que eu crie um DataSource, tudo via Wizard. O projeto não compila por que não tem dataset e nem datasource associado. Enfim, existe alguma forma de construir e associar tudo via código??
Uso Visual Studio 2010 e não tenho a menor experiência com Reportviewer.
http://www.vbmania.com.br/pages/index.php?varModulo=Forum&varMethod=abrir&varID=386899
Pessoal,
Estou utilizando o seguinte código em um módulo para gerar o reportviewer
Dim USER As New ReportParameter([Ô]USEREP[Ô], USUARIO)
Dim RPV_RELATORIO As New ReportViewer
Dim RPTSOURCE As ReportDataSource
Dim STRPATH As String
STRPATH = [Ô][Ô]
RPV_RELATORIO = New ReportViewer
RPTSOURCE = New ReportDataSource([Ô]DtSub[Ô], DATASET_GLOBAL(SQL_RELATORIO, TABELA_RELATORIO))
STRPATH = Replace(Application.StartupPath, [Ô]\bin\Debug[Ô], [Ô]\[Ô])
With FRM_RELATORIO
With RPV_RELATORIO
Application.DoEvents()
[ô] Set Processing Mode
.ProcessingMode = ProcessingMode.Local
.Dock = DockStyle.Fill
.SetDisplayMode(DisplayMode.PrintLayout)
.ZoomMode = ZoomMode.PageWidth
With .LocalReport
[ô] Set RDL file
.ReportPath = STRPATH & [Ô]RPT_SUB.rdlc[Ô]
.DataSources.Add(RPTSOURCE)
.SetParameters(New ReportParameter() {USER})
End With
.RefreshReport()
.Visible = True
End With
With FRM_RELATORIO
.Controls.Add(RPV_RELATORIO)
End With
End With
Preencho um dataset que eu chamo de Global através do seguinte código
Dim DTS As New DataSet()
Dim COMAND As SQLiteCommand
Dim CARREGAR As SQLiteDataAdapter
CARREGAR = Nothing
If ABRIR_BANCO() = True Then
COMAND = New SQLiteCommand(SQL, Conexao)
CARREGAR = New SQLiteDataAdapter(COMAND)
End If
CARREGAR.Fill(DTS, T)
Return DTS.Tables(0)
Quando compilo o projeto e solicito o relatorio carrega normalmente com todos os dados. Resolvi aproveitar o codigo para criar um outro relatorio e mudei o nome do procedimento. Para minha surpresa quando eu chamo um relatório os dados são carregado normalmente. Quando eu chamo o outro relatório passando inclusive UMA NOVA SQL e uma nova tabela o retorno é o mesmo relatório chamado anteriormente. Aonde estou errando ?? Alguém poderia me dizer?
Obrigado desde já.
P.S: Este código é muito parecido com um tirado do gotreportviewer e do site da MSDN
Estou utilizando o seguinte código em um módulo para gerar o reportviewer
Dim USER As New ReportParameter([Ô]USEREP[Ô], USUARIO)
Dim RPV_RELATORIO As New ReportViewer
Dim RPTSOURCE As ReportDataSource
Dim STRPATH As String
STRPATH = [Ô][Ô]
RPV_RELATORIO = New ReportViewer
RPTSOURCE = New ReportDataSource([Ô]DtSub[Ô], DATASET_GLOBAL(SQL_RELATORIO, TABELA_RELATORIO))
STRPATH = Replace(Application.StartupPath, [Ô]\bin\Debug[Ô], [Ô]\[Ô])
With FRM_RELATORIO
With RPV_RELATORIO
Application.DoEvents()
[ô] Set Processing Mode
.ProcessingMode = ProcessingMode.Local
.Dock = DockStyle.Fill
.SetDisplayMode(DisplayMode.PrintLayout)
.ZoomMode = ZoomMode.PageWidth
With .LocalReport
[ô] Set RDL file
.ReportPath = STRPATH & [Ô]RPT_SUB.rdlc[Ô]
.DataSources.Add(RPTSOURCE)
.SetParameters(New ReportParameter() {USER})
End With
.RefreshReport()
.Visible = True
End With
With FRM_RELATORIO
.Controls.Add(RPV_RELATORIO)
End With
End With
Preencho um dataset que eu chamo de Global através do seguinte código
Dim DTS As New DataSet()
Dim COMAND As SQLiteCommand
Dim CARREGAR As SQLiteDataAdapter
CARREGAR = Nothing
If ABRIR_BANCO() = True Then
COMAND = New SQLiteCommand(SQL, Conexao)
CARREGAR = New SQLiteDataAdapter(COMAND)
End If
CARREGAR.Fill(DTS, T)
Return DTS.Tables(0)
Quando compilo o projeto e solicito o relatorio carrega normalmente com todos os dados. Resolvi aproveitar o codigo para criar um outro relatorio e mudei o nome do procedimento. Para minha surpresa quando eu chamo um relatório os dados são carregado normalmente. Quando eu chamo o outro relatório passando inclusive UMA NOVA SQL e uma nova tabela o retorno é o mesmo relatório chamado anteriormente. Aonde estou errando ?? Alguém poderia me dizer?
Obrigado desde já.
P.S: Este código é muito parecido com um tirado do gotreportviewer e do site da MSDN
Alguém???
Pessoal,
Acredito que tenha achado a solução. Pelo menos voltou a funcionar. Agradeço a todos pela atenção.
Caso haja problema de novo conto com a solidariedade de todos.
Obrigado.
Acredito que tenha achado a solução. Pelo menos voltou a funcionar. Agradeço a todos pela atenção.
Caso haja problema de novo conto com a solidariedade de todos.
Obrigado.
Tópico encerrado , respostas não são mais permitidas