none
Migrando vb6 crystal 8 para vb.net no vs 2010 RRS feed

  • Pergunta

  • Estou migrando de uma aplicação VB 6 com Crystal 8 para uma VB.Net em VS 2010 com crystal instalado.

    Esta indicando CRAXDRT.Application is not define
    CRAXDRT.Report is not define

    Já pesquisei muito e não consegui descobrir o correspondente.

    Agradeço a ajuda

    Segue abaixo o código

        Public crxAplicacao As New CRAXDRT.Application
        Public crxRelatorio As New CRAXDRT.Report

        Public Enum eObjetoRPT
            formula
            Parametro
            texto
        End Enum

        Public Sub RptCampo(ByRef crxRel As CRAXDRT.Report, ByVal strNomeCampo As String, ByVal strTextoOuValorDoCampo As String, Optional ByVal Tipo As eObjetoRPT = eObjetoRPT.formula, Optional ByVal strSecao As String = "")
            'se o campo é uma fórmula, strTextoOuValorDoCampo deve ser o texto da fórmula
            'se o campo é um parâmetro, strTextoOuValorDoCampo deve ser o valor do parâmetro
            Dim n As Integer

            On Error GoTo hError
            If Tipo = eObjetoRPT.formula Then
                'corrige problema com o caracter "'"
                If Left(strTextoOuValorDoCampo, 1) = "'" Then strTextoOuValorDoCampo = Mid(strTextoOuValorDoCampo, 2, Len(strTextoOuValorDoCampo) - 1)
                strTextoOuValorDoCampo = Replace(strTextoOuValorDoCampo, "'", "''")

                If Left(strTextoOuValorDoCampo, 1) <> "'" Then strTextoOuValorDoCampo = "'" & strTextoOuValorDoCampo & "'"
                For n = 1 To crxRel.FormulaFields.Count
                    If UCase$(crxRel.FormulaFields(n).FormulaFieldName) = UCase$(strNomeCampo) Then
                        If crxRel.FormulaFields(n).ValueType = crStringField Then
                            crxRel.FormulaFields(n).Text = strTextoOuValorDoCampo
                        Else
                            crxRel.FormulaFields(n).Text = CInt(Replace(strTextoOuValorDoCampo, "'", ""))
                        End If

                        Exit For
                    End If
                Next n

            ElseIf Tipo = eObjetoRPT.Parametro Then
                For n = 1 To crxRel.ParameterFields.Count
                    If UCase$(crxRel.ParameterFields(n).ParameterFieldName) = UCase$(strNomeCampo) Then
                        crxRel.ParameterFields(n).ClearCurrentValueAndRange()
                        Select Case crxRel.ParameterFields(n).ValueType
                            Case crNumberField
                                crxRel.ParameterFields(n).AddCurrentValue(CLng(strTextoOuValorDoCampo))

                            Case crCurrencyField
                                crxRel.ParameterFields(n).AddCurrentValue(CCur(strTextoOuValorDoCampo))

                            Case crDateField, crDateTimeField, crTimeField
                                crxRel.ParameterFields(n).AddCurrentValue(CDate(strTextoOuValorDoCampo))

                            Case crBooleanField
                                crxRel.ParameterFields(n).AddCurrentValue(CBool(strTextoOuValorDoCampo))

                            Case Else
                                crxRel.ParameterFields(n).AddCurrentValue(strTextoOuValorDoCampo)

                        End Select

                        Exit For
                    End If
                Next n

            ElseIf Tipo = eObjetoRPT.texto Then
                Dim Objeto As Object

                If strSecao = "" Then Exit Sub
                For Each Objeto In crxRel.Sections.Item(strSecao).ReportObjects
                    If Objeto.Kind = crTextObject Then
                        If UCase(Trim(Objeto.Text)) = UCase(strNomeCampo) Then
                            Objeto.SetText(strTextoOuValorDoCampo)
                            Exit For
                        End If
                    End If
                Next Objeto
            End If

    End Sub


    segunda-feira, 16 de março de 2015 18:27

