Edu
-
Posts
126 -
Joined
-
Last visited
-
Days Won
3
Posts posted by Edu
-
-
Caro mkyx,
Não resolveu.
-
Kapiaba,
Não consegui! Interessante que se eu colocar o nome do usuário = usuario@dominio.com.br, não consegue estabelecer conexão. Como se a url estivesse mal formada. Dá erro logo de cara. Mas se eu colocar só o nome do usuário, ele estabelece a conexão e retorna o erro de autenticação.
Não sei mais o que fazer...
-
Prezados,
Bom dia!
Eu tenho uma rotina de conexão com servidor FTP que funcionava bem com a Locaweb, porém mudamos para Hostgator e parou de funcionar.
Ao tentar conectar retorna o erro: 530 - Login authentication failed.
Obs.: No Filezilla e pelo cmd funciona normal.
Alguém sabe me dizer a causa disso.
********************************************************************************
FUNCTION ConnectFTP()
* Estabelece a conexao com o servidor FTP
LOCAL aFiles, lExistDir
IF !IsInternet()
Msginfo("Você não está conectado à internet!", "Atenção")
RETURN NIL
ENDIF
PARAM_CON() // obtem as variaveis de conexaocUrl := "ftp://" + cUser + ":" + cPassword + "@" + cServer
oUrl := tUrl():New( cUrl + cDirectory )
oFTP := tIPClientFtp():New( oUrl, .T. )
oFTP:nConnTimeout := 20000
oFTP:bUsePasv := .T.
// Comprobamos si el usuario contiene una @ para forzar el userid
IF At( "@", cUser ) > 0
oFTP:oUrl:cServer := cServer
oFTP:oUrl:cUserID := cUser
oFTP:oUrl:cPassword := cPassword
ENDIF
IF oFTP:Open( cUrl )
* Obtem a lista de arquivos e pastas na raiz do FTP
aFiles := oFtp:listFiles()
* verifica se o diretorio principal existe
lExistDir:= .f.
FOR i:= 1 TO LEN(aFiles)
IF aFiles[i,1] == "VALIDADE"
lExistDir:= .t.
ELSE
lExistDir:= .f.
ENDIF
NEXT
* Se nao existir, cria o diretorio
IF !lExistDir
oFtp:mkd( "VALIDADE" ) // cria a pasta dentro do ftp
ENDIF
oFtp:Cwd("VALIDADE") // acessa o diretorioMsginfo("Conexão com servidor FTP estabelecida com sucesso!", "Ok")
lConnected:= .t.
Grava_historico("Conexão com o Servidor FTP iniciada")
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:SocketControl )
ENDIFmsgstop(cStr,"Erro")
ENDIF
RETURN NIL -
Boa tarde amigo.
Tenta assim:
SELECT DISTINCT Clientes.cod, Clientes.nome, NF.nfe, max(NF.dtanfe) from Clientes INNER JOIN NF
ON Clientes.cod = NF.codigoDoCliente ORDER BY Clientes.cod;Na cláusula ON : Substituir pelos campos de relacionamento das suas tabelas.
Na cláusula ORDER BY: Substituir pelo campo que queira ordenar.
Abraço.
-
Boa tarde.Function GetNtpDate() retrieves the internet "time" from a time server.Please review samples\itime.prgObs.: Acho que só funciona nas versões do FWH 1308 em diante.Abs.
-
Tenta com a classe FGet - Format Get.
Ela possui a propriedade nAlign e o metodo SetAlign.
Samples: fw\samples\testfget.prg
-
Boa tarde.
Se você estiver usando Pelles, dá pra alinhar nas propriedades do objeto. Caso contrário você pode alinhar na PICTURE "@R 99999999"
Abs.
-
Bom dia galera.
Existe funções do Habour para criar 'background tasks'. Achei interessante!
Abs.
HB_IDLEADD()Adds the background task.SyntaxHB_IDLEADD( <bAction> ) --> nHandleArgument(s)<bAction> is a codeblock that will be executed during idle states. There are no arguments passed to this codeblock during evaluation.Returns<nHandle> The handle (an integer value) that identifies the task. This handle can be used for deleting the task.DescriptionHB_IDLEADD() adds a passed codeblock to the list of background tasks that will be evaluated during the idle states. There is no limit for the number of tasks.Example(s)nTask := HB_IDLEADD( {|| SayTime() } )
Referência: http://www.fivetechsoft.com/harbour-docs/api.html#hb_idleadd
-
-
-
Obrigado Kapiaba!
Vou testar aqui.
Abraço.
-
Boa tarde amigos. Gostaria de uma ajuda na seguinte situação, as vezes quando ocorre algum erro ou por alguma adversidade externa, o sistema para de funcionar e o usuário fecha. Até ai tudo bem, porém algumas vezes o processo fica "preso" no gerenciador de tarefas da máquina, impossibilitando a atualização do sistema e/ou cópia dos DBFs.
Eu tive a seguinte ideia: Toda vez que um usuário fechar o sistema, executaria uma função que mataria o processo do sistema no Windows, se o mesmo existisse. A princípio funcionaria se o encerramento do sistema fosse de forma normal. Mas quando por exemplo, o usuário está no meio de uma operação e perde conexão de rede com o servidor. A partir daí, o sistema vai parar de responder e provavelmente, acontecerá o caso explicado acima. Isto posto, se eu precisar fazer uma atualização do sistema, eu não vou conseguir pois arquivos estarão em uso na rede.
Então eu outra ideia, que seria criar um arquivo texto com o IP da maquina e o código do usuário toda vez que o usuário efetuasse login. Este arquivo será apagado quando o usuário sair do sistema de forma normal, caso contrário o arquivo será mantido. Quando for efetuado uma atualização, eu carregaria esses arquivos, para obter o endereço IP das máquinas que provavelmente estão com a instância no gerenciador de tarefas e criaria um batch file com o código para matar o processo, copiaria este arquivo para a maquina na rede e executava ele. Não sei se isso é viável.
Gostaria de sugestões de vocês sobre o assunto. Grato!
-
Bom dia!
Tente exportar direto do excel para DBF. Lembrando que o nome das colunas não podem ultrapassar de 10 caracteres.
>> Salvar arquivo xls em dbf* Baixar o suplemento do excel. Arquivo SaveDBFIV.xlam (suplemento do Excel para exportar DBF)* Ao fazer o download do arquivo SaveDBFIV.xlam, descompacte-o e coloque-o na pastaC:\Users\Nome do usuário\AppData\Roaming\Microsoft\Suplementos ou outra utilizadapara complementos, AddIns e suplementos (dependendo do sistema operacional, a localização da pasta pode ser diferente).* Clicar no botão Office ou menu Arquivo, dependendo da versão do Office.Selecionar a opção Suplementos. Clicar no botão Ir...Clicar em Procurar...Selecionar o arquivo baixado e confirmar.* Agora só salvar como o arquivo ou Arquivo -> Suplementos e selecionar o DBF no tipo do arquivo. -
Muito Bom!!
É isso mesmo! Só pra complementar, li sobre o assunto no Wikipedia, que descreve bem como funciona:
HTTP Daemon is a software program that runs in the background of a web server and waits for the incoming server requests. The daemon answers the request automatically and serves the hypertext and multimedia documents over the internet using HTTP.
-
Bom dia!
Nunca usei. Serve pra que?
-
Boa tarde!
Pelo que vi no programa Editor, está gravado em Hexa. Mas quando vou extrair retorna o erro dizendo que não existe o nome do campo.
Executei o print dos nomes das colunas e a coluna 'Foto' não imprime.
Pesquisei sobre o assunto, algumas pessoas falaram que pode estar no arquivo de extensão (.MB). Se estiver, não sei como abrir este arquivo.
-
Bom dia amigos!
Estou convertendo um banco de dados Paradox via ADO, está tudo indo bem mas não consigo extrair a imagem do banco de dados.
Quando abro no programa PDE(Paradox Data Edit), a imagem está lá.
O erro retornado é que o campo não existe. Alguém tem alguma ideia de como fazer isso?
-
Bom dia amigos!
Estou convertendo um banco de dados Paradox via ADO, está tudo indo bem mas não consigo extrair a imagem do banco de dados.
Quando abro no programa PDE(Paradox Data Edit), a imagem está lá.
O erro retornado é que o campo não existe. Alguém tem alguma ideia de como fazer isso?
-
Boa tarde!
Eu consegui acessar o SQL SERVER via ADODB.
Não precisei instalar nada.
Tenta assim:
TryMSQL:= CreateObject("ADODB.Connection")MSQL:Open("Driver=SQL Server; network=dbmssocn; Server="+wServer+"; database="+wBanco+"; uid="+wUser+"; pwd="+wPass+";")Catch oErrorMsginfo("Erro de conexão com SQL Server: "+oError:description)RETURN NILEnd -
Galera. Pra quem não entendeu muito bem, este link explica sobre o Agendador de tarefas [schtasks.exe]
https://support.microsoft.com/pt-br/kb/814596
Abs.
-
Boa tarde amigo!
Aqui vai um exemplo que fiz pra baixar o captcha do website da NF-e. Creio que servirá pra você.
*************************************************************************FUNCTION BaixaCaptcha()* Funcao que baixa a imagem captchaLOCAL ErroNET:= .F.LOCAL cUrl, oPg, cBufLOCAL cImage:= ""IF !IsInternet()MsgInfo("Equipamento sem conexão com a Internet")RETURN cImageENDIFoPg:=CreateObject("Microsoft.XMLHTTP")cUrl:= "https://www.nfe.fazenda.gov.br/scripts/srf/intercepta/captcha.aspx?opt=image"// link da imagemoPg:Open("GET", cUrl, .F.)* Tenta enviar a requisicaoTryoPg:Send()Catch oErrorErroNET:=.T.End TryIF !ErroNET* obtem o retorno da requisicaocBuf := oPg:responseBody* grava o arquivo de imagemmemowrit("./captcha.jpg", cBuf)cImage:= "./captcha.jpg"ELSEMsgInfo("Ocorreu um erro de conexão com o website da receita federal. Tente mais tarde.")ENDIFRETURN cImage -
Bom dia!
Vc pode executar um ascan no vetor do combobox. Testa assim:
REDEFINE COMBOBOX oCbx[1] VAR vUF items("ac","al","Am","Ap",Ba",....) ID 100 OF oDlg UPDATE
oCbx[1]:bLClicked:={|| nAt:= ASCAN(oCbx[1]:aItems,,,{|X| X[1] == vUF}) }
-
Muito bom!!
Abs.
-
Eu faço com o TXBROWSE e funciona perfeitamente.
oBrw:= TXBROWSE():NEW()oBrw:CreateFromResource(4008)oBrw:SetArray(vetParc)xBrStyles(oBrw, 1)oBrw:aCols[1]:cHeader := "Parcela"oBrw:aCols[1]:bStrData:= {|| vetParc[oBrw:nArrayAt,1] }oBrw:aCols[1]:nWidth := 42oBrw:aCols[1]:nHeadStrAlign:= AL_LEFToBrw:aCols[1]:nDataStrAlign:= AL_RIGHToBrw:aCols[2]:cHeader := "Valor"oBrw:aCols[2]:bStrData:= {|| TRANSF(vetParc[oBrw:nArrayAt,2],"@E 999,999.99") }oBrw:aCols[2]:nWidth := 90oBrw:aCols[2]:nHeadStrAlign:= AL_LEFToBrw:aCols[2]:nDataStrAlign:= AL_RIGHToBrw:aCols[3]:cHeader := "Data"oBrw:aCols[3]:bStrData:= {|| DTOC(vetParc[oBrw:nArrayAt,3]) }oBrw:aCols[3]:nWidth := 70oBrw:aCols[3]:nHeadStrAlign:= AL_LEFToBrw:aCols[3]:nDataStrAlign:= AL_LEFToBrw:aCols[3]:nEditType := EDIT_GEToBrw:aCols[3]:cEditPicture := "99/99/9999"oBrw:aCols[3]:bEditValue := {||vetParc[oBrw:nArrayAt,3]}oBrw:aCols[3]:bOnPostEdit := {|aCols, uVal, nKey| If(nKey == VK_RETURN .AND. xplano == 2 ,;vetParc[oBrw:nArrayAt,3]:= uVal, NIL)}oBrw:aCols[3]:bEditWhen := {|| xplano == 2 }oBrw:aCols[4]:cHeader := "Forma de Pagamento"oBrw:aCols[4]:bStrData:= {|| vetParc[oBrw:nArrayAt,4] }oBrw:aCols[4]:nWidth := 200oBrw:aCols[4]:nHeadStrAlign := AL_LEFToBrw:aCols[4]:nEditType := 2oBrw:aCols[4]:aEditListTxt := aFormaoBrw:aCols[4]:aEditListBound := aFormaoBrw:aCols[4]:bLDClickData := {|| NIL } // desabilita o duplo-clique nesta coluna
Problemas de conexão com FTP - Hostgator (Resolvido)
in Programação
Posted
Caro
ADutheil,
A variavel cDirectory está vazia neste momento. Já tentei deste modo mas não funcionou. Acho que esta classe não suporta o protocolo TLS.
Desconheço a curl easy, mas consegui com outra classe chamada qFtpClient.
Para quem estiver interessado. Segue anexo.
qFTPClient.txt