Jump to content
Fivewin Brasil

emotta

Membros
  • Posts

    1,609
  • Joined

  • Last visited

  • Days Won

    88

Everything posted by emotta

  1. If oBtn:lActive MsgStop("Botao ativo") Else MsgStop("Botao desativado") EndIf
  2. Edu, no meu sistema eu considero em campos datas ano menor do que 1900 ou maior do que 2100 inválidos. Realmente no SQL SERVER se mandar gravar anos muitos antigos ou muito no futuro dá erro.
  3. sim, exatamente, foi por isso que eu disse "tem que ser usada com cuidado", o cuidado é exatamente esse.
  4. tem q ser usada com cuidado, imagina que tem um processo de recalculo que demora 30 minutos pra terminar, se não desativar isso ela vai derrubar o processo no meio.
  5. emotta

    JSON

    Isso é um hash e dps transformado em JSON esse codigo abaixo: aResultado := hb_JSonEncode( { "codigo"=>cCodigo, "nome"=>cNome, "sexo"=>cSexo }, .T. ) é o mesmo que fazer isso: hDados := Hash() hDados[ "codigo"] := cCodigo hDados[ "nome"] := cNome hDados[ "sexo"] := cSexo aResultado := hb_JSonEncode( hDados, .T. ) em aResultado é uma string do tipo json { "codigo": "00001", "nome": "Marcio Augusto", "sexo": "M" }
  6. faz tempo que não mexo com isso, mas eu verificava a resolução com base na window principal. Fazia desta forma: (não sei se vai te ajudar) nHeight:= oObjWnd:nHeight nWidth := oObjWnd:nWidth
  7. consegui fazer, se algum tb precisar de algo doido como isso segue o código... #DEFINE CRLF Chr(13) + Chr(10) Function TestProcess(nSecs) Local cFile := "services.txt" Local cCmd := 'tasklist /fi "imagename eq pontorpo.exe" /v /fo table > ' + cFile Local nPid Local cFile_Killed := "killeds.txt" If nSecs == nil nSecs := 30 EndIf While Inkey(nSecs) # 27 ? Time() + " Verificando... " __Run(cCmd) HB_FUSE(cFile) While !HB_FEOF() cLinha := HB_FREADLN() If Upper("Unrecoverable error 9006") in Upper(cLinha) nPid := Val(SubStr(cLinha, 27, 8)) ? nPid KillPid(nPid) MemoWrit(cFile_Killed, Memoread(cFile_Killed) + Time() + " => " + cLinha + CRLF) EndIf HB_FSKIP() EndDo HB_FUSE() EndDo Return Static Function KillPid(nPid) Local cCmd := "taskkill /PID ? /F" cCmd := StrTran(cCmd, "?", AllTrim(Str(nPid,10))) ? cCmd __Run(cCmd) Return
  8. Pessoal estou precisando fechar outro aplicativo através de um programa. Eu tenho vários executáveis do sistema sendo executados em um servidor. Basicamente eles ficam checando uma tabela no SQL e quando caí algo nela, um desses serviços pega o registro pra processar. Este processo geralmente é um relatório do sistema. Ocorre que eventualmente o aplicativo que está processando o relatório da de memória, o famoso: Unrecoverable error 9006: --------------------------- hb_xgrab can't allocate memory Esse erro aparece dentro de uma telinha, tipo o msgstop do fivewin, e fica aguardando o OK para só então finalizar o executavel. É aí que entra minha necessidade: Eu preciso que um outro executavel que está rodando neste mesmo servidor, identifique que essa janela foi aberta e então obtenha o PID do executável. Tendo o PID eu já consigo fechar o executavel. Então meu problema não é o estouro de memória do HB_XGRAB e nem fechar o aplicativo através do PID, o que eu preciso é saber que aconteceu esse erro e aí tomar minhas providencias. Eu utilizo xHarbour no modo console, mas se a solução for em fivewin ou até em outra linguagem já vai ajudar muito. vlwwww
  9. Existem três serviços que são o mesmo nivel, são: AWS / AZURE / GOOGLE CLOUD Qualquer outro está abaixo desses três. Tenho o sistema hospedado no Azure (VM e SQL como serviço) já a mais de 2 anos, milhares de usuários e nunca caiu. Então a minha dica é Azure, mas entendo que AWS e GOOGLE também seriam excelentes alternativas. Qualquer outra entendo que são inferiores a esses três. Isso é minha opinião.
  10. Consegui fazer o código abaixo rodar, porem na linha 73: oComunicacao:setOption( 3, "CURRENT_USER\MY\" + ::cCertificado ) eu gostaria de saber o que colocar em cCertificado. É a chave publica ou privada do certificado digital a1? Eu coloco o caminho ou o conteudo da chave nele? alguem pode me ajudar? segue abaixo o codigo fonte completo: (ao executar eu estou recebendo a resposta do esocial porem obviamente recusando, mas pelo menos está batendo la) #include "hbclass.ch" #ifndef XML_UTF8 #define XML_UTF8 '<?xml version="1.0" encoding="UTF-8"?>' #endif FUNCTION Main() LOCAL cChave := "1.2.201709.0000000000000226099" LOCAL oESocial := ESocialClass():New() oESocial:cCertificado := "xxxxxxxxxxxxxxxxxxxx" oESocial:ConsultaRetornoLote( cChave ) ? oEsocial:cXmlRetorno RETURN( NIL ) CREATE CLASS ESocialClass VAR cCertificado INIT "" VAR cUrl INIT "" VAR cSoapAction INIT "" VAR cXmlDocumento INIT "" VAR cXmlEnvelope INIT "" VAR cXmlRetorno INIT "" METHOD ConsultaRetornoLote( cChave, cCertificado ) METHOD MicrosoftXmlSoapPost() ENDCLASS METHOD ConsultaRetornoLote( cChave, cCertificado ) CLASS ESocialClass IF cCertificado != NIL ::cCertificado := cCertificado ENDIF ::cUrl := "https://webservices.producaorestrita.esocial.gov.br/servicos/empregador/consultarloteeventos/WsConsultarLoteEventos.svc" ::cSOAPAction := "http://www.esocial.gov.br/servicos/empregador/lote/eventos/envio/consulta/retornoProcessamento/v1_1_0/ServicoConsultarLoteEventos/ConsultarLoteEventos" ::cXmlDocumento := ; '<eSocial xmlns="http://www.esocial.gov.br/schema/lote/eventos/envio/consulta/retornoProcessamento/v1_0_0">' + ; '<consultaLoteEventos>' + ; '<protocoloEnvio>' + cChave + '</protocoloEnvio>' + ; '</consultaLoteEventos>' + ; '</eSocial>' ::cXmlEnvelope := XML_UTF8 + ; '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" ' + ; 'xmlns:v1="http://www.esocial.gov.br/servicos/empregador/lote/eventos/envio/consulta/retornoProcessamento/v1_1_0">' + ; '<soapenv:Header/>' + ; '<soapenv:Body>' + ; '<consultaLoteEventos>' + ; '<consulta>' + ; ::cXmlDocumento + ; '</consulta>' + ; '</consultaLoteEventos>' + ; '</soapenv:Body>' + ; '</soapenv:Envelope>' hb_MemoWrit( "consulta.xml", ::cXmlEnvelope ) ::MicrosoftXmlSoapPost() RETURN ::cXmlRetorno METHOD MicrosoftXmlSoapPost() CLASS ESocialClass LOCAL oComunicacao oComunicacao = CreateObject( "MSXML2.ServerXMLHTTP.6.0" ) // oComunicacao:setOption( 3, "CURRENT_USER\MY\" + ::cCertificado ) oComunicacao:open( "POST", ::cUrl, .F. ) oComunicacao:SetRequestHeader( "SOAPAction", ::cSOAPAction ) oComunicacao:SetRequestHeader( "Content-Type", "text/xml; charset=utf-8" ) oComunicacao:send( ::cXmlEnvelope ) DO WHILE oComunicacao:readyState <> 4 Inkey( 0.5 ) ENDDO ::cXmlRetorno := oComunicacao:responseText RETURN NIL
  11. Vlw Kapiaba, mas inicialmente gostaria de fazer sem usar o ACBR, já que eu não preciso de todo o eSocial mas somente a parte do download de eventos do trabalhador.
  12. Fantástico Infosys. Se não for pedir demais vc tem um exemplo, em qualquer linguagem (pode ser tb via CURL) para obter esses dados? (no caso o que vou precisar é dos eventos de trabalhadores)
  13. Como eu já vi algumas pessoas postando duvidas de eSocial aqui imagino que tenham pessoas que possam me ajudar. Eu preciso fazer download, via aplicação, de eventos que estão no eSocial. Hoje é possivel fazer esse download pelo portal (https://www.gov.br/esocial/pt-br/noticias/esocial-download-para-facilitar-a-vida-do-empregador) Eu gostaria de fazer esse download via aplicação, tanto o pedido como o download do arquivo. Alguém aqui sabe como fazer? O exemplo pode ser em qualquer linguagem e eu já sei que com certeza vai precisar do certificado digital da empresa. Fico agradecido se alguém puder me ajudar nisso abraços
  14. então é isso, mysql tem um comportamento diferente do sql server neste sentido. Se vc executar essa query com os mesmos dados em sql server vai dar erro.
  15. Oliveiros, em qual banco você está testando isso? Em SQL SERVER da erro um select como esse. Todas as colunas do select precisam estar no group senão da erro. No caso do seu exemplo se eu rodar em sql server eu tenho duas opções: ou retiro a observação do select ou coloca ela no group by junto as demais.
  16. exatamente Edu, foi por isso que eu coloquei o select com o group by com todos as colunas do select
  17. Oliveiros eu não testei mas acho que é necessário colocar as outras colunas no group. Edu, se der erro a solução passada acima tente a seguinte: SELECT lote, seq, tipo, secao, SUM(estoqatual) as total FROM teste WHERE tipo = "51200" GROUP BY lote, seq, tipo, secao e se quiser ordenar trabalhe com order by SELECT lote, seq, tipo, secao, SUM(estoqatual) as total FROM teste WHERE tipo = "51200" GROUP BY lote, seq, tipo, secao ORDER BY LOTE, SEQ, TIPO, SECAO
  18. Ariston, muito legal, mas ler XML quando tem a possibilidade de ler JSON é furada, deixa o código mais complexo... Veja como fica mais simples ler o Json Static function ConsultaCep() Local cCep := "13380003" Local cLink := "https://viacep.com.br/ws/" + cCep + "/json" Local hCep := Hash() cJson_Cep := Emt_GetHtml(cLink) cJson_Cep := SemAcento(cJson_Cep) hb_jsondecode(cJson_Cep,@hCep) Try ? hCep['bairro'] ? hCep['logradouro'] ? hCep['localidade'] ? hCep['uf'] Catch ? 'erro ao buscar cep' End Return Static Function Emt_GetHtml(cLink) Local oOle Local cHtml := "" Try oOle := CreateObject( "Microsoft.XMLHTTP" ) oOle:Open( "GET", cLink, .f. ) oOle:Send() cHtml := oOle:ResponseBody oOle := nil Catch End Return cHtml
  19. sugestão, busque em formato json que é mais pratico para manipular https://viacep.com.br/ws/NUMERO_SEU_CEP_SEM_TRACOS/json
  20. Lembro dele de quando comecei a ver fivewin em 2000, na época que o forum era no formato de news via outlook, bons tempos. Usei por muitos anos TSBROWSE, até migrar para xBrowse. Mais um da antiga que se vai. Uma perda para comunidade.
  21. A solução para esse caso é vc criar a sua própria sequencia, veja no link abaixo como fazer isso. https://stackoverflow.com/questions/26578313/how-do-i-create-a-sequence-in-mysql
  22. eu não tenho certeza mas acredito que não, a limitação é no DBF, mas se conseguir avisa o pessoal....
  23. a 20 anos atras integrei com uma balança e eles fornecerem DLL. Essa ai não forneceu nada? tem alguma sdk? ps: achei o link é esse e com exemplos e documentação: https://www.weightech.com.br/wtreadweight
  24. Vejam essa documentação da TOTVS sobre o assunto, talvez ajude. https://tdn.totvs.com/display/tec/Application+Server+-+Uso+de+e-mail+com+GMail?spaceEditingRestriction=true
×
×
  • Create New...