Respostas

  • Depois de muito pesquisar, consegui chegar a esse código abaixo.

    Agradeço pela atenção.

        Public Sub RptCampo(ByRef crxRel As ReportDocument, ByVal strNomeCampo As String, ByVal strTextoOuValorDoCampo As String, Optional ByVal Tipo As eObjetoRPT = eObjetoRPT.formula, Optional ByVal strSecao As String = "")
            'se o campo é uma fórmula, strTextoOuValorDoCampo deve ser o texto da fórmula
            'se o campo é um parâmetro, strTextoOuValorDoCampo deve ser o valor do parâmetro
            Dim n As Integer

            On Error GoTo hError
            If Tipo = eObjetoRPT.formula Then
                'corrige problema com o caracter "'"
                If Left(strTextoOuValorDoCampo, 1) = "'" Then strTextoOuValorDoCampo = Mid(strTextoOuValorDoCampo, 2, Len(strTextoOuValorDoCampo) - 1)
                strTextoOuValorDoCampo = Replace(strTextoOuValorDoCampo, "'", "''")

                If Left(strTextoOuValorDoCampo, 1) <> "'" Then strTextoOuValorDoCampo = "'" & strTextoOuValorDoCampo & "'"

                For n = 1 To crxRel.DataDefinition.FormulaFields.Count

                    If UCase$(crxRel.DataDefinition.FormulaFields(n).FormulaName) = UCase$(strNomeCampo) Then

                        If crxRel.DataDefinition.FormulaFields(n).ValueType = FieldValueType.StringField Then
                            crxRel.DataDefinition.FormulaFields(n).Text = strTextoOuValorDoCampo
                        Else
                            crxRel.DataDefinition.FormulaFields(n).Text = CInt(Replace(strTextoOuValorDoCampo, "'", ""))
                        End If

                        Exit For

                    End If

                Next n

            ElseIf Tipo = eObjetoRPT.Parametro Then

                For n = 1 To crxRel.ParameterFields.Count

                    If UCase$(crxRel.ParameterFields(n).ParameterFieldName) = UCase$(strNomeCampo) Then
                        crxRel.ParameterFields(n).CurrentValues.Clear()

                        Select Case crxRel.DataDefinition.ParameterFields(n).ValueType
                            Case FieldValueType.NumberField
                                crxRel.ParameterFields(n).CurrentValues.AddValue(CLng(strTextoOuValorDoCampo))

                            Case FieldValueType.CurrencyField
                                crxRel.ParameterFields(n).CurrentValues.AddValue(CDec(strTextoOuValorDoCampo))

                            Case FieldValueType.DateField, FieldValueType.DateTimeField, FieldValueType.TimeField
                                crxRel.ParameterFields(n).CurrentValues.AddValue(CDate(strTextoOuValorDoCampo))

                            Case FieldValueType.BooleanField
                                crxRel.DataDefinition.ParameterFields(n).CurrentValues.AddValue(CBool(strTextoOuValorDoCampo))

                            Case Else
                                crxRel.ParameterFields(n).CurrentValues.AddValue(strTextoOuValorDoCampo)

                        End Select

                        Exit For
                    End If
                Next n

            ElseIf Tipo = eObjetoRPT.texto Then
                Dim Objeto As Object

                If strSecao = "" Then Exit Sub

                For Each Objeto In crxRel.ReportDefinition.Sections.Item(strSecao).ReportObjects
                    If TypeOf (Objeto.Kind) Is TextObject Then
                        If UCase(Trim(Objeto.Text)) = UCase(strNomeCampo) Then
                            Objeto.SetText(strTextoOuValorDoCampo)
                            Exit For
                        End If
                    End If
                Next Objeto

            End If

        End Sub

    terça-feira, 24 de março de 2015 17:11
  • Boa tarde Marco,

    Sugiro que verifique nos links abaixo se são suficientes para tratar o seu problema. Caso negativo, nos envie mais detalhes sobre o erro para continuarmos ajudando.

    http://scn.sap.com/thread/961465

    http://vbcity.com/forums/t/73524.aspx

    Obrigado,

    Abraço!


    Eduardo Romero

    Esse conteudo e fornecido sem garantias de qualquer tipo, seja expressa ou implicita.

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as respostas que resolveram o seu problema. Essa e uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais facil para os outros visitantes encontrarem a resolucao mais tarde.

    quinta-feira, 19 de março de 2015 18:27
    Moderador

