Usuário com melhor resposta
Problemas com Crystal

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
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
- Marcado como Resposta AndreAlvesLimaModerator terça-feira, 29 de março de 2011 20:15
-
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- Marcado como Resposta AndreAlvesLimaModerator terça-feira, 29 de março de 2011 20:15
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
- Marcado como Resposta AndreAlvesLimaModerator terça-feira, 29 de março de 2011 20:15
-
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- Marcado como Resposta AndreAlvesLimaModerator terça-feira, 29 de março de 2011 20:15