DATASET
QUERO GERAR UM RELATORIO APARTIR DO REPOTVIWER COM VISUAL STUDIO 2008, SEI QUEM TEM QUE CRIAR UM DATASET, SO EU USO O BANCO DE DADOS DO ACCESS, ALGUEM PODE ME DA UMA LUZ?
Se for criar um DataSet botao direito > Add New Item > Data > DataSet..
Exemplo em Sql Server porém não muda muito pro Acess
Dim sConnectionString As String
sConnectionString = [Ô]Password=<strong password>;User ID=<username>;[Ô] & _
[Ô]Initial Catalog=pubs;[Ô] & _
[Ô]Data Source=(local)[Ô]
Dim objConn As New SqlConnection(sConnectionString)
objConn.Open()
Dim daAuthors As _
New SqlDataAdapter([Ô]Select * From Authors[Ô], objConn)
Dim dsPubs As New DataSet([Ô]Pubs[Ô])
daAuthors.FillSchema(dsPubs, SchemaType.Source, [Ô]Authors[Ô])
daAuthors.Fill(dsPubs, [Ô]Authors[Ô])
Dim tblAuthors As DataTable
tblAuthors = dsPubs.Tables([Ô]Authors[Ô])
Dim drCurrent As DataRow
For Each drCurrent In tblAuthors.Rows
Console.WriteLine([Ô]{0} {1}[Ô], _
drCurrent([Ô]au_fname[Ô]).ToString, _
drCurrent([Ô]au_lname[Ô]).ToString)
Next
O Fill preenche o DataSet com os dados da Sql Query.. é bem simples ja fiz com MySql..
Caso for um relatório que pode ter mudança FUJA do DATASET e utilize List ou Parametros via SQL Query..
Abraços!
Public Class SuaClasse
Public Property Campo1 As String
Public Property Campo2 As String
Public Property Campo3 As Integer
Public Property Data As Date
End Class
entao uso uma string SQL pra consulta e faço as conexoes:
lembrando que StrRelat deve ser uma variavel publica
StrRelat = [Ô]SELECT * FROM SuaTabela WHERE SuaCondicao[Ô]
e chamo o form onde esta o componente de exibicao de relatorio:
código no form do relatorio:
Imports System.Data.OleDb
Imports Microsoft.Reporting.WinForms
Public Class FrmRelatorio
Dim DtTb As New DataTable
Dim ds As New DataSet
Private Sub FrmRelatorio_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim ReportData As New Microsoft.Reporting.WinForms.ReportDataSource
GerarRelatorio()
ReportData.Name = [Ô]DsRelatorio[Ô] [ô] Esse é o dataset do relatorio
ReportData.Value = DtTb
With Me.RpwMostra.LocalReport
[ô]linha para teste
.ReportPath = Application.StartupPath & [Ô]\..\..\RptMeuRelatorio.rdlc[Ô]
[ô]linha para programa instalado
[ô].ReportPath = Application.StartupPath & [Ô]\RptMeuRelatorio.rdlc[Ô]
.DataSources.Clear()
End With
Me.RpwMostra.LocalReport.DataSources.Add(ReportData)
Me.RpwMostra.RefreshReport()
End Sub
Private Sub GerarRelatorio()
DaFunc = New OleDbDataAdapter(StrRelat, Conexao)
DaFunc.Fill(DtTb)
DaFunc.Fill(ds, StrRelat)
DtTb = ds.Tables(0)
End Sub
End Class
Citação::
Se for um relatório que não for mudar e sempre for o mesmo utilize DataSet..
Se for criar um DataSet botao direito > Add New Item > Data > DataSet..
Exemplo em Sql Server porém não muda muito pro AcessDim sConnectionString As String
sConnectionString = [Ô]Password=<strong password>;User ID=<username>;[Ô] & _
[Ô]Initial Catalog=pubs;[Ô] & _
[Ô]Data Source=(local)[Ô]
Dim objConn As New SqlConnection(sConnectionString)
objConn.Open()
Dim daAuthors As _
New SqlDataAdapter([Ô]Select * From Authors[Ô], objConn)
Dim dsPubs As New DataSet([Ô]Pubs[Ô])
daAuthors.FillSchema(dsPubs, SchemaType.Source, [Ô]Authors[Ô])
daAuthors.Fill(dsPubs, [Ô]Authors[Ô])
Dim tblAuthors As DataTable
tblAuthors = dsPubs.Tables([Ô]Authors[Ô])
Dim drCurrent As DataRow
For Each drCurrent In tblAuthors.Rows
Console.WriteLine([Ô]{0} {1}[Ô], _
drCurrent([Ô]au_fname[Ô]).ToString, _
drCurrent([Ô]au_lname[Ô]).ToString)
Next
O Fill preenche o DataSet com os dados da Sql Query.. é bem simples ja fiz com MySql..
Caso for um relatório que pode ter mudança FUJA do DATASET e utilize List ou Parametros via SQL Query..
Abraços!
Citação::
quando usava o reportviewer (Agora faco na mao, kkk) o dataset eu setava numa classe com os objetos iguais ao da tabela ou consulta:
Public Class SuaClasse
Public Property Campo1 As String
Public Property Campo2 As String
Public Property Campo3 As Integer
Public Property Data As Date
End Class
entao uso uma string SQL pra consulta e faço as conexoes:
lembrando que StrRelat deve ser uma variavel publica
StrRelat = [Ô]SELECT * FROM SuaTabela WHERE SuaCondicao[Ô]
e chamo o form onde esta o componente de exibicao de relatorio:
código no form do relatorio:
Imports System.Data.OleDb
Imports Microsoft.Reporting.WinForms
Public Class FrmRelatorio
Dim DtTb As New DataTable
Dim ds As New DataSet
Private Sub FrmRelatorio_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim ReportData As New Microsoft.Reporting.WinForms.ReportDataSource
GerarRelatorio()
ReportData.Name = [Ô]DsRelatorio[Ô] [ô] Esse é o dataset do relatorio
ReportData.Value = DtTb
With Me.RpwMostra.LocalReport
[ô]linha para teste
.ReportPath = Application.StartupPath & [Ô]....RptMeuRelatorio.rdlc[Ô]
[ô]linha para programa instalado
[ô].ReportPath = Application.StartupPath & [Ô]RptMeuRelatorio.rdlc[Ô]
.DataSources.Clear()
End With
Me.RpwMostra.LocalReport.DataSources.Add(ReportData)
Me.RpwMostra.RefreshReport()
End Sub
Private Sub GerarRelatorio()
DaFunc = New OleDbDataAdapter(StrRelat, Conexao)
DaFunc.Fill(DtTb)
DaFunc.Fill(ds, StrRelat)
DtTb = ds.Tables(0)
End Sub
End Class
CARO DAMASCENO, BLZ FUNCIONOU ESTE CODIGO, MAS PARA FORMATAR O REPORTVIEWER EM PAPAEL A4 OU OFICIO VIA CODIGO COMO EU FAÇO?