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:
Gerar Resultado da Query em TXT
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 SHISUI19 SHISUI19 em 05/03/2019, 14:43 h
Local: SP  Registro: 30/01/2019  Postagens: 3
Boa tarde pessoal , sou novo em advpl e estou aprendendo sozinho . Estou com dificuldades para gerar o resultado de uma query em TXT , por não conhecer muito bem a sintaxe de linguagem não sei onde estou errando , vou postar o codigo que tenho até agora , por favor vejam se conseguem me ajudar .

#include "protheus.ch"
#include "topconn.ch"

user function FDEMGS()
Local _cPerg := ‘FDEMGS‘
Local cQuery
CriaSx1(_cPerg)
     
      If Pergunte(_cPerg,.T.)
           GetCq2()   
           endif


Static function GetCq2()
         Local _lRet     := .T.
         Local nH
         Local cFile := "C:\temp\arquivo.txt"
         Local cTab
           nH := fCreate(cFile)
If nH == -1
   MsgStop("Falha ao criar arquivo - erro "+str(ferror()))
   Return
Endif


   cQuery := "SELECT DISTINCT CQ2_CONTA AS LOCALACCOU, "+Space(9)+" ( "
     cQuery += " SELECT CT1_Z_HFM FROM CT1020 CT1 "
     cQuery += " WHERE CT1.D_E_L_E_T_ = ‘‘ "
     cQuery += " AND CT1_CONTA = CQ2_CONTA) AS ACCOUNT, "
     cQuery += " ‘EP10231‘ AS ENTITY, "
     cQuery += " CQ2_CCUSTO AS LOCALCOST,( "
     cQuery += " SELECT CTT_Z_HFM FROM CTT020 CTT "
          cQuery += " WHERE CQ2_CCUSTO = CTT_CUSTO
          cQuery += " AND CTT.D_E_L_E_T_ = ‘‘) AS COSTCTR, "
     cQuery += " SUBSTRING (CQ2_DATA,1,6)+‘00‘ AS TIMEM, "
     cQuery += " CASE "
          cQuery += " WHEN SUBSTRING(CQ2_CONTA,1,1) = ‘3‘ THEN ‘BA404‘ "
     cQuery += " ELSE ‘BA001‘ "
     cQuery += " END as BUSAREA, "
     cQuery += " SUM(CQ2_DEBITO - CQ2_CREDIT) AS PERAMT, "
     cQuery += " CASE "
          cQuery += " WHEN SUBSTRING(CQ2_CONTA,1,1) IN (‘3‘,‘4‘) "
          cQuery += " THEN ( "
               cQuery += " SELECT SUM (CQ2_DEBITO - CQ2_CREDIT) FROM CQ2020 CQ21 "
                    cQuery += " WHERE CQ2_DATA BETWEEN ‘"+Dtos(mv_par01)+"‘ AND ‘"+Dtos(mv_par02)+"‘ "
                    cQuery += " AND CQ21.D_E_L_E_T_ = ‘‘ "
                    cQuery += " AND CQ2.CQ2_CONTA = CQ21.CQ2_CONTA "
                    cQuery += " AND CQ2.CQ2_CCUSTO = CQ21.CQ2_CCUSTO "
                    cQuery += " AND CQ21.CQ2_MOEDA = ‘01‘ "
                    cQuery += " GROUP BY CQ21.CQ2_CONTA, CQ21.CQ2_CCUSTO) "
          cQuery += " ELSE SUM(CQ2_DEBITO - CQ2_CREDIT) "
     cQuery += " END AS AMOUNTY, ( "
     cQuery += " SELECT CASE "
          cQuery += " WHEN CT1_Z_INTE = ‘‘ THEN ‘NON_INTERCO‘ "
          cQuery += " ELSE CT1_Z_INTE "
     cQuery += " END FROM CT1020 CT1 "
     cQuery += " WHERE CT1.D_E_L_E_T_ = ‘‘ "
     cQuery += " AND CT1_CONTA = CQ2_CONTA)AS INTCO, CASE "
     cQuery += " WHEN SUBSTRING(CQ2_CONTA,1,1) = ‘3‘ THEN ‘F_NET_INCOME‘ "
          cQuery += " WHEN SUBSTRING(CQ2_CONTA,1,1) = ‘4‘ THEN ‘F_NET_INCOME‘ "
          cQuery += " ELSE ‘F_CLO‘ "
     cQuery += " END as FLO, "
     cQuery += " ‘GLDETAIL‘ AS LEDGER "
     cQuery += " FROM CQ2020 CQ2 "
