none
Problemas com Crystal RRS feed

  • Pergunta

  • Boa tarde

    Estou desenvolvendo em vb.bet desktop

    Pessoal estou desenolvendo alguns testes em crystal e travei em um deles, fiz teste criando  o crystal e buscando dados direto por dataset, funcionou legal, fiz teste mandando buscar dados direto pelo banco, funcionou também, fiz esses testes usando o modo padrão com ajuda

    Porém estou tentando fazer um da seguinte forma tenho um form que nele tem 2 textbox e um datagriview. Fiz um crystal vazio. Criei um outro form vazio e adicionei um crystal report viewer e vinculaei o crystal vazio nele.

    quando eu carrego o form com os textbox e o grid eles vem cheio de dados. Preciso que ao clicar no botão que esta o form com os textbox e o datagridview ele abra o form com report viewer e preencha o crystal com os dados dos textbox e do datagridview. Não sei se consegui explicar mas o que preciso é que o crystal seja preenchido com os campos do form e não com um dataset ou direto com dados do banco

    É possível fazer isso? não achei nada para isso


    Alexandre
    segunda-feira, 28 de março de 2011 20:50

Respostas

  • Pessoal consegui parte do trabalho, para adionar os textbox do outro form no crystal fiz dessa forma:

    Dim param1Fileds As New CrystalDecisions.Shared.ParameterFields()
    
    
    
     Dim param1Field As New CrystalDecisions.Shared.ParameterField()
    
    
    
     Dim param1Range As New CrystalDecisions.Shared.ParameterDiscreteValue()
    
    
    
     Dim CRYRpt1 As New CrystalReport2()
    
    
    
    
    
    
    
    
    
    
    
    param1Field.ParameterFieldName = "teste" ' Parameter Name In Crystal Report
    
    
    
     param1Range.Value = Form2.TextBox1.Text
    
    
    
     param1Field.CurrentValues.Add(param1Range)
    
    
    
     param1Fileds.Add(param1Field) 'To add parameter in parameterslist
    
    
    
    
    
    
    
    
    
    
    
     crv.ParameterFieldInfo = param1Fileds 'to pass parameter inf.to CRV
    
    
    
     crv.ReportSource = CRYRpt1 ' Assign Report Source to CRV
    
    
    
    End Sub
    
    
    
    

    Porém não estou conseguindo jogar os dados do gridview no Crystal, fiz dessa forma:

    CRYRpt1.SetDataSource(Form2.DataGridView1.DataSource)

    Ele me apresenta a seguinte mensagem de erro:

    O relatório não tem tabelas.

    Apontando para a linha;

    CRYRpt1.SetDataSource(Form2.DataGridView1.DataSource)

    Onde estou er

    terça-feira, 29 de março de 2011 15:00
  • Boa tarde

     

    Pessoal pesquisei igual loco e consegui resolver o problema.

    Para carregar os dados do gridview funciona da seguinte forma:

    Eu estava errando pois estava criando um dataset direto sem indicar uma datable, então adicionei um dataset na minha aplicação e adicionei um datatable com a quantidade de colunas que precisava, feito isso adicionei esse dataset no arquivo .rpt e adicionei as colunas no relatório.

    Depois disso segue os dados de exemplo:

    Form2:

    Public Class Form2
      Private Sub Form2_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        Dim ds As New DataSet()
        Dim ExecutarStringSQL As New QuerySQL
        ds = ExecutarStringSQL.BuscarDados("SELECT studentID, firstName, lastName, birthDate,address, contactNo FROM studentInfo")
        Dim CRYRpt1 As New CrystalReport2()
        DataGridView1.DataSource = ds.Tables(0)
    
      End Sub
      Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        Dim f As New Form3
        f.Show()
      End Sub
    End Class
    

    Dados do form3:

    Public Class Form3
      Private Sub Form3_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    
        Dim param1Fileds As New CrystalDecisions.Shared.ParameterFields()
        Dim param1Field As New CrystalDecisions.Shared.ParameterField()
        Dim param1Range As New CrystalDecisions.Shared.ParameterDiscreteValue()
        Dim CRYRpt1 As New CrystalReport2()
    
        Dim ds As New DataSet1
    
          ' add rows to the table 
        Dim dr1 As DataRow
        For i As Integer = 0 To Form2.DataGridView1.RowCount - 1
          dr1 = ds.Tables(0).NewRow
          For j As Integer = 0 To Form2.DataGridView1.Columns.Count - 1
            dr1(j) = Form2.DataGridView1.Rows(i).Cells(j).FormattedValue
          Next
          ds.Tables(0).Rows.Add(dr1)
        Next
        param1Field.ParameterFieldName = "TesteCampo" ' Parameter Name In Crystal Report
        param1Range.Value = Form2.TextBox1.Text
        param1Field.CurrentValues.Add(param1Range)
        param1Fileds.Add(param1Field) 'To add parameter in parameterslist
    
    
        crv.ParameterFieldInfo = param1Fileds 'to pass parameter inf.to CRV
        CRYRpt1.SetDataSource(ds.Tables(0))
        crv.ReportSource = CRYRpt1    ' Assign Report Source to CRV
    
      End Sub
    End Class
    

    Pronto com isso qualquer informação que tenho no daragrid será exibida no crystal.

    Para adicionar dados do form como valores do textbox do form1 por exemplo, basta antes ir no cristal e adicionar um "ParameteField" e dar um nome para ele, no meu exemplo acima o nome é TesteCampo, e ele exibe no crystal os dados do textbox1 do form2.

    Espero que ajude alguém


    Alexandre
    terça-feira, 29 de março de 2011 19:17

