Bem Vindo Visitante Lista de Usuários

 Todos os Fórums
  ADVPL

Enviar para a impressoraImprimir   

Subject tabela temporaria
Mensagem do Enviar e-mail Abrir o Perfil do usuário WILLIAN__ WILLIAN__ em 7/3/2018 as 16:43 hs
Local: SP   Registrada: 3/7/2018  Postagem: 1
Criei um relatorio trport que faz consulta em duas base de dados mas ao gerar o relatorio na tela ele apresenta dados duplicados eu testei minhas querys e ao consultar o banco de dados a query funciona como esperado.

este é meu codigo:

RELMWPrt(oReport)
      
     Local oSection1          := oReport:Section(1)
     Local nHndERP           := AdvConnection()
      
     Local cDBOra           := "MSSQL/MW_CLASSIC"
     Local cSrvOra           := "192.168.0.189"
     Local nHndOra           := -1
     Local cQuery          := ""
     Local cQuery1          := ""

     Local aCampos1     := {}
     Local aCampos     := {}
      
     Local cTabela     := ""
     Local cTabela1     := ""

     Local cCond          := ""
     Local cCond1     := ""

     Local cIndex     := ""
     Local cIndex1     := ""



      
     /* ================================================================================================ */                                 
     // Criacao dos campos para a tabela temporaria
     Aadd(aCampos,{"FILIAL",               "C",     4,          0})
     Aadd(aCampos,{"CONTRATO",          "C",     20,          0})
     Aadd(aCampos,{"EMISSAO",          "C",     08,          0})
     Aadd(aCampos,{"VALOR",               "N",     14,          2})
      
     cTabela     := CriaTrab(aCampos,.T.)
      
     While Select("TMP") <> 0
          TMP->(DbCloseArea())
     EndDo
      
     DBUseArea(.T.,,cTabela,"TMP")
     cIndex     := cTabela+"1"
      
     IndRegua("TMP",cIndex,"FILIAL+CONTRATO",,cCond,"Gravando Registros")
     dbSetIndex(cIndex + OrdBagExt())
     /* ================================================================================================ */
              
     /* ================================================================================================ */                                 
     // Criacao dos campos para a tabela temporaria MUNDI WARE
     Aadd(aCampos1,{"FILIAL_MW",     "C",     4,          0})
     Aadd(aCampos1,{"CONTR_MW",     "C",     20,          0})
     Aadd(aCampos1,{"VALOR_MW",     "N",     14,          2})
      
     cTabela1     := CriaTrab(aCampos1,.T.)
      
     While Select("TMP1") <> 0
          TMP1->(DbCloseArea())
     EndDo
      
     DBUseArea(.T.,,cTabela1,"TMP1")
     cIndex1     := cTabela1+"1"
      
     IndRegua("TMP1",cIndex1,"FILIAL_MW+CONTR_MW",,cCond1,"Gravando Registros")
     dbSetIndex(cIndex1 + OrdBagExt())
     /* ================================================================================================ */
      
      
     DO CASE
          CASE MV_PAR05 == 1      
     // Cria uma conexão com um outro banco, outro DBAcces
           
        nHndOra := TcLink( cDbOra, cSrvOra, 7890 )
              
     cQuery := " SELECT CONTRATO.IdLoja,
        CONTRATO.CodigoContrato,CONTRATO.Valor "
              
        cQuery += " FROM      tb_agreement CONTRATO"
        cQuery += " WHERE     CONTRATO.CodigoContrato BETWEEN '" +
        MV_PAR03 + "' AND'" + MV_PAR04 + "' "
           
     TcQuery cQuery New Alias "SQL"
           
While SQL->(!Eof())
       
      RecLock("TMP1",.T.)
              
     TMP1->FILIAL_MW                  := SQL->IdLoja
     TMP1->CONTR_MW                  := SQL->CodigoContrato
     TMP1->VALOR_MW               := SQL->Valor
                     
     TMP1->(MsUnLock())
          
     SQL->(DbSkip())
              
End
        TMP1->(DbGoTop())
              
//Fecha a conexão com o MUNDI WARE
          TcUnlink( nHndOra )
                     
//Volta para conexão ERP
        tcSetConn( nHndERP )
              
     cQuery1 := " SELECT SE1.E1_FILIAL, SE1.E1_XCTMDW, SE1.E1_VALOR, SE1.E1_EMISSAO "
                     
        cQuery1 += " FROM " + RetSqlName("SE1") + " SE1"
      
        cQuery1 += " WHERE SE1.E1_XCTMDW BETWEEN '" + MV_PAR03 + "' AND'" +
        MV_PAR04 + "' "
      
        cQuery1 += " AND SE1.D_E_L_E_T_ = '' "
           
     TcQuery cQuery1 New Alias "SQL1"
           
           
While SQL1->(!Eof())
          
     RecLock("TMP",.T.)
      
     TMP->FILIAL             := SQL1->E1_FILIAL
     TMP->CONTRATO             := SQL1->E1_XCTMDW
     TMP->VALOR          := SQL1->E1_VALOR
     TMP->EMISSAO          := SQL1->E1_EMISSAO
                     
TMP->(MsUnLock())
          
      SQL1->(DbSkip())
        End
       
        TMP->(DbGoTop())
          
oSection1:print()
oReport:Skipline()
     
FErase(cTabela + GetDbExtension()) // Deletando o arquivo
FErase(cIndex + OrdBagExt())       // Deletando índice
      
FErase(cTabela1 + GetDbExtension()) // Deletando o arquivo
FErase(cIndex1 + OrdBagExt())       // Deletando índice
      
           
OTHERWISE
          Alert("tipo de faturamento Inválido")
ENDCASE
      
return(.T.)

Para participar do Fórum você precisa efetuar login primeiro
Caso você não esteja registrado registre-se para participar do fórum

 Mudar para Fórum