none
passar valor para uma formula fields que esta no subReport vb.net RRS feed

  • Pergunta

  • Bom dia Pessoal

    Estou com um problema, com formula no subRepot do Crystal.

    Veja como passo os valor para a formula fields.

    ReportSubDoc.DataDefinition.FormulaFields.Item("DataI").text = "05/05/2013"

    O mesmo não mostra a data na formul aque esta no meu subreport.

    Algue sabe me informar por que não mosta? qual o erro ?

    Veja a função Toda abaixo:

     Sub SubReport(ByVal SqlS As Object, ByVal Tabelas As Object, ByVal RelPrinc As String, ByVal SubRelNome As Object, ByVal FormulaNone As Object, ByVal FormulaValue As Object, ByVal Previw As Forms.CrystalReportViewer, ByVal Form As Form, ByVal Titulo As String, Optional QualSubReportFormula As Object = Nothing, Optional formulaSubReport As Object = Nothing, Optional FormulaSubReportValor As Object = Nothing)
            'Usado para o documento Proncipal
            Dim ReportDoc As New ReportDocument
            'Usado para o Sub Relatorio
            Dim ReportSubDoc As New ReportDocument
            Dim ReportSubDoc2 As New ReportDocument
            'Variavel de Conexao
            Dim Conex As New SqlConnection
            'Carega a string sql 
            Dim Sql As New StringBuilder
            'Cria um DataSet 
            Dim DSData As New DataSet
            'Definindo uma variavel contadora para os array
            Dim Cont, ContSubReport As Integer
            'Variavel que carega os nomes das tabelas
            Dim TB As String = Nothing
    
            'Try
    
            '1° Passo: Caregar o Relatorio
            Dim Caminho As String = Application.StartupPath & "\" & RelPrinc 'NF.rpt"
            ReportDoc.Load(Caminho)
    
            '2° Passo:Passar os dado spara o relatorio(DataTable)
            'Abrindo a conexão com o banco de dados 
            Conex.ConnectionString = db.ConnectionString
            Conex.Open()
    
            'Caregando os dados
            If IsArray(SqlS) Then
                For Cont = 0 To UBound(SqlS)
                    Sql.Append(SqlS(Cont) & ";")
                Next
            End If
    
            'da um for e adiciona os valores as formulas do relatorio crystal
            For Cont = 0 To UBound(FormulaNone)
    
                ReportDoc.DataDefinition.FormulaFields.Item(FormulaNone(Cont)).Text = "'" & FormulaValue(Cont) & "'"
    
            Next
    
            'Sql.Append("Select * From OperacaoNF_qry ;") 'Where OPeracao=@Operacao
    
            'Desta parte para baicho o sql é para o sub Relatorio
            'Sql.Append("Select * From ParcelaNF")
    
            'Cria um Adapter
            Dim Adp As New SqlDataAdapter(Sql.ToString, Conex)
    
            If IsArray(Tabelas) Then
                For Cont = 0 To UBound(Tabelas)
                    TB &= IIf(TB = Nothing, Tabelas(Cont), ";" & Tabelas(Cont))
                Next
            End If
            Adp.Fill(DSData, TB)
    
            'Abrindo o sub Relatorio 
            If IsArray(SubRelNome) Then
                For Cont = 0 To UBound(SubRelNome)
                    If Cont = 0 Then
                        ReportSubDoc = ReportDoc.OpenSubreport(SubRelNome(Cont).ToString)
    
                        'Coloca as formulas no subReport coresponmdente
                        If IsArray(QualSubReportFormula) Then
                            If QualSubReportFormula(Cont) = Cont Then
                                For ContSubReport = 0 To UBound(QualSubReportFormula)
                                    If QualSubReportFormula(ContSubReport) = Cont Then
    
                                        ReportSubDoc.DataDefinition.FormulaFields.Item(formulaSubReport(ContSubReport)).text = FormulaSubReportValor(ContSubReport)
    
                                    End If
                                Next
    
                            End If
                        End If
    
                    ElseIf Cont = 1 Then
                        ReportSubDoc2 = ReportDoc.OpenSubreport(SubRelNome(Cont).ToString)
                    End If
                    
    
    
                Next
            End If
    
            'ReportSubDoc = ReportDoc.OpenSubreport("NFParcelas.rpt")
    
            'Abrindo os dataSource
            ReportDoc.Database.Tables(0).SetDataSource(DSData.Tables(0))
            If IsArray(SubRelNome) Then
                For Cont = 0 To UBound(SubRelNome)
    
                    If Cont = 0 Then
                        ReportSubDoc.Database.Tables(0).SetDataSource(DSData.Tables(Cont + 1))
                    ElseIf Cont = 1 Then
                        ReportSubDoc2.Database.Tables(0).SetDataSource(DSData.Tables(Cont + 1))
                    End If
                Next
            End If
            Previw.ReportSource = ReportDoc
    
            Conex.Close()
            Conex.Dispose()
            DSData.Dispose()
    
            Conex = Nothing
            DSData = Nothing
            Form.Text = Titulo
            Form.ShowDialog()
    
            'Catch ex As Exception
            '    MsgBox(ex.Message, MsgBoxStyle.Critical)
            'End Try
        End Sub

    Agradeço a atenção e ajuda

    T+


    Nilson Morgenstern

    domingo, 19 de maio de 2013 13:35

Respostas

  • Pessoal Resolvi o Problema.

    Rosolvoi usar uma tabela temporaria para passar os valore que estava querendo passar por formulafields.

    Pois o SubReport não aceita passar valor por formulafields e nem por parametro.

    Que eu acho uma deficiencia muito grande do crystal.

    valeu 

    t+


    Nilson Morgenstern

    • Marcado como Resposta Ncm Developer terça-feira, 21 de maio de 2013 12:11
    terça-feira, 21 de maio de 2013 12:11

Todas as Respostas

  • Pessoal Resolvi o Problema.

    Rosolvoi usar uma tabela temporaria para passar os valore que estava querendo passar por formulafields.

    Pois o SubReport não aceita passar valor por formulafields e nem por parametro.

    Que eu acho uma deficiencia muito grande do crystal.

    valeu 

    t+


    Nilson Morgenstern

    • Marcado como Resposta Ncm Developer terça-feira, 21 de maio de 2013 12:11
    terça-feira, 21 de maio de 2013 12:11
  • Nilson Morgenstern

        Você realmente não conseguiu passar valor para formula de subreport ?

        No momento passei, ainda não é da forma que pretendo realmente, estou ainda pesquisando, caso saiba de alguma coisa, basta dar um alô, e qualquer novidade eu te aviso.

    s_subReportDocument.DataDefinition.FormulaFields("nmPassagemNew3").Text = String.Concat("toText('", "retorno pas 3", "')")

     E o outro link abaixo ajuda, na questão de parametro, e qualquer coisa basta dar um alô.

    http://scn.sap.com/message/15991580#15991580

    terça-feira, 2 de junho de 2015 00:14