Usuário com melhor resposta
Migrando vb6 crystal 8 para vb.net no vs 2010

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 defineJá 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
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
- Marcado como Resposta Eduardo.RomeroModerator terça-feira, 24 de março de 2015 17:12
-
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,
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.- Sugerido como Resposta Eduardo.RomeroModerator quinta-feira, 19 de março de 2015 18:27
- Marcado como Resposta Eduardo.RomeroModerator quinta-feira, 19 de março de 2015 20:03
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,
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.- Sugerido como Resposta Eduardo.RomeroModerator quinta-feira, 19 de março de 2015 18:27
- Marcado como Resposta Eduardo.RomeroModerator quinta-feira, 19 de março de 2015 20:03
-
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
- Marcado como Resposta Eduardo.RomeroModerator terça-feira, 24 de março de 2015 17:12