Todas as Respostas

  • Pessoal consegui parte do trabalho, para adionar os textbox do outro form no crystal fiz dessa forma:

    Dim param1Fileds As New CrystalDecisions.Shared.ParameterFields()
    
    
    
     Dim param1Field As New CrystalDecisions.Shared.ParameterField()
    
    
    
     Dim param1Range As New CrystalDecisions.Shared.ParameterDiscreteValue()
    
    
    
     Dim CRYRpt1 As New CrystalReport2()
    
    
    
    
    
    
    
    
    
    
    
    param1Field.ParameterFieldName = "teste" ' Parameter Name In Crystal Report
    
    
    
     param1Range.Value = Form2.TextBox1.Text
    
    
    
     param1Field.CurrentValues.Add(param1Range)
    
    
    
     param1Fileds.Add(param1Field) 'To add parameter in parameterslist
    
    
    
    
    
    
    
    
    
    
    
     crv.ParameterFieldInfo = param1Fileds 'to pass parameter inf.to CRV
    
    
    
     crv.ReportSource = CRYRpt1 ' Assign Report Source to CRV
    
    
    
    End Sub
    
    
    
    

    Porém não estou conseguindo jogar os dados do gridview no Crystal, fiz dessa forma:

    CRYRpt1.SetDataSource(Form2.DataGridView1.DataSource)

    Ele me apresenta a seguinte mensagem de erro:

    O relatório não tem tabelas.

    Apontando para a linha;

    CRYRpt1.SetDataSource(Form2.DataGridView1.DataSource)

    Onde estou er

    terça-feira, 29 de março de 2011 15:00
  • Boa tarde

     

    Pessoal pesquisei igual loco e consegui resolver o problema.

    Para carregar os dados do gridview funciona da seguinte forma:

    Eu estava errando pois estava criando um dataset direto sem indicar uma datable, então adicionei um dataset na minha aplicação e adicionei um datatable com a quantidade de colunas que precisava, feito isso adicionei esse dataset no arquivo .rpt e adicionei as colunas no relatório.

    Depois disso segue os dados de exemplo:

    Form2:

    Public Class Form2
      Private Sub Form2_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        Dim ds As New DataSet()
        Dim ExecutarStringSQL As New QuerySQL
        ds = ExecutarStringSQL.BuscarDados("SELECT studentID, firstName, lastName, birthDate,address, contactNo FROM studentInfo")
        Dim CRYRpt1 As New CrystalReport2()
        DataGridView1.DataSource = ds.Tables(0)
    
      End Sub
      Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        Dim f As New Form3
        f.Show()
      End Sub
    End Class
    

    Dados do form3:

    Public Class Form3
      Private Sub Form3_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    
        Dim param1Fileds As New CrystalDecisions.Shared.ParameterFields()
        Dim param1Field As New CrystalDecisions.Shared.ParameterField()
        Dim param1Range As New CrystalDecisions.Shared.ParameterDiscreteValue()
        Dim CRYRpt1 As New CrystalReport2()
    
        Dim ds As New DataSet1
    
          ' add rows to the table 
        Dim dr1 As DataRow
        For i As Integer = 0 To Form2.DataGridView1.RowCount - 1
          dr1 = ds.Tables(0).NewRow
          For j As Integer = 0 To Form2.DataGridView1.Columns.Count - 1
            dr1(j) = Form2.DataGridView1.Rows(i).Cells(j).FormattedValue
          Next
          ds.Tables(0).Rows.Add(dr1)
        Next
        param1Field.ParameterFieldName = "TesteCampo" ' Parameter Name In Crystal Report
        param1Range.Value = Form2.TextBox1.Text
        param1Field.CurrentValues.Add(param1Range)
        param1Fileds.Add(param1Field) 'To add parameter in parameterslist
    
    
        crv.ParameterFieldInfo = param1Fileds 'to pass parameter inf.to CRV
        CRYRpt1.SetDataSource(ds.Tables(0))
        crv.ReportSource = CRYRpt1    ' Assign Report Source to CRV
    
      End Sub
    End Class
    

    Pronto com isso qualquer informação que tenho no daragrid será exibida no crystal.

    Para adicionar dados do form como valores do textbox do form1 por exemplo, basta antes ir no cristal e adicionar um "ParameteField" e dar um nome para ele, no meu exemplo acima o nome é TesteCampo, e ele exibe no crystal os dados do textbox1 do form2.

    Espero que ajude alguém


    Alexandre
    terça-feira, 29 de março de 2011 19:17