Jump to content
Fivewin Brasil

PauloPJ

Membros
  • Posts

    138
  • Joined

  • Last visited

  • Days Won

    3

Everything posted by PauloPJ

  1. Será a minha primeira vez participando, gostaria muito de ir porem 29/10 estou casando rsrs.
  2. Ola! Estou usando a libmysql.dll e SQL_FullDelete(.f.). Quando faco uma pesquisa na tabela com dbseek nao esta filtrando o Sql_Deleted=T me retornando o registro deletado, mesmo com o set dele on ativo. Alguem já passou por isso? Agradeco a ajuda de quem puder.
  3. RESOLVIDO O problema era barberagem da Prefeitura de Petrópolis, a Tag <ws_nfe.CONSULTANOTASPROTOCOLOResponsexmlns="NFe"> , está com erro: "ws_nfe." este ponto dentro da tag que era rejeitado pela classe. Obrigado a todos
  4. Ola Kleyber! Obrigado pela postagem Eu retirei esta linha para teste e deu o mesmo problema.
  5. Outra coisa o XML que estou tentando ler é um XML SOAP. Será que tem diferença na interpretação do XML via a classe?
  6. Valeu Kapiaba. Nos links que voçe postou achei uma maneira de dizer qual o erro . HB_XmlErrorDesc(oXmlDoc:nError) o erro é de caracter invalido na tag name. agora qual ??? passando o olho, tirei os : , _ , - das tags mas não resolveu.
  7. Obrigado novamente! o Sistema é todo em Five com alguns methods de harbour e xharbour . Eu tenho isso funcionando com o XML da NFe e NFCe. o problema esta dando da importação do XML da prefeitura de Petrópolis. Como não tem um manual desta classe, eu fico as segas, para saber interpretar o erro. Fiz testes usando C# e funcionou perfeito, fui então testar no Five , eu consigo consumir o web service deles, porem quando volta o XML vem em um formato que a classe TXMLDocument() não consegue ler. Senão vou ter que criar uma classe própria para interpretar o XML. Não queria perder este tempo inventando a roda.
  8. Obrigado ! A Variável cXML := é xml em questão. O erro que aparece é 4, é a variável do oMnuXml:nErro O que diz eu não sei , pois não achei manual contendo esta tabela de erro. // codigo fonte oMnuXml := TXMLDocument():New( cxml, HBXML_STYLE_NOESCAPE ) IF oMnuXml:nError != HBXML_ERROR_NONE Msgstop( "xml com problema " + Str( oMnuXml:nError ) ) ENDIF
  9. Ola Colega eu utilizo assim e funciona muito bem a funcao GERAHASHQRCODE() DEVOLVE O NOME IMAGEM GRAVADA, USANDO A DLL QRCodelib.Dll exemplo: carquivo:=GERAHASHQRCODE({chave,Tipo de ambiente,data de emissao,o DIGVAL da NFe,Valor do ICMS,Valor da nota}) espero que tenha sido util. FUNC GERAHASHQRCODE(aDados) * GERA O QRCODE DA NFCE E GRAVA O ARQUIVO *********************************************************************** LOCAL CHASHQRCODE,ARQUIVOQRCODE local W_NFE_CODIGO_CSN := 'CODIGO DO CSN DA NFC-e' local W_NFE_CODIGO_ITOKEN := "000001" LOCAL cLinha cLinha := 'chNFe=' + aDados[1]+; '&nVersao=' + '100' +; '&tpAmb=' + aDados[2]+; //'&cDest=' + '' + '&dhEmi=' + Lower(str2hex(aDados[3]))+; '&vNF=' + alltrim(aDados[4])+; '&vICMS=' + alltrim(aDados[5])+; '&digVal='+ Lower(str2hex(aDados[6]))+; '&cIdToken=' + W_NFE_CODIGO_ITOKEN ChashQRCODE:=CRIA_HASHCODE(cLinha,W_NFE_CODIGO_CSN) ARQUIVOQRCODE:="TEMP\"+ALLTRIM(aDados[1])+".BMP" geraQRcode(chashQRCODE,ARQUIVOQRCODE) RETURN(ARQUIVOQRCODE) *********************************************************************** FUNC CRIA_HASHCODE(LINHA,CSC) *********************************************************************** local cUrl := 'http://www4.fazenda.rj.gov.br/consultaNFCe/QRCode?' cQrCodeHash := cUrl + linha+'&cHashQRCode=' + lower(hb_sha1(linha+csc,.f.)) return(cQrCodeHash) *********************************************************************** func geraQRcode(cCode,cFile) *********************************************************************** local qrDLL default cCode:="" default cFile:="" #define DC_CALL_STD 0x0020 oQRDLL:=LoadLibrary(W_CAMINHO_SYS+"DLL32\QRCodelib.Dll" ) nResp:=DllCall(oQRDLL,DC_CALL_STD,"FastQRCode",cCode,cFile) FreeLibrary(qrDLL) return nil
  10. Ola Pessoal! Preciso de uma ajuda para decifrar os enigmas. não consigo ler um arquivo xml usando a classe TXmlDocument():New(), da erro 4 O XML em questão é uma resposta de um web-service da prefeitura de Petrópolis. cxml:='<?xmlversion="1.0"?> <SOAP-ENV:Envelopexmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"xmlns:xsd="http://www.w3.org/2001/XMLSchema"xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <SOAP-ENV:Body> <ws_nfe.CONSULTANOTASPROTOCOLOResponsexmlns="NFe"> <Sdt_consultanotasprotocoloout> <Retorno>true</Retorno> <Messages> <Message> <Id>OK</Id> <Type>0</Type> <Description>Notascarregadascomsucesso</Description> <LinErr>0</LinErr> </Message> </Messages> <XML_Notas> <CpfCnpj>52.878.862/0001-15</CpfCnpj> <DtIni>2014-02-12</DtIni> <DtFin>2014-02-12</DtFin> <TipoArq>0</TipoArq> <Versao>2.00</Versao> <Reg20> <Reg20Item> <TipoNf>P</TipoNf> <NumNf>45</NumNf> <SerNf>NFE</SerNf> <DtEmiNf>12/02/2014</DtEmiNf> <DtHrGerNf>12/02/201408:04:41</DtHrGerNf> <CodVernf>116F76843BE21199E8D7</CodVernf> <NumRps>49</NumRps> <SerRps>Edu</SerRps> <DtEmiRps>12/02/2014</DtEmiRps> <TipoCpfCnpjPre>J</TipoCpfCnpjPre> <CpfCnpjPre>52.878.862/0001-15</CpfCnpjPre> <RazSocPre>TesteRPSEletronicoOficinaSN</RazSocPre> <LogPre>VilaManoelFraguas</LogPre> <NumEndPre>123</NumEndPre> <ComplEndPre/> <BairroPre>Quissama</BairroPre> <MunPre>PETROPOLIS</MunPre> <SiglaUFPre>RJ</SiglaUFPre> <CepPre>25615400</CepPre> <EmailPre>comercia@rpseletronico.com.br</EmailPre> <TipoTribPre>SN</TipoTribPre> <DtAdeSN>01/01/2007</DtAdeSN> <AlqIssSN>2.50</AlqIssSN> <SitNf>1</SitNf> <DataCncNf>//00:00:00</DataCncNf> <MotivoCncNf/> <TipoCpfCnpjTom>C</TipoCpfCnpjTom> <CpfCnpjTom>CONSUMIDOR</CpfCnpjTom> <RazSocTom>ConsumidorFinal</RazSocTom> <LogTom>ConsumidorFinal</LogTom> <NumEndTom/> <ComplEndTom/> <BairroTom>ConsumidorFinal</BairroTom> <MunTom>PETROPOLIS</MunTom> <SiglaUFTom>RJ</SiglaUFTom> <CepTom>0</CepTom> <EMailTom/> <LogLocPre/> <NumEndLocPre/> <ComplEndLocPre/> <BairroLocPre/> <MunLocPre>PETROPOLIS</MunLocPre> <SiglaUFLocpre>RJ</SiglaUFLocpre> <CepLocPre>0</CepLocPre> <CodSrv>14.01</CodSrv> <DiscrSrv>Lubrifica?co,limpeza,lustra?co,revisco,cargaerecarga,conserto,restaura?co,blindagem,manuten?coeconserva?codemaquinas,veiculos,aparelhos,equipamentos,motores,elevadoresoudequalquerobjeto(excetope?asepartesempregadas,queficamglksclfjwejgwlel</DiscrSrv> <VlNFS>250.00</VlNFS> <VlDed>0.00</VlDed> <DiscrDed/> <VlBasCalc>250.00</VlBasCalc> <AlqIss>2.50</AlqIss> <VlIss>6.25</VlIss> <VlIssRet>0.00</VlIssRet> <Reg30> <Reg30Item> <TributoSigla>IR</TributoSigla> <TributoAliquota>0.00</TributoAliquota> <TributoValor>0.00</TributoValor> </Reg30Item> <Reg30Item> <TributoSigla>PIS</TributoSigla> <TributoAliquota>0.00</TributoAliquota> <TributoValor>0.00</TributoValor> </Reg30Item> <Reg30Item> <TributoSigla>COFINS</TributoSigla> <TributoAliquota>0.00</TributoAliquota> <TributoValor>0.00</TributoValor> </Reg30Item> <Reg30Item> <TributoSigla>CSLL</TributoSigla> <TributoAliquota>0.00</TributoAliquota> <TributoValor>0.00</TributoValor> </Reg30Item> <Reg30Item> <TributoSigla>INSS</TributoSigla> <TributoAliquota>0.00</TributoAliquota> <TributoValor>0.00</TributoValor> </Reg30Item> <Reg30Item> <TributoSigla>ISS</TributoSigla> <TributoAliquota>0.00</TributoAliquota> <TributoValor>0.00</TributoValor> </Reg30Item> <Reg30Item> <TributoSigla>OUTROS</TributoSigla> <TributoAliquota>0.00</TributoAliquota> <TributoValor>0.00</TributoValor> </Reg30Item> </Reg30> </Reg20Item> </Reg20> <Reg90> <QtdRegNormal>1</QtdRegNormal> <ValorNFS>250.00</ValorNFS> <ValorISS>0.00</ValorISS> <ValorDed>0.00</ValorDed> <ValorIssRet>0.00</ValorIssRet> <QtdReg30>7</QtdReg30> <ValorTributos>0.00</ValorTributos> </Reg90> </XML_Notas> </Sdt_consultanotasprotocoloout> </ws_nfe.CONSULTANOTASPROTOCOLOResponse> </SOAP-ENV:Body> </SOAP-ENV:Envelope>' oMnuXml := TXMLDocument():New( cxml, HBXML_STYLE_NOESCAPE ) IF oMnuXml:nError != HBXML_ERROR_NONE Msgstop( "xml com problema " + Str( oMnuXml:nError ) ) ENDIF DESDE JÁ AGRADEÇO A QUEM CONSEGUIR DECIFRAR O ENIGMA.
  11. Resolvido, o problema era na minha Dialog.prg, eu fiz modificacoes nesta classe e ela me acompanha a varias versoes do fivewin. CTRL+C CTRL+V rsrs, Apenas peguei a Dialog.prg da versão 13.9 e fiz as alteracoes que tinha na outra. VIVA funcionou, Obrigado a ajuda e dica postada ABRACOS A TODOS
  12. É... Realmente o problema é no meu projeto.. Tem alguma classe , lib, dll, sei la, alguma coisa no projeto que esta fazendo isso, se eu compilar separado funciona , mas se eu agregar ao projeto faz o que eu disse. Bem é quebrar a cabeca... Valeu pela ajuda.
  13. Realmente o seu esta normal, mas o meu o dialog fica por cima das abas do folder. Não entendi nada. Vou fazer outros testes pra ver o que pode ser Só da certo se eu definir as Dialogs no momento da definicao do folder, se usar o metodh Additem() da este erro..
  14. A minha é a 13.9 Se puder me mande a folder.prg da sua versao para eu fazer um teste. testei a classe das versoes anteriores e esta com o mesmo problema.
  15. Obrigado Kapiaba pela ajuda. O problema continua mesmo eu usando os dois exemplos acima, que tem até na pasta sample do five, esta dando o mesmo problema Quando adiciona uma nova aba no folder ele cria uma Dialog por cima de tudo, colocando na posicao 0,0 da window ou dialog principal e não dentro do folder.
  16. Obrigado Crisvam, o meu problema não é em usar a classe TFolder, mas o method additem(), que quando cria a tela não coloca dentro da janela do folder, mas na posicao 0,0 da Dialog principal, assim sobrepoe a barra do Folder. Acho que é erro no method.
  17. Ola Galera, preciso de ajuda com folder. Estou fazendo um teste para criar uma nova aba de FOLDER, porem quando ativo um DIALOG neste FOLDER o DIALOG vai para a posicao 0,0 da DIALOG principal e fica por cima da barra do FOLDER. Exemplo abaixo DEFINE DIALOG oDlg RESOURCE "MOVVENDFP" REDEFINE FOLDER oFd PROMPT "1/1" ID 100 OF oDlg DIALOGS "TELA" REDEFINE BUTTON OBT PROMPT "NOVA" ID 50 OF oDlg ACTION (oFd:AddItem(STRzero(oFd:nOption,2),"TELA")) ACTIVATE DIALOG ODLG o Resource "TELA", e simples apenas para cadastro get e say Agradeco a quem puder ajudar.
  18. RESOLVIDO COLOQUEI UMA IMAGEM NA PRIMEIRA COLUNA oBotao := "LoadBitmap( GetResources() ,"BOTAO") cfield := "oBotao,str(NOTA_tmp->PEDIDO,8),NOTA_TMP->MODELO,...." REDEFINE LISTBOX oLbx FIELDS &cField, &cHeader..... oLbx:bLClicked:={|| if(oLbx:ncolAct=1,visualisa(NOTA_TMP->pedido,NOTA_TMP->modelo),nil)} DESTA FORMA QUANDO CLICA UMA VEZ NA IMAGEM QUE ESTA NA COLUNA 1 O SISTEMA EDITA OS DADOS DA NOTA. Obrigado a quem tentou me ajudar..
  19. Obrigado por postarem. A finalidade é a seguinte , eu tenho um módulo de monitoramento de documentos fiscais, e gostaria de colocar na linha do documento, um botão para visualização detalhada, entre outros. Está é uma das aplicações, eu gosto de estudar os recursos e não achei nada sobre. Eu ja tenho isso de outra forma usando teclas F6,F7,etc. Mais ou menos como o + de um tree_view, que expande. Vi que tem o :bAction do listbox, só só funciona no header. Queria fazer isso só que em uma celula do listbox. Se tiver como usar um click simples, eu coloco uma imagem na coluna e simulo o botão. Eu não sei como fazer isso xbrowse. se tiver um exemplo...
  20. Ola Pessoal, preciso de ajuda. Tem como colocar um botão dentro de uma celula do listbox, é possível? Um grande abraço a todos.
  21. 3 PASSOS PARA PEGAR NOVAMENTE O XML NA SEFAZ VERSAO 3.10 PARA QUEM USA O UNINFE. PARA QUANDO DA ERRO NO RECEBIMENTO DE DESTE XML 1o ENVIE NOVAMENTE A NOTA, PARA QUE O SISTEMA RECEBA O ARQUIVO QUE INFORMA A DUPLICIDADE EXEMPLO DO RECEBIMENTO XXXXXXXXXXXXXXX-proc-rec.xml , ESTA NA PASTA RETORNO\ <?xml version="1.0"?> <retConsReciNFe xmlns="http://www.portalfiscal.inf.br/nfe"versao="3.10"> <tpAmb>2</tpAmb> <verAplic>SVRS201504061016</verAplic> <nRec>3330xxxxxxxxxxx</nRec> <cStat>104</cStat> <xMotivo>Lote processado</xMotivo> <cUF>33</cUF> <dhRecbto>2015-04-17T12:37:19-03:00</dhRecbto> <protNFe versao="3.10"> <infProt> <tpAmb>2</tpAmb> <verAplic>SVRS201504061016</verAplic> <chNFe>3315xxxxxxxxxxxxxxxx550010000001571000001280</chNFe> <dhRecbto>2015-04-17T12:37:19-03:00</dhRecbto> <digVal>hIvi4LPlUFp86wOWjsF9gJkghhQ=</digVal> <cStat>204</cStat> <xMotivo>Rejeicao: Duplicidade de NF-e [chNFe:3315xxxxxxxxxxxxxxxx550010000001571000001280][nRec:zzzzzzzzzz]</xMotivo> </infProt> </protNFe> </retConsReciNFe> O Numero do recibo do lote desta nota é composto dos 4 primeiros digitos da tag <nRec> +strzero(nRec do motivo,11) Ficando "33300zzzzzzzzzz" 2o COPIE O XML ASSINADO DA NOTA QUE ESTA NA PASTA ERRO\ PARA A PASTA ENVIADO\EMPROCESSAMENTO 3o CRIE UM XML COM A ESTRUTURA CONFORME ABAIXO 33300zzzzzzzzzz-ped-rec.xml COPIE PARA A PASTA ENVIO\ <?xml version="1.0" encoding="UTF-8"?> <consReciNFe versao="3.10" xmlns="http://www.portalfiscal.inf.br/nfe"> <tpAmb>2</tpAmb> <nRec>33300zzzzzzzzzz</nRec> <cUF>33</cUF> <tpEmis>1</tpEmis> </consReciNFe> PRONTO, ASSIM O UNINFE VAI RECRIAR O XML NA PASTA ENVIADO\AUTORIZADO\AAAMM BOA SORTE A TODOS.
  22. Ola colega , voce precisa colocar a FRSYSTH.DLL na pasta do seu aplicativo. Eu tive um proble assim e era a dll que estava faltando. Outra coisa é o formulario .fr3 que vem junto com o exemplo.
  23. Ola galera! Eu aqui de novo Estou com um problema e não sei como resolver antes de migrar para o five 13.11 funcionava, agora não. Estou criando uma tela para cadastro com folder , a 1o. esta a ficha do produto e a 2o. com a informacao nutricional. So que nao aparece os dados dos gets, como se as variaveis nao tivessem dados. Abaixo, um exemplo de como eu faço, apenas defini o folder 1 para teste , mas nao aparece os dados nem a pau. Agradeco a quem puder ajudar. C_COD_EST := PRODUTO->COD_EST C_REFERENCIA := PRODUTO->COD_EAN C_DESCRICAO := PRODUTO->DESCRICAO DEFINE FONT oFontp NAME "Arial" SIZE 5,-10 NCOR_TEXTO:=NRGB(0,0,0) NCOR_FUNDO:=NRGB(100,100,200) DEFINE DIALOG oDlg RESOURCE "CADPROD_F1" FONT oFontp COLOR NCOR_TEXTO,NCOR_FUNDO oDlg:cCaption:= "Manutenção do Produto "+alltrim(C_COD_EST)+" - "+C_DESCRICAO REDEFINE FOLDER oFolder ; PROMPTS "[F3] Ficha ","[F4] Nutricional " ; DIALOGS "CADPROD_F2","CADPROD_F3" ; ID 100 OF oDlg #define oPage1 oFolder:aDialogs[ 1 ] #define oPage2 oFolder:aDialogs[ 2 ] REDEFINE IMAGE oImagem1 FILE cgFile ID 50 OF oPage1 ADJUST UPDATE oImagem1:Progress(.f.) REDEFINE SAY oSay[01] VAR "Código" ID 10 OF oPage1 COLOR NCOR_TEXTO,NCOR_FUNDO REDEFINE SAY oSay[02] VAR "Cód.barras EAN" ID 11 OF oPage1 COLOR NCOR_TEXTO,NCOR_FUNDO REDEFINE SAY oSay[03] VAR "Descrição" ID 12 OF oPage1 COLOR NCOR_TEXTO,NCOR_FUNDO REDEFINE GET oGet[01] VAR C_COD_EST ID 101 OF oPage1 REDEFINE GET oGet[02] var C_COD_FABR ID 102 OF oPage1 pict "@!" REDEFINE GET oGet[03] var C_DESCRICAO ID 103 OF oPage1 pict "@!" REDEFINE BUTTON PROMPT 'OK-CONFIRMA' ID 60 OF oDlg ACTION (keydownodlgprod(VK_F6,oDlg,oGet,oSay,cOrigem)) REDEFINE BUTTON PROMPT '[ESC]-SAI' ID 61 OF oDlg ACTION (oDlg:END()) oPage1:bKeyDown = { | nKey | keydownodlgprod(nkey,oPage1,oGet,oSay,cOrigem) } oPage2:bKeyDown = { | nKey | keydownodlgprod(nkey,oPage2,oGet,oSay,cOrigem) } oDlg:bStart:={ || oPage1:refresh()} ACTIVATE DIALOG oDlg CENTERED
  24. Ola colega sei como é dificil ajuda mas ai vai a rotina que fiz para gerar o QRCODE Da NFCe + uma funcao para pegar o valor do XML #INCLUDE "Fivewin.ch" #include "hbclass.ch" #include "postgres.ch" #include "hbxml.ch" #include "fileio.ch" *********************************************************************** FUNC GERAHASHQRCODE(cfile) // arquivo xml da nota *********************************************************************** LOCAL arrayProd:=ARRAY_XML(cfile,"nfeProc") LOCAL cChNFe:="" LOCAL ctpAmb:="" LOCAL cdhEmi:="" LOCAL cdigVal:="" LOCAL CvICMS:="" LOCAL CVNF:="" LOCAL LINHA LOCAL CHASHQRCODE W_NFE_CODIGO_CSN := "" W_NFE_CODIGO_ITOKEN := "000001" for ni=1 to len(arrayprod) if len(arrayprod[ni])<>0 if UPPER(arrayprod[ni,1])="CHNFE" cChNFe:=arrayprod[ni,2] end if UPPER(arrayprod[ni,1])="TPAMB" ctpAmb:=arrayprod[ni,2] end if UPPER(arrayprod[ni,1])="DHEMI" cdhEmi:=arrayprod[ni,2] end if UPPER(arrayprod[ni,1])="DIGVAL" cdigval:=arrayprod[ni,2] end if UPPER(arrayprod[ni,1])="VICMS" CVICMS:=arrayprod[ni,2] end if UPPER(arrayprod[ni,1])="VNF" CVNF:=arrayprod[ni,2] end end next linha := 'chNFe=' + cCHNFE+; '&nVersao=' + '100' +; '&tpAmb=' + ctpamb+; //'&cDest=' + '' + '&dhEmi=' + Lower(str2hex(cdhemi))+; '&vNF=' + alltrim(CVNF)+; '&vICMS=' + alltrim(CVICMS)+; '&digVal='+ Lower(str2hex(cdigval))+; '&cIdToken=' + '000001' ChashQRCODE:=CRIA_HASHCODE(LINHA,W_NFE_CODIGO_CSN) ARQUIVOQRCODE:="TEMP\"+ALLTRIM(CCHNFE)+".BMP" // imagem qrcode gerada geraQRcode(chashQRCODE,ARQUIVOQRCODE) RETURN(ARQUIVOQRCODE) *------------------------------------------------------------- func geraQRcode(cCode,cFile) // gera qrcode de um determinado valor e grava no arquivo mencionado *------------------------------------------------------------- local qrDLL default cCode:="" default cFile:="" #define DC_CALL_STD 0x0020 oQRDLL:=LoadLibrary(W_CAMINHO_SYS+"DLL32\QRCodelib.Dll" ) nResp:=DllCall(oQRDLL,DC_CALL_STD,"FastQRCode",cCode,cFile) FreeLibrary(qrDLL) return nil *------------------------------------------------------------------ FUNC ARRAY_XML(cfile,cVariavel) //pega o conteudo de uma tag do xml e retorna um array[tag,valor] *------------------------------------------------------------------ local aRRayret:={} local hfile local oMnuXml if !file(cfile) return({}) end hfile := fopen(cfile) oMnuXml := TXmlDocument():New( hFile ) oXmlNode := oMnuXml:FindFirst(cVariavel) if oXmlNode=nil fclose(hfile) return({}) end oXmlIter := TXmlIterator():New( oXmlNode ) ntam:=1 if oXmlNode != nil while oXmlNode != nil while .T. oTagActual = oXmlIter:Next() If oTagActual = nil exit end aadd(arrayret,{oTagActual:cName,oTagActual:cData}) End oXmlNode := oMnuXml:FindNext(cVariavel) if oXmlNode=nil exit end oXmlIter := TXmlIterator():New( oXmlNode ) oTagActual = oXmlIter:Next() if oTagActual =nil exit end END END fclose(hfile) return(ARRAYRET)
  25. Valeu Kapi, Ajudou miuto. RESOLVIDO coloquei um valor o valor na variavel oFTP:nAccessMode := 0 // #define TIP_RO 0 e defini a path padrao oFTP:oUrl:cPath := cPasta_ftp e quando dou o oFTP:DownloadFile(cArq_local,cArq_remoto ) O CODIGO FICOU ASSIM , PARA QUEM TIVER PROBLEMAS NO ENVIO E RECEPCAO DE ARQUIVOS VIA FTP #include "FiveWin.ch" *------------------------------------------------------------------------- FUNC TRANSMITEFTP(cArq_remoto,cArq_local,cUser,cSenha,cEnd_Ftp,cPasta_Ftp) *------------------------------------------------------------------------- LOCAL LOK:=.F. DEFAULT cArq_remoto :="" DEFAULT cArq_local :="" DEFAULT cUser :="pj" DEFAULT cSenha :="#####" DEFAULT cEnd_ftp :="ftp.pj.com.br" DEFAULT cPasta_ftp :="UP_LOAD" lEnd:=.f. W_TIMOUT := 999 MSGMETER( { | oMeter, oText, oDlg, lEnd | ; LOK:=METERRECEBE_TRANSMITE_FTP(oMeter,@lEnd,cArq_remoto,cArq_local,cUser,cSenha,cEnd_Ftp,cPasta_Ftp,"T") },; cArq_remoto, "TRANSMITINDO O ARQUIVO AGUARDE...","TRANSMISSAO" ) W_TIMOUT := TESTA_VAR('W_TIMOUT','TEMPO PARA BLOQUEIO DO TECLADO','999','N') RETURN(LOK) *------------------------------------------------------------------------- FUNC METERRECEBE_TRANSMITE_FTP(oMeter,lEnd,cArq_remoto,cArq_local,cUser,cSenha,cEnd_Ftp,cPasta_Ftp,cTipo) *------------------------------------------------------------------------- LOCAL LOK default cTipo:="R" // R=recebe T=TRANSMITE cUrl := "ftp://" + cUser + ":" + cSenha + "@" + cEnd_ftp oUrl := tUrl():New( cUrl ) oFTP := tIPClientFtp():New( oUrl, .t. ) //file("desenv.sys") ) oFTP:nDefaultPort := 21 oFTP:nConnTimeout := 3000 oFTP:bUsePasv := .T. if At("@",cUrl)>0 oFTP:oUrl:cServer := cEnd_ftp oFTP:oUrl:cUserID := cUser oFTP:oUrl:cPassword := cSenha endif IF oFTP:Open( cUrl ) oFTP:oUrl:cPath := cPasta_ftp // defini o path padrao // PEGA O TAMANHO DO ARQUIVO if cTipo="R" aTamanho:=oFTP:listfiles(cPasta_ftp+"/"+cArq_remoto) if len(aTamanho)=0 nTamanho:=0 else nTamanho:= aTamanho[1,2] end else nTamanho := fileSize(cArq_local) end if nTamanho=0 //ATamanho[1,2]=0 msgalert( "Arquivo não encontrado !" ,"Atenção") return(.F.) else oDlg:setfocus() oMeter:cText:=if(cTipo="R","recebendo o Arquivos...","Transmitindo o Arquivo...") oMeter:nTotal:=nTamanho //ATamanho[1,2] oMeter:refresh() //SysRefresh() lretorno:=Inicia_Progress(cArq_local,nTamanho,cArq_remoto,oftp,oMeter,ctipo,@lend ) // tirei a pasta do arquivo end oFTP:Close() if lRetorno msgwait(if(cTipo="R","Recebido com sucesso ","Transmitido com sucesso") ,"OK",2) else msgwait( if(cTipo="R","Falha no Recebimento !","Falha na Transmissão !") ,"ERRO",2) endif ELSE cStr := "Não foi possível conectar com o servidor FTP" + " " + oURL:cServer IF oFTP:SocketCon == NIL cStr += Chr( 13 ) + Chr( 10 ) + "Conexão não inicializada" ELSEIF InetErrorCode( oFTP:SocketCon ) == 0 cStr += Chr( 13 ) + Chr( 10 ) + "Resposta do servidor:" + " "+ oFTP:cReply ELSE cStr += Chr( 13 ) + Chr( 10 ) + "Erro na conexão:" + " " +InetErrorDesc( oFTP:SocketCon ) ENDIF msgstop( oemtoansi(cStr),"ERRO") lRetorno := .F. ENDIF ARQ:="FTP.LOG" IF FILE(ARQ) DELE FILE &ARQ END FOR NI=0 TO 20 ARQ:="FTP"+ALLTRIM(STR(NI,2))+".LOG" IF FILE(ARQ) DELE FILE &ARQ END NEXT return lretorno ************************************************* Function Inicia_Progress(cArq_local,wTotal,cArq_remoto,oftp,oMeter,cTipo,lend) ************************************************* local vol:=.f. oFtp:exGauge := { | done, size| PROGRESSO(done, wTotal,ometer,@lend,oftp ) } if cTipo="R" vol:=oFtp:DownloadFile(cArq_local,cArq_remoto ) else vol:=oFtp:UploadFile(cArq_local,cArq_remoto ) end return vol **************************************************** FUNC PROGRESSO( ndone, wTotal,ometer1,lEnd,oFtp ) **************************************************** IF ndone > 0 if lend if msgnoyes("Confirma a Saída do processo?","Atenção") oFtp:quit() return END lEnd:=.f. end nProgresso := Int( (ndone/wTotal)*100 ) ometer1:set(ndone) ENDIF RETURN Obrigado a todos que visitaram e ao Kapiaba pelos post.
×
×
  • Create New...