-
Posts
1,291 -
Joined
-
Last visited
-
Days Won
35
Reputation Activity
-
oribeiro got a reaction from aferra in Atualizar dados no xBrowse
Consegui, tinha um comando na aplicação que não deixava pesquisar.
Era esse aqui:
FW_SetUnicode( .T. ) // Essa função não deixa pesquisar acentos no MySQL (não usar)
Obrigado a todos.
-
oribeiro got a reaction from rochinha in ACBRLIB ou melhor ACBRDLL
Boa tarde, Rochinha.
Eu baixei os fontes do ACBrLib e compilei com o Lazarus.
Está tudo funcionando perfeitamente, inclusive o envio direto para a impressora, sem o preview.
Aqui as LIBs do ACBr de NF-e, CT-e, SAT e Mail estão rodando 100%
É muito fácil baixar os fontes e criar as DLLs com o Lazarus.
-
oribeiro got a reaction from rochinha in ACBRLIB ou melhor ACBRDLL
Configurei as três classes NF-e, SAT e CT-e para xHarbour seguindo o exemplo do site do ACBr.
Está tudo rodando perfeitamente. É muito mais rápido e funcional que o ACBrMonitor por não haver troca de arquivos.
-
oribeiro got a reaction from rochinha in ACBrLibSat Windows - x86/x64
Pessoal, estou terminando as rotinas para uso das DLL do ACBr para (NFe, SAT e CTe). Agora apenas com alguns poucos erros. Se precisarem de ajuda, conte comigo. Já trilhei o caminho mais difícil com a ajuda do Jorge.
-
oribeiro got a reaction from Jmsilva in ACBRLIB ou melhor ACBRDLL
Pessoal,
Estou com as rotinas do ACBrNFe32.Dll e ACBrSAT32.Dll funcionando, vou trabalhar agora com o ACBrCTe32.Dll. Daí eu deixarei o ACBrMonitorPLUS no banco de reservas.
Se precisarem de ajuda. Avisem.
-
oribeiro got a reaction from rochinha in Desativação dos protocolos SSL, TLS 1.0 e TLS 1.1
João,
Com SMTPSend.exe eu consegui enviar email de HotMail e OutLook.
Assim:
******************************************************************************************** Function EnviaHotMail( cDe, cPara, cMensagem, cCC, cBCC, cSMTP, cAssunto, cAnexo, cSenhMail ) ******************************************************************************************** TRY cFileName := "htm.txt" // Cria arquivo HTML com a Mensagem MemoWrit(cFileName, cMensagem) cFileTxt := "cmd.txt" // Cria arquivo TXT para o Comandos cFileRet := "ret.txt" // Cria arquivo TXT para o Retorno MemoWrit(cFileTxT, "-f" +cDe +CRLF+; "-t" +cPara +CRLF+; "-c" +cCC +CRLF+; "-b" +cBCC +CRLF+; "-h" +cSMTP +CRLF+; "-s" +cAssunto +CRLF+; "-a" +cAnexo +CRLF+; "-mbhi"+cFileName +CRLF+; "-lu" +cDe +CRLF+; "-lp" +cSenhMail +CRLF+; "-mfH" +CRLF+; "-dNFSD" +CRLF ) MyRun(pPath+"SmtpSend.Exe -@" + cFileTxt + " >"+cFileRet, 0) // Executa o smtpsend.exe lRet := iif("Message sent!"$memoread(cFileRet), .T., .F.) // Verifica o Retorno FErase( cFileName ) // Apaga arquivo HTML FErase( cFileTxt ) // Apaga arquivo TXT FErase( cFileRet ) // Apaga arquivo Retorno SysRefresh() CATCH oError lRet := .F. END lRet:=.T. ******************************************************************************************** Function MYRUN( cComando ) // MsgRun(): Executa um comando DOS e espera até terminar. ******************************************************************************************** Local oShell, Ret oShell := CreateObject( "WScript.Shell" ) Ret := oShell:Run( "%comspec% /c " + cComando, 0, .t. ) oShell := Nil Return If( Ret=0, .t., .f. )
-
oribeiro got a reaction from rochinha in Desativação dos protocolos SSL, TLS 1.0 e TLS 1.1
Maravilha Rochinha.
Agora eu consigo enviar do Hotmail e Outlook com o SMTPSend.exe.
Obrigado.
-
oribeiro got a reaction from evertonlb in Envio de SMS - Pronto
Me cadastrei e dei uma olhada no site. O serviço me interessa.
Você tem um exemplo de integração usando Fivewin + xHarbour?
-
oribeiro got a reaction from kapiaba in Consulta NFe pela Chave
Certo João,
A função NFe_ChecaPortal( cChave, 2 ) deu certinho para a consulta.
Obrigado.
-
oribeiro got a reaction from kapiaba in Instalador de Programas.
João,
Eu uso esse software somente para instalar os executáveis e as bibliotecas necessárias para rodar o sistema.
O meu executável é que verifica se o banco de dados existe ou não, verifica se houve alteração no layout das tabelas, etc.
Mas eu acho que o que você quer está na última aba do instalador chamada "Outros". Lá atem origem, destino e o que fazer se existir.
Se não conseguir com essa versão, baixe a versão mais recente desse utilitário que ela está bem mais completa. Sucesso!
-
oribeiro got a reaction from kapiaba in Instalador de Programas.
Uso a anos o CreateInstall que é leve, simples e eficiente.
https://www.createinstall.com/
-
oribeiro got a reaction from Valdir in xBrowse com Gráfico
Pessoal,
Desenvolvi uma função para criar um Browse com gráfico.
********************************************************************************************* Function xBrwChart(cTitu, aHead, aData) // BROWSE COM GRÁFICO (Oscar 16/08/2019) ********************************************************************************************* // Exemplo: // cTitu := "Demonstratico de Compras x Vendas nos últimos 6 meses." // aHead := {"Descrição", "Jan/19", "Fev/19", "Mar/19", "Abr/19", "Mai/19", "Jun/19"} // aData := {{"Compras" , 100 , 200 , 300 , 50 , 100 , 400 },; // {"Vendas" , 0 , 100 , 500 , 150 , 100 , 400 }} // xBrwChart(cTitu, aHead, aData) Local oDlg, oBrw, oFont, i, aChart:={} Default cTitu := "Título" Default aHead := {} // Cabeçalho Default aData := {} // Dados DEFINE FONT oFont NAME "Segoe UI" SIZE 0,-16 DEFINE DIALOG oDlg SIZE 1200,580 PIXEL TRUEPIXEL FONT oFont TITLE cTitu TRANSPARENT STYLE nOr( WS_CAPTION, WS_THICKFRAME, WS_SYSMENU, WS_MAXIMIZEBOX ) @ 75,20 XBROWSE oBrw SIZE -20,-20 PIXEL OF oDlg DATASOURCE aData AUTOCOLS HEADERS aHead CELL LINES FOOTERS NOBORDER FASTEDIT For i=2 To Len(aHead) AAdd(aChart, aHead[i]) // Separa os valores para o gráfico a partir da segunda coluna oBrw:aCols[ i ]:cEditPicture := '@E 999,999,999.99' // Formata os valores do gráfico com duas casas decimais Next WITH OBJECT oBrw:AddCol() // Adiciona uma coluna com o gráfico :cHeader := "CHART" :aChartCols := aChart :nWidth := 190 END oBrw:bClrStd := {|| {CLR_BLACK, iif(oBrw:Keyno()%2=0, CLR_WHITE, RGB(236,236,236)) } } // Cores nas linhas (Par/Impar) ou (oBrw:cAlias)->(RecN())%2=0 oBrw:nRowHeight := 50 oBrw:CreateFromCode() @ 21, 20 BTNBMP PROMPT { || If( oBrw:Chart:cChartType == "LINE", "&Gráfico de Barras", "&Gráfico de Linhas" ) } ; SIZE 130,30 PIXEL OF oDlg FLAT ; ACTION ( oBrw:Chart:cChartType := If( oBrw:Chart:cChartType == "LINE", "BAR", "LINE" ), oBrw:Refresh(), oBrw:SetFocus() ) @ 21,160 BTNBMP PROMPT "&Imprimir" ; SIZE 130,30 PIXEL OF oDlg FLAT ; WHEN oBrw:oRightCol == nil ACTION oBrw:Report() @ 21,300 BTNBMP PROMPT "&Fechar" ; SIZE 130,30 PIXEL OF oDlg FLAT ; ACTION oDlg:End() Cancel oDlg:bResized := {||(oBrw:nHeight:=oDlg:nHeight()-85,oBrw:nWidth:=oDlg:nWidth()-55,oBrw:Resize())} // Redimensiona o Browse conforme o tamanho do Dialog ACTIVATE DIALOG oDlg CENTERED RELEASE FONT oFont Return nil
-
oribeiro got a reaction from Jorge Andrade in ACBRLIB ou melhor ACBRDLL
Eu uso o ACBr Monitor faz muito tempo e gosto muito dele, se a DLL ou LIB tiver todos os recursos do monitor e as atualizações simultâneas as do monitor eu migrarei. Confirme, por favor, com o RAFAEL sobre as atualizações.
-
oribeiro got a reaction from Jorge Andrade in ACBRLIB ou melhor ACBRDLL
Eu tenho interesse. Como faço para começar?
-
oribeiro got a reaction from kapiaba in Problemas: ntdll, Method bKeyDown
Resolvi! Era uma função que eu tinha incluído no final do ano passado na windows principal que criava as teclas de atalho que estava interferindo no oLbx:nKeyDown.
Obrigado.
-
oribeiro got a reaction from kapiaba in C para xHarbour
Eita João,
Você me ajudou muito!
Só faltava colocar .T. como segundo parâmetro do hb_sha1().
// CRIAR HashCSRT // wCSRT := "G8063VRTNDMO886SFNK5LDUDEI24XJ22YIPO" wChave := "41180678393592000146558900000006041028190697" codigo := wCSRT + wChave codigo1 := hb_sha1(codigo, .T.) codigo2 := HB_Base64encode(codigo1, Len(codigo1)) Msginfo( codigo1+chr(13)+chr(13)+"Modelo: aWv6LeEM4X6u4+qBI2OYZ8grigw="+chr(13)+chr(13)+"Gerado: "+codigo2, "HB_base64encode() -> Tamanho: "+str(len(codigo2)) ) Muito obrigado, mais uma vez.
-
oribeiro got a reaction from frkiko in HashCSRT
Valdir,
Cheguei no resultado com a ajuda do João.
// CRIAR HashCSRT // wCSRT := "G8063VRTNDMO886SFNK5LDUDEI24XJ22YIPO" wChave := "41180678393592000146558900000006041028190697" codigo := wCSRT + wChave codigo1 := hb_sha1(codigo, .T.) codigo2 := HB_Base64encode(codigo1, Len(codigo1)) Msginfo( codigo1+chr(13)+chr(13)+"Modelo: aWv6LeEM4X6u4+qBI2OYZ8grigw="+chr(13)+chr(13)+"Gerado: "+codigo2, "HB_base64encode() -> Tamanho: "+str(len(codigo2)) )
-
-
oribeiro got a reaction from kapiaba in LogOff ao fechar o sistema (resolvido)
Aí João,
Resolveu 100%.
Muito obrigado.
-
oribeiro got a reaction from kapiaba in Contador de Registros
Obrigado João,
Mas essa função retorna a quantidade de campos de uma tabela, eu preciso do número de registros ativos dela.
FCount: - The function returns a numeric value which is the number of field variables available in a work area. If a work area is not used, the return value is zero.
-
oribeiro got a reaction from kapiaba in INDEX MEMORY / TEMPORARY
Achei as respostas nesse link: http://www.pctoledo.com.br/forum/viewtopic.php?f=4&t=16714
1ª) Tanto faz MEMORY ou TEMPORARY
2ª) Quando fecho o arquivo o indice temporário é apagado automaticamente, mas se eu quiser apagá-lo sem fechar o arquivo, basta usar OrdDestroy( "nome_do_arquico_temporario" )
Obrigado.
-
oribeiro got a reaction from kapiaba in ALTERNATIVA A FUNÇÃO FILE()
Dei uma melhorada na função.
Execute assim para permitir que o usuário abandone a função caso não houver retorno do arquivo:
MsgWait1( "Aguarde o retorno do arquvo"+cFile, "Aguarde o retorno", 30, .T., {||File( cFile )} ) Se o usuário não puder cancelar e deve esperar até o arquivo aparecer na pasta, então faça assim:
MsgWait1( "Aguarde o retorno do arquvo"+cFile, "Aguarde o retorno", 30, .F., {||File( cFile )} ) A diferença está no quarto parâmetro .T. ou .F.
O legal dessa função é que mostra para o usuário que o sistema não está travado. É o que eu queria fazer com o MSGRUN()
Confira.
******************************************************************************************* Function MsgWait1( cCaption, cTitle, nSeconds, lBot, bAction ) // MsgWait com "botão" de sair e "função" -> Exemplo: MsgWait1("cCaption", "cTitle", 5, .T., {||File("xxx.txt")} ) // o code block deve retornar (.T.) ******************************************************************************************* LOCAL oDlg, oProg1, oSay, oBtn, bOk, nInicio:=0 cCaption := iif(ValType(cCaption)#"C", "Por favor, aguarde...", cCaption) // Mensagem para a janela cTitle := iif(ValType(cTitle )#"C", "(OASyS) Mensagem com espera programada.", cTitle ) // Título para a janela nSeconds := iif(ValType(nSeconds)#"N", 5, nSeconds) // Quantos segundos a janela ficará aberta lBot := iif(ValType(lBot )#"L", .F., lBot ) // O Botão de Fechar será liberado? Se informado um Code Block será será oculto. bAction := iif(ValType(bAction )#"B", "", bAction ) // Code Block a ser executado. Exemplos: {|| Funcao() } ou {|| File("ent.txt") } // A ação deve sempre retornar (.T.) no fim da execução PRIVATE n := 0 PRIVATE lBtn := .F. PRIVATE lAction := ValType(bAction)="B" PRIVATE lRet := iif(lAction, .F., .T.) DEFINE DIALOG oDlg SIZE 400,300 COLOR CLR_BLUE,CLR_HGRAY FONT oFontGet TITLE cTitle STYLE DS_MODALFRAME PIXEL @ 001,001 GROUP TO 109,199 FONT oFontSay TRANSPARENT PIXEL @ 110,001 GROUP TO 138,199 FONT oFontSay TRANSPARENT PIXEL @ 120,008 METER oProg1 VAR nInicio TOTAL nSeconds NOPERCENTAGE SIZE 145,011 PIXEL @ 120,159 BUTTON oBtn PROMPT "&Fechar" SIZE 35,12.5 ACTION lBtn:=.T. WHEN lBot PIXEL CANCEL @ 010,008 SAY oSay PROMPT cCaption SIZE 189,092 COLOR CLR_RED,CLR_HGRAY PIXEL oBtn:cToolTip:="Atenção: Se você fechar essa tela eu não vou conseguir executar a tarefa e algo pode sair errado." ACTIVATE DIALOG oDlg CENTER ON INIT oDlg:bStart:={|| Increase(oDlg, oProg1, nSeconds, bAction) } Return( lRet ) Static Function Increase(oDlg, oProg1, nSeconds, bAction) oDlg:Refresh() oProg1:Set(0) oProg1:cText := "Essa tela fechará em "+Alltrim(Str(nSeconds))+" segundos." SysRefresh() For n=0 To nSeconds oProg1:Set( n ) oProg1:cText := "Essa tela fechará em "+Alltrim(Str(nSeconds - n))+" segundos." if lAction // Se houver um code block a ser executado: if Eval( bAction ) // - Verifica se a tarefa foi executada. lRet := .T. Exit elseif lBtn .OR. n=nSeconds // - Recomeça a contagem caso não tenha executado a tarefa ainda.. if lBtn .AND. !MsgYesNo("Eu ainda não consegui terminar a tarefa que fui programado para executar, devo continuar até a conclusão?","(OASyS) Estou tentando executar uma tarefa importante.") Exit endif lBtn := .F. n := 0 oProg1:Set( n ) oProg1:cText := "Essa tela fechará em "+Alltrim(Str(nSeconds))+" segundos." endif endif if lBtn Exit endif WaitSeconds( 1 ) SysRefresh() Next oDlg:End() Return nil
-
-
oribeiro got a reaction from Ladinilson in NFe 4.00
Estou usando NF 4.0 com ACBr, ficou show de bola. Recomendo.
-
oribeiro got a reaction from kapiaba in IrfanView: comando batuta para capturar tela.
Esse comando captura a tela inteira e grava no arquivo c:\temp\tela.jpg
Vou ver se acho uma aplicação disso para o sistema. Risos