PERGUNTAS E RESPOSTAS
 
Bem Vindo, Visitante  Todos os Fórums
  ADVPL
Enviar para a impressoraImprimir  Enviar e-mail para um amigoEnviar Para um Amigo
Precisa estar Logado

Subject Assunto:
TABELA TEMPORARIA
Versão:
12.1.7
Plataforma:
Microsoft
Complemento:
DB:
SQL Server
Complemento:
LinkedIn
Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário WILLIAN_CA WILLIAN_CA em 02/07/2018, 22:25 h
Local: SP  Registro: 30/04/2018  Postagens: 10
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 postar no Fórum você precisa efetuar o seu login ou se registrar

 Mudar para Fórum

 

 

 
 
   
Pagina Principal Shopping PROTHEUS Tire suas duvidas Vagas Microsiga em todo Brasil Aprofunde seus conhecimentos Noticias Online Fale Conosco Pagina Principal