-
Posts
500 -
Joined
-
Last visited
-
Days Won
11
Posts posted by Ariston Santos
-
-
Você precisa baixar a versão trial e tentar programar seguindo as orientações de https://www.b4x.com/b4a.html
Eu consegui desenvolver um App bem básico dentro do prazo de 30 dias e isso me deu segurança para comprar a versão full. Creio que você também conseguirá.
-
Nos PCs (local) uso DBFCDX mesmo. No servidor de hospedagem (BD remoto) uso MySQL. Nos dispositivos dos vendedores externos (Android) uso SqlLite (nativo).
A atualização dos dispositivos dos vendedores externos é feita dessa forma:
• Envio do DBF local para o MySQL remoto via SQLRdd;
• A partir dos dispositivos acesso uma página em php que obtém os dados do MySQL via JSON e salvo no SqlLite.
Deu trabalho, mas funciona.
-
Citando Rochinha e Jackson.
Até tentei aprender Lazarus mas parei porque não foi necessário mudar de linguagem. Para não ter que sair do Fivewin fiz o seguinte:
• Para gerenciamento de NF[C]-e e boletos estou usando o ACBrMonitorPLUS. Muito bom! Não tenho problemas;
• Para desenvolvimento para Android estou usando o Basic4Android (www.b4x.com). Paguei os US$ 25,00 do Google Play Developer Console para poder disponibilizar meu App na PlayStore, assim meus clientes podem baixar/atualizar o SISCOMDroid sem nenhum problema. Também tem o B4I (Basic4ios) que é 0800, mas eu ainda não quis aprender.
Como podem ver, dá para fazer tudo sem ter que sair do Fivewin. Só não estou usando FiveTouch porque o Sr. Linhares demorou demais no lançamento e meus clientes tinham pressa. Agora que já domino o B4A, não dá mais para tentar outra ferramenta.
-
Testei novamente e baixou sem problema. A bronca deve ser somente no PC de quem não está conseguindo baixar. Tentem outro navegador, ou até mesmo copiando e colando o link na barra de endereços.
http://www.arsoft-ap.com.br/fd456406745d816a45cae554c788e754/08dc2d813326fd8ac79eb734d96b56ff/sisponto_completo.zip
-
Posso disponibilizar sim. Baixem deste link:
-
Já tentou com RICHEDIT. Acho que dá pra salvar em BLOB (Memo) ?
#include "Richedit.ch" FUNCTION TESTRICH() local oDlg, oRich local hRichDLL local lSyntaxHL := .f. hOldRes := GetResources() hRichDLL := LoadLibrary( "riched20.dll" ) DEFINE DIALOG oDlg NAME "Test" oRich = TRichEdit():Redefine( 100, { || "" }, oDlg ) oRich:lHighLight = .f. oRich:lreadonly := .t. REDEFINE BUTTON ID 110 ; ACTION oRich:SetText( MemoRead( "TestRich.prg" ) ) REDEFINE CHECKBOX lSyntaxHL ID 115 OF oDlg ; ON CHANGE ( oRich:lHighLight := lSyntaxHL,; oRich:SetText( oRich:GetText() ) ) REDEFINE BUTTON ID 120 ; ACTION oRich:LoadFromRTFFile( cGetFile( "RTF file (*.rtf) | *.rtf" ) ) REDEFINE BUTTON ID 130 ; ACTION oRich:SaveToRTFFile( cGetFile( "RTF file (*.rtf) | *.rtf",; "Please write a filename", "test" ) ) REDEFINE BUTTON ID 998 ACTION ( oRich:GoToLine( 10 ), oRich:SetFocus() ) ACTIVATE DIALOG oDlg CENTERED ON INIT SetResources(hRichDLL) FreeLibrary( hRichDLL ) SetResources(hOldRes) RETURN NIL
-
Tenho um programa de registro de ponto do funcionário que é por biometria. Se quiser o código fonte para adaptar, entre em contato por e-mail: ariston.ap@hotmail.com
-
Também já passei por isso. Lembro que na época os cabos da rede do cliente passavam por baixo do balcão e alguns estavam aparecendo e os funcionários pisavam nos cabos e acabou rompendo um dos fios de um dos cabos da rede. Por incrível que pareça a rede não parou de funcionar mas gerou um problema igual ao do colega.
Depois que trocamos os cabos a rede ficou bem mais rápida e o problema desapareceu.
Além disso, sempre segui a dica do Kapiaba, que deve ser levada em conta: Depois de gravar os dados e antes do DBUNLOCK() dê um DBCOMMIT() para forçar a gravação em disco.
-
Eu faço assim mas só testei na Bematech MP-??? TH. Vê se funciona na sua impressora.
FOR NX := 1 TO nQtdVia // Imprimir várias vias PRINTER oPrn TO "NOME_DA_IMPRESSORA" NAME "Trabalho de impressão" oPrn:SetPage( 256 ) DEFINE FONT oFont NAME "Courier New" SIZE 0,-12 BOLD OF oPrn DEFINE FONT oFnt2 NAME "Courier New" SIZE 0, -8 BOLD OF oPrn nWidt := oFnt2:nWidth + (oFnt2:nWidth/4) nFtHi := oFnt2:nHeight nPgHi := (60*nFtHi) * 1.3 // Altura da página: (60*Altira da fonte) * 1.3 (Testado na BEMATECH MP 2500) oPrn:SetSize( 1000, nPgHi) mL := 1 // Linha inicial nTckCol := 3 // Tabulação - 3 espaços oPrn:StartPage() oPrn:SayBitmap(mL*nFtHi, nWidt*(nTckCol+2), ".\bitmaps\logomarca.bmp", 40 * nWidt, (mL+6) * nFtHi) mL += 8 FOR Y = 1 TO LEN(mLista) // mLista é um array contendo o que deve ser impresso oPrn:Say(mL*nFtHi, 000, SPACE(nTckCol)+mLista[Y], oFnt2 ) mL ++ ; IF (mL*nFtHi) >= (60 * nFtHi) ; oPrn:EndPage() ; oPrn:StartPage() ; mL := 1 ; ENDIF NEXT IF lAssina // Se deve incluir uma assinatura mL ++ ; IF (mL*nFtHi) >= (60 * nFtHi) ; oPrn:EndPage() ; oPrn:StartPage() ; mL := 1 ; ENDIF oPrn:Say(mL*nFtHi,000, SPACE(nTckCol)+"----------------------------------------", oFnt2 ) mL ++ ; IF (mL*nFtHi) >= (60 * nFtHi) ; oPrn:EndPage() ; oPrn:StartPage() ; mL := 1 ; ENDIF oPrn:Say(mL*nFtHi,000, SPACE(nTckCol)+" ", oFnt2 ) mL ++ ; IF (mL*nFtHi) >= (60 * nFtHi) ; oPrn:EndPage() ; oPrn:StartPage() ; mL := 1 ; ENDIF oPrn:Say(mL*nFtHi,000, SPACE(nTckCol)+" ", oFnt2 ) mL ++ ; IF (mL*nFtHi) >= (60 * nFtHi) ; oPrn:EndPage() ; oPrn:StartPage() ; mL := 1 ; ENDIF oPrn:Say(mL*nFtHi,000, SPACE(nTckCol)+"___/___/___ _________________________", oFnt2 ) mL ++ ; IF (mL*nFtHi) >= (60 * nFtHi) ; oPrn:EndPage() ; oPrn:StartPage() ; mL := 1 ; ENDIF oPrn:Say(mL*nFtHi,000, SPACE(nTckCol)+"Data Cliente ", oFnt2 ) ENDIF oPrn:Say(mL*nFtHi,000, "_", oFnt2 ) oPrn:EndPage() oPrn:Preview() RELEASE FONT oFont, oFnt2 NEXT // Para corrigir o BUG do papel extreito SysRefresh() PRINTER oPrn2 NAME "BugFix" oPrn2:SetPage( 9 ) oPrn2:End()
-
Eu uso assim ha muito tempo e nunca tive problema:
cPasta := "\\SERVIDOR\MEUPROGRAMA\DADOS" // Endereço da pasta compartilhada. Pode ser por IP. Ex: \\192.168.0.100\MEUPROGRAMA\DADOS SET DEFAULT TO &(cPasta) USE ARQUIVO.DBF SHARED NEW // Em rede é sempre bom abrir compartilhado OrdListClear() OrdListAdd("ARQUIVO.CDX","CHAVE01","CHAVE02") SET ORDER TO TAG CHAVE01 IN &("ARQUIVO.CDX") * ou ARQUIVO->(DBSETORDER(1)) XBROWSE() CLOSE ARQUIVO.DBF
-
Deve estar faltando algum detalhe.
Me adiciona no Skype Web (https://web.skype.com/pt-br/guest#) para a gente conversar.
Skype: ariston.ap
-
Não é pago.
O ACBrMonitorPLUS é totalmente free e a equipe disponibiliza uma atualização a cada três meses.
O que é pago é o SAC que custa R$ 120,00 mensais podendo ser cancelado e renovado sem nenhuma burocracia. Quando eu preciso de atualizações urgentes pago pelo suporte apenas pelo tempo que eu precisar. Raramente preciso do suporte.
Eu uso o ACBrMonitorPLUS desde que foi lançada a NF-e e NFC-e e agora estou usando para boleto. Nunca tive problemas e espero continuar não tendo (kkk).
-
Em "Boletos" > "Remessa e Retorno" você marcou a opção "[_] Ler dados cedente retorno" ?
-
Só sei que isso é possível via TS. Se existe outra forma, não sei.
-
Eu uso ACBrMonitorPLUS.
-
Teste esse. Me avisa se ajudar.
www.arsoft-ap.com.br/fd456406745d816a45cae554c788e754/sishotel_instalar.exe
-
Que nome interessante: WannaCry (QuerChorar em Inglês)
-
FUNCTION UnicodeToStr(_cStr, lTiraAcento) LOCAL _cNewStr := _cStr LOCAL aConvert := {} AADD(aConvert, {"á", "\u00e1"}) AADD(aConvert, {"à", "\u00e0"}) AADD(aConvert, {"â", "\u00e2"}) AADD(aConvert, {"ã", "\u00e3"}) AADD(aConvert, {"ä", "\u00e4"}) AADD(aConvert, {"Á", "\u00c1"}) AADD(aConvert, {"À", "\u00c0"}) AADD(aConvert, {"Â", "\u00c2"}) AADD(aConvert, {"Ã", "\u00c3"}) AADD(aConvert, {"Ä", "\u00c4"}) AADD(aConvert, {"é", "\u00e9"}) AADD(aConvert, {"è", "\u00e8"}) AADD(aConvert, {"ê", "\u00ea"}) AADD(aConvert, {"ê", "\u00ea"}) AADD(aConvert, {"É", "\u00c9"}) AADD(aConvert, {"È", "\u00c8"}) AADD(aConvert, {"Ê", "\u00ca"}) AADD(aConvert, {"Ë", "\u00cb"}) AADD(aConvert, {"í", "\u00ed"}) AADD(aConvert, {"ì", "\u00ec"}) AADD(aConvert, {"î", "\u00ee"}) AADD(aConvert, {"ï", "\u00ef"}) AADD(aConvert, {"Í", "\u00cd"}) AADD(aConvert, {"Ì", "\u00cc"}) AADD(aConvert, {"Î", "\u00ce"}) AADD(aConvert, {"Ï", "\u00cf"}) AADD(aConvert, {"ó", "\u00f3"}) AADD(aConvert, {"ò", "\u00f2"}) AADD(aConvert, {"ô", "\u00f4"}) AADD(aConvert, {"õ", "\u00f5"}) AADD(aConvert, {"ö", "\u00f6"}) AADD(aConvert, {"Ó", "\u00d3"}) AADD(aConvert, {"Ò", "\u00d2"}) AADD(aConvert, {"Ô", "\u00d4"}) AADD(aConvert, {"Õ", "\u00d5"}) AADD(aConvert, {"Ö", "\u00d6"}) AADD(aConvert, {"ú", "\u00fa"}) AADD(aConvert, {"ù", "\u00f9"}) AADD(aConvert, {"û", "\u00fb"}) AADD(aConvert, {"ü", "\u00fc"}) AADD(aConvert, {"Ú", "\u00da"}) AADD(aConvert, {"Ù", "\u00d9"}) AADD(aConvert, {"Û", "\u00db"}) AADD(aConvert, {"ç", "\u00e7"}) AADD(aConvert, {"Ç", "\u00c7"}) AADD(aConvert, {"ñ", "\u00f1"}) AADD(aConvert, {"Ñ", "\u00d1"}) AADD(aConvert, {"&", "\u0026"}) AADD(aConvert, {"'", "\u0027"}) FOR nX := 1 TO LEN(aConvert) IF aConvert[nX,2] $ _cNewStr _cNewStr := STRTRAN(_cNewStr, aConvert[nX,2], aConvert[nX,1]) ENDIF NEXT RETURN(IIF(lTiraAcento,TiraAcentos(_cNewStr),_cNewStr)) *------------------------------------------------------------------------------------------------ FUNCTION TiraAcentos(cStr) LOCAL cStrNew := "", nX, aAcento, aLetras aAcento := {"Æ","Â"," ","µ","…","·","‚","","ˆ","Ò","¡","Ö","¢","à","ä","å","“","â","£","é","","š","ã","Ã","á","Á","à","À","é","É","ê","Ê","í","Í","ó","Ó","õ","Õ","ô","Ô","ú","Ú","ü","Ü","ù","ç","‡","Ç","€","§","¦","º","°","ª"} aLetras := {"a","A","a","A","a","A","e","E","e","E","i","I","o","O","o","O","o","O","u","U","u","U","a","A","a","A","a","A","e","E","e","E","i","I","o","O","o","O","o","O","u","U","u","U"," ","c","c","C","C",".",".",".",".","."} FOR nX := 1 TO LEN(aAcento) cStrNew := STRTRAN(cStr,aAcento[nX],aLetras[nX]) cStr := cStrNew NEXT IF EMPTY(cStrNew) cStrNew := cStr ENDIF RETURN(cStrNew) *------------------------------------------------------------------------------------------------
-
* Função para obter NCM do site da Receita Federal function BuscaNCM( _NCM, _oDlg ) LOCAL cHtml := "", nLeng := LEN(ALLTRIM( ClearChar(_NCM, {"."}) )), lNCMOk := .F. if empty(_NCM) ; return .F. ; endif IF nLeng < 8 .AND. nLeng > 0 SysRefresh() ; MsgAlert("O código do NCM deve conter 8 Caracteres","Aviso") RETURN .F. ENDIF url := "http://www4.receita.fazenda.gov.br/simulador/PesquisarNCM.jsp?codigo="+LEFT(_NCM,2)+"&codigoCapitulo="+LEFT(_NCM,2)+"&codigoPosicao=&button=Exibir+NCMs" try oUrl:=TUrl():New( url ) // From tip.lib oHttp := TipClientHttp():New( oUrl , .f. ) // From tip.lib catch SysRefresh() ; MsgAlert("Erro ao tentar criar o objeto Http","Aviso") return .f. end try Try oHttp:Open() cHtml := oHttp:ReadAll() // Baixa todo o conteúdo do site. Catch oErr SysRefresh() ; MsgAlert("Erro ao tentar conectar o objeto Http","Aviso") RETURN .f. End oHttp:Close() DeleteUrlCacheEntry(url) // Lipar Cache IF Empty(cHtml) SysRefresh() ; MsgAlert("Conteúdo vazio","Aviso") RETURN .F. ENDIF cHtml := "["+UnicodeToStr(cHtml, .t.)+"]" IF "codNCM.value='"+_NCM+"'" $ cHtml MsgInfo("NCM válido","Ok") lNCMOk := .T. ELSE MsgAlert("NCM inválido","Aviso") ENDIF if _oDlg <> nil ; _oDlg:Update() ; endif RETURN(lNCMOk)
-
Oi Ariston, o ambiente de homologação está fora do ar já tem alguns meses, só o de produção é que está funcionando.
Assim fica complicado testar. Ô povo complicado esse do SNGPC. (kkk)
Vou ver o que dá pra fazer.
Obrigado.
-
Eu não uso a DLL, apenas mostrei o "caminho das pedras" e teria declarado a função do mesmo jeito que você fez. Ao meu ver, está correta.
Se você estiver testando com o emulador, verifique se as dlls estão atualizadas e tente descobrir se o emulador aceita essa nova função da DLL.
Talvez precise baixar um emulador atualizado também.
-
-
Mestres,
Estou fazendo testes de comunicação com os WebServices do SNGPC e só o ambiente de produção responde. Alguém sabe me informar se o ambiente de homologação está desativado ou mudou de endereço?
Produção responde:
http://sngpc.anvisa.gov.br/webservice/sngpc.asmx?WSDL HTTP/1.1
Homologação não responde:
http://homologacao.anvisa.gov.br/sngpc/webservice/sngpc.asmx?WSDL HTTP/1.1
-
Costumo ouvir pessoas dizer: "Nem sei como agradecer".
Eu sei sim: MUUUUUUUITO OBRIGADO !!!!!!!!!!!!!
2nd FWH + [x]Harbour 2018 international conference in Brazil
in Programação
Posted
Quero participar mas não vou poder ir.
Já pensaram na ideia de fazer a transmissão online? Talvez disponibilizando uma página onde apenas os cadastrados mediante o pagamento de uma taxa possam acessar e assistir ao evento?
#ficaadica