Dears,

Please, help me with this problem:

The code below generate in perform a SQL with error.

    Dim obOrcTarefaPlan As OrcamentoTarefaPlanejamento    ' Objeto principal oramento tarefa planejado.
    Dim obColecao As CPersistentCollection                ' Coleo de objetos a ser retornada.
    Dim obRC As AToMSFramework.CMultiSummaryCriteria      ' Critrio de recuperao com sumarizao.
    Dim obCursor As AToMSFramework.CCursor                ' Cursor com os objetos recuperados.
    Dim obCC1 As AToMSFramework.CCriteriaCondition        ' Condio.
    Dim obCC2 As AToMSFramework.CCriteriaCondition        ' Condio.
    Dim inOrdemIndex As Integer                           ' ndice do atributo de ordenao.
    Dim boAscend As Boolean                               ' Ordem ascendente.
    Dim cuValor As Decimal                                ' Valor a ser somado.

    obOrcTarefaPlan = New OrcamentoTarefaPlanejamento
    obOrcTarefaPlan.AnoExercicio = New AnoExercicio

    obRC = New AToMSFramework.CMultiSummaryCriteria
    obRC.addObjectToJoin(obOrcTarefaPlan, Nothing, "")
    obRC.addObjectToJoin(obOrcTarefaPlan.AnoExercicio, obOrcTarefaPlan, "AnoExercicio")

    obCC1 = New AToMSFramework.CCriteriaCondition
    obCC1.ClassMap = obOrcTarefaPlan.getClassMap(obOrcTarefaPlan)     ' Define a classe da condio.
    obCC1.addSelectEqualTo("TarefaOid", vstTarefaOid)         ' Cria o critrio "igual a" para o identificador da tarefa.

    obCC2 = New AToMSFramework.CCriteriaCondition
    obCC2.ClassMap = obOrcTarefaPlan.getClassMap(obOrcTarefaPlan.AnoExercicio)     ' Define a classe da condio.
    obCC2.addSelectEqualTo("PeriodoPPAOid", vstPeriodoPPAOid)         ' Cria o critrio "igual a" para o identificador do perodo PPA.
    obCC1.addSubCriteria(obCC2, False)
    obCC2 = Nothing

    obRC.WhereCondition = obCC1                     ' Define que o critrio a ser utilizado ser o definido anteriormente.
    obCC1 = Nothing
    obOrcTarefaPlan = Nothing

    ' Caso existam atributos de ordenao, adiciona um critrio de ordenao para cada atributo na coleo.
    If Not IsNothing(vobOrdemCol) Then
      For inOrdemIndex = 1 To vobOrdemCol.Count
        boAscend = True
        ' Caso existam itens para determinar a ordem ascendente ou descendente.
        If Not IsNothing(vobOrdemAscCol) Then
          If inOrdemIndex <= vobOrdemAscCol.Count Then
            ' Caso a ordem seja descendente.
            If Not vobOrdemAscCol(inOrdemIndex) Then
              boAscend = False
            End If
          End If
        End If

        obRC.addOrderAttributeByAscend(vobOrdemCol(inOrdemIndex), boAscend)
      Next
    End If

    obRC.addGroupAttribute("TarefaOid")
    obRC.addGroupAttribute("CategoriaEconomicaOid")
    obRC.addSummaryField("ValorPrevisto", CMultiSummaryCriteria.SumMethod.Sum)
    obRC.addSummaryField("ValorAprovado", CMultiSummaryCriteria.SumMethod.Sum)
    obRC.addSummaryField("ValorPrevistoOutro", CMultiSummaryCriteria.SumMethod.Sum)

    obCursor = obRC.perform ' Gerao do cursor.

The SQL:

SELECT SUM(t2.Val_Previsto), SUM(t2.Val_Aprovado), SUM(t2.Val_Outro_Recurso_Previsto) FROM (TESTE_SIGERE.dbo.tb_Orcamento_Tarefa_Planejamento as t1 LEFT JOIN TESTE_SIGERE.dbo.tb_Orcamento_Tarefa_Planejamento as t2 ON t1.OID_Ano_Exercicio = t2.Oid_Ano_Exercicio) WHERE  ((tb_Orcamento_Tarefa_Planejamento.OID_Tarefa = '000004A00001' AND (tb_Ano_Exercicio.OID_Periodo_PPA = '000003750001'))) GROUP BY tb_Orcamento_Tarefa_Planejamento.OID_Tarefa, tb_Orcamento_Tarefa_Planejamento.OID_Categoria_Economica