Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Nilson Cl.

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

Recommended Posts

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+

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.