Caulfield 0 Denunciar post Postado Janeiro 28, 2011 E ae galera, beleza? Bom... é o seguinte... estou criando uma aplicação que vai inserir dados relacionados em 5 tabelas do SQL Server. Meu problema é para exibir os dados no relatório no CrystalReport. Eu até consigo exibir os dados que eu quero e tudo, mas acontece que eu quero exibir em grupos... ou seja, cada tabela no seu grupo. Parece bem simples (e talvez seja mesmo e eu não sei), mas por exemplo na Tabela principal, que gera a ordem de serviço tem o campo OrderId e eu só posso incluir uma OS com esse número... até ai beleza. Só que na tabela Produtos, pode haver um só ou mais itens... e isso também vale para a tabela de cartão e cores. Ou seja... alguém ai sabe se tem como exibir cada tabela no seu grupo? Eu estava tentando fazer com o código abaixo: Public Sub CarrRelTabOrdemServico() Dim Sql As String Dim myConnection = New SqlConnection("Data Source=PREPRESS;Initial Catalog=MyDB;User Id=sa;Password=Drupa2000;") Dim SelTabOrdemServico, SelItensOS As SqlDataAdapter Dim DS = New DataSet myConnection.Open() Sql = "SELECT * FROM TabOrdemServico WHERE OrderId = '" & OSSelecionada & "'" SelTabOrdemServico = New SqlDataAdapter(Sql, myConnection) DS = New DataSet SelTabOrdemServico.Fill(DS, "TabOrdemServico") Sql = "SELECT * FROM TabItensOS WHERE OrderId = '" & OSSelecionada & "'" SelItensOS = New SqlDataAdapter(Sql, myConnection) SelItensOS.Fill(DS, "TabItensOS") Dim rpt As New Relatorio rpt.SetDataSource(DS) CrystalReportViewer1.ReportSource = rpt myConnection.Close() myConnection.Dispose() myConnection = Nothing SelTabOrdemServico.Dispose() SelItensOS.Dispose() DS.Dispose() End Sub Ele funciona bem... só que... Valeu. Galera se tiver como fazer isso de outro jeito, qualquer coisa... Eu tô tentando fazer com o ReportViewer também... mas quando por exemplo eu tenho 3 itens para uma ordem de serviço, aparece as informações da Tabela Ordem de serviço 3 vezes... e eu queria que aparecesse somente uma vez. Compartilhar este post Link para o post Compartilhar em outros sites
Caulfield 0 Denunciar post Postado Janeiro 29, 2011 Consegui o que eu queria com o MicrosoftReportViewer. Era só criar as tabelas necessárias dentro do Report dentro do list. Vi uns vídeos no Youtube que me ajudaram. Valeu. Compartilhar este post Link para o post Compartilhar em outros sites
Caulfield 0 Denunciar post Postado Janeiro 30, 2011 Galera eu achei que tinha conseguido mas não deu certo. Então fiz uma imagem de como eu quero gerar o relatório http://img713.imageshack.us/img713/1541/relatorio.jpg Cada um dos DataGridView é uma tabela e os campos OrderId e Cliente é outra. Com eu já havia dito os dados de produtos e acabamentos podem variar. Quando eu faço pelo ReportViewer ele coloca o cada acabamento para cada produto e isso tá errado. Os acabamentos fazer parte da OS como um todo. Compartilhar este post Link para o post Compartilhar em outros sites
Caulfield 0 Denunciar post Postado Fevereiro 2, 2011 Consegui resolver com o ReportViewer e SubReports Segue o código... PS: Se algum moderador puder mudar o nome do tópico seria bom. Imports System.Data.SqlClient Imports Microsoft.Reporting.WinForms Public Class Form1 Dim OsSelecionada As String Dim connString As String = "Data Source=PREPRESS;Initial Catalog=Testes;User Id=sa;Password=Drupa2000;" Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load OsSelecionada = InputBox("Digite Os") Try With Me.ReportViewer1.LocalReport ' Caminho para o relatório .ReportPath = Application.StartupPath & "\..\..\Report1.rdlc" .DataSources.Clear() End With ' ---------------------------------------------------- ' Datasource para o relatório principal ' ---------------------------------------------------- Dim SQL As String = "SELECT * FROM TabItensOs WHERE OrderId = '" & OsSelecionada & "'" Using da As New SqlDataAdapter(SQL, connString) Using ds As New DataSet da.Fill(ds, "TabItensOs") ' É preciso usar o mesmo nome como foi de definido Dim rptDataSource As New ReportDataSource("dsReport_TabItensOS", ds.Tables("TabItensOs")) Me.ReportViewer1.LocalReport.DataSources.Add(rptDataSource) End Using End Using Catch ex As Exception MessageBox.Show(ex.Message) End Try Me.ReportViewer1.RefreshReport() AddHandler ReportViewer1.LocalReport.SubreportProcessing, AddressOf SubReportTabOrdemServico AddHandler ReportViewer1.LocalReport.SubreportProcessing, AddressOf SubReportTabAcabamento End Sub Sub SubReportTabOrdemServico(ByVal sender As Object, ByVal e As SubreportProcessingEventArgs) Try Dim SQL As String = "SELECT * FROM TabOrdemServico WHERE OrderId = '" & OsSelecionada & "'" Using da As New SqlDataAdapter(SQL, connString) Using ds As New DataSet da.Fill(ds, "TabOrdemServico") Dim rptDataSource As New ReportDataSource("dsReport_TabOrdemServico", ds.Tables("TabOrdemServico")) e.DataSources.Add(rptDataSource) End Using End Using Catch ex As Exception MessageBox.Show(ex.Message) End Try End Sub Compartilhar este post Link para o post Compartilhar em outros sites