Todas as Respostas

  • Boa tarde Marco,

    Sugiro que verifique nos links abaixo se são suficientes para tratar o seu problema. Caso negativo, nos envie mais detalhes sobre o erro para continuarmos ajudando.

    http://scn.sap.com/thread/961465

    http://vbcity.com/forums/t/73524.aspx

    Obrigado,

    Abraço!


    Eduardo Romero

    Esse conteudo e fornecido sem garantias de qualquer tipo, seja expressa ou implicita.

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as respostas que resolveram o seu problema. Essa e uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais facil para os outros visitantes encontrarem a resolucao mais tarde.

    quinta-feira, 19 de março de 2015 18:27
    Moderador
  • Depois de muito pesquisar, consegui chegar a esse código abaixo.

    Agradeço pela atenção.

        Public Sub RptCampo(ByRef crxRel As ReportDocument, ByVal strNomeCampo As String, ByVal strTextoOuValorDoCampo As String, Optional ByVal Tipo As eObjetoRPT = eObjetoRPT.formula, Optional ByVal strSecao As String = "")
            'se o campo é uma fórmula, strTextoOuValorDoCampo deve ser o texto da fórmula
            'se o campo é um parâmetro, strTextoOuValorDoCampo deve ser o valor do parâmetro
            Dim n As Integer

            On Error GoTo hError
            If Tipo = eObjetoRPT.formula Then
                'corrige problema com o caracter "'"
                If Left(strTextoOuValorDoCampo, 1) = "'" Then strTextoOuValorDoCampo = Mid(strTextoOuValorDoCampo, 2, Len(strTextoOuValorDoCampo) - 1)
                strTextoOuValorDoCampo = Replace(strTextoOuValorDoCampo, "'", "''")

                If Left(strTextoOuValorDoCampo, 1) <> "'" Then strTextoOuValorDoCampo = "'" & strTextoOuValorDoCampo & "'"

                For n = 1 To crxRel.DataDefinition.FormulaFields.Count

                    If UCase$(crxRel.DataDefinition.FormulaFields(n).FormulaName) = UCase$(strNomeCampo) Then

                        If crxRel.DataDefinition.FormulaFields(n).ValueType = FieldValueType.StringField Then
                            crxRel.DataDefinition.FormulaFields(n).Text = strTextoOuValorDoCampo
                        Else
                            crxRel.DataDefinition.FormulaFields(n).Text = CInt(Replace(strTextoOuValorDoCampo, "'", ""))
                        End If

                        Exit For

                    End If

                Next n

            ElseIf Tipo = eObjetoRPT.Parametro Then

                For n = 1 To crxRel.ParameterFields.Count

                    If UCase$(crxRel.ParameterFields(n).ParameterFieldName) = UCase$(strNomeCampo) Then
                        crxRel.ParameterFields(n).CurrentValues.Clear()

                        Select Case crxRel.DataDefinition.ParameterFields(n).ValueType
                            Case FieldValueType.NumberField
                                crxRel.ParameterFields(n).CurrentValues.AddValue(CLng(strTextoOuValorDoCampo))

                            Case FieldValueType.CurrencyField
                                crxRel.ParameterFields(n).CurrentValues.AddValue(CDec(strTextoOuValorDoCampo))

                            Case FieldValueType.DateField, FieldValueType.DateTimeField, FieldValueType.TimeField
                                crxRel.ParameterFields(n).CurrentValues.AddValue(CDate(strTextoOuValorDoCampo))

                            Case FieldValueType.BooleanField
                                crxRel.DataDefinition.ParameterFields(n).CurrentValues.AddValue(CBool(strTextoOuValorDoCampo))

                            Case Else
                                crxRel.ParameterFields(n).CurrentValues.AddValue(strTextoOuValorDoCampo)

                        End Select

                        Exit For
                    End If
                Next n

            ElseIf Tipo = eObjetoRPT.texto Then
                Dim Objeto As Object

                If strSecao = "" Then Exit Sub

                For Each Objeto In crxRel.ReportDefinition.Sections.Item(strSecao).ReportObjects
                    If TypeOf (Objeto.Kind) Is TextObject Then
                        If UCase(Trim(Objeto.Text)) = UCase(strNomeCampo) Then
                            Objeto.SetText(strTextoOuValorDoCampo)
                            Exit For
                        End If
                    End If
                Next Objeto

            End If

        End Sub

    terça-feira, 24 de março de 2015 17:11