cQuery += " WHERE CQ2_DATA = ‘"+Dtos(mv_par02)+"‘ "
cQuery += " AND CQ2.D_E_L_E_T_ = ‘‘ "
cQuery += " AND CQ2_MOEDA = ‘01‘ "
cQuery += " AND SUBSTRING(CQ2_CONTA,1,1) NOT IN (‘1‘,‘2‘) "
cQuery += " GROUP BY CQ2_CONTA, CQ2_CCUSTO, CQ2_DATA "
cQuery += " UNION "
cQuery += " SELECT CT1_CONTA AS LOCALACCOU , "
     cQuery += " CT1_Z_HFM AS ACCOUNT, "
     cQuery += " ‘EP10231‘ AS ENTITY , "
     cQuery += " ‘NO_COST_CENTER‘ AS LOCALCOST, "
     cQuery += " ‘NO_COST_CENTER‘ AS COSTCTR, "
     cQuery += " SUBSTRING (CQ0_DATA,1,6)+‘00‘ AS TIMEM, CASE "
     cQuery += " WHEN SUBSTRING(CQ0_CONTA,1,1) = ‘3‘ THEN ‘BA404‘ "
          cQuery += " ELSE ‘BA001‘ "
     cQuery += " END as BUSAREA,
     cQuery += " (CQ0_DEBITO - CQ0_CREDIT) AS PERAMT, CASE "
     cQuery += " WHEN SUBSTRING(CQ0_CONTA,1,1) IN (‘3‘,‘4‘) THEN ( "
          cQuery += " SELECT SUM (CQ0_DEBITO - CQ0_CREDIT) FROM CQ0020 CQ01 "
                    cQuery += " WHERE CQ0_DATA BETWEEN ‘"+Dtos(mv_par01)+"‘ AND ‘"+Dtos(mv_par02)+"‘ "
                    cQuery += " AND CQ01.D_E_L_E_T_ = ‘‘ "
                    cQuery += " AND CT1_CONTA = CQ01.CQ0_CONTA "
                    cQuery += " AND CQ01.CQ0_MOEDA = ‘01‘ "
                    cQuery += " GROUP BY CQ01.CQ0_CONTA) "
          cQuery += " ELSE (CQ0_DEBITO - CQ0_CREDIT) "
     cQuery += " END AS AMOUNTY, CASE "
     cQuery += " WHEN CT1_Z_INTE = ‘‘ THEN ‘NON_INTERCO‘ "
          cQuery += " ELSE CT1_Z_INTE "
     cQuery += " END AS INTCO, CASE
     cQuery += " WHEN SUBSTRING(CQ0_CONTA,1,1) = ‘3‘ THEN ‘F_NET_INCOME‘ "
          cQuery += " WHEN SUBSTRING(CQ0_CONTA,1,1) = ‘4‘ THEN ‘F_NET_INCOME‘ "
          cQuery += " ELSE ‘F_CLO‘ "
     cQuery += " END as FLO, "
     cQuery += " ‘GLDETAIL‘ AS LEDGER "
     cQuery += " FROM CQ0020 CQ0, CT1020 CT1 "
cQuery += " WHERE CQ0_DATA = ‘"+Dtos(mv_par02)+"‘ "
cQuery += " AND CQ0.D_E_L_E_T_ = ‘‘ "
cQuery += " AND CT1.D_E_L_E_T_ = ‘‘ "
cQuery += " AND CT1_CONTA = CQ0_CONTA "
cQuery += " AND CQ0_CONTA NOT IN (SELECT CQ2_CONTA FROM CQ2020 WHERE CQ2_DATA = ‘"+Dtos(mv_par02)+"‘ AND SUBSTRING(CQ2_CONTA,1,1) NOT IN (‘1‘,‘2‘) AND CQ2_MOEDA = ‘01‘) AND CQ0_MOEDA = ‘01‘ "
DbUseArea(.T.,"TOPCONN",TCGenQry(,,cQuery),"TRB" ,.T. , .F. )


fWrite(nH,Temp + chr(13)+chr(10) )

fClose(nH)

Msginfo("Arquivo criado :" + cFile)
Return _lRet
Return


Static Function CriaSx1(_cPerg)
     Local _aAreaSX1      := SX1->(GetArea())

     DbSelectArea(‘SX1‘)
     SX1->(DbGoTop())
     SX1->(DbSetOrder(1))

     If !SX1->(DbSeek(_cPerg))
          PutSX1(_cPerg,‘01‘,‘Dt Inicial ?‘               ,‘Dt Inicial ?‘               ,‘Dt Inicial ?‘               ,‘mv_ch1‘,‘D‘,08,0,,‘G‘,,,,,‘mv_par01‘,,,,,,,,,,,,,,,,,{‘Informe a Data inicial‘})
          PutSX1(_cPerg,‘02‘,‘Dt Final ?‘                   ,‘Dt Final ?‘              ,‘Dt Final ?‘              ,‘mv_ch2‘,‘D‘,30,0,,‘G‘,,,,,‘mv_par02‘,,,,,,,,,,,,,,,,,{‘Informe a Data final‘})
    EndIf
    
     RestArea(_aAreaSX1)
Return
      

onde estou errando ?

sempre trabalhei com outras linguagens estou com muita dificuldades nessa

Desde já agradeço

Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário RRO.OLIVEI RRO.OLIVEI em 05/03/2019, 19:59 h
Local: SP  Registro: 25/08/2016  Postagens: 24
Boa Noite, amigo blz?

Pelo que notei, na linha abaixo você executou a query mais precisa pegar o resultado que pode ser 1 ou mais dados e gravar no txt.

No seu caso o resultado está no objeto TRB

DbUseArea(.T.,"TOPCONN",TCGenQry(,,cQuery),"TRB" ,.T. , .F. )

DBSELECTAREA("TRB")

IF TRB->(EOF())
     Alert("Não foi localizado nenhum registro.")
     TRB->(DBCLOSEAREA())
     Return
ENDIF

WHILE TRB->(!EOF())
      FSeek(nH, 0, FS_END)//Posiciona no final do arquivo
      fWrite(nH,TRB->LOCALACCOU ) //Peguei a coluna da sua query
      TRB->(DBSKIP())//Vai para o próximo registro
ENDDO
TRB->(DBCLOSEAREA())

Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário SHISUI19 SHISUI19 em 06/03/2019, 09:09 h
Local: SP  Registro: 30/01/2019  Postagens: 3
RRO.OLIVEI,

Muito obrigado cara, era extamente isso apenas na linha" FSeek(nH, 0, FS_END)"
troquei o "FS_END" por "2" que é a representação do FS_END ,

Muito Obrigado

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