Jump to content
Fivewin Brasil

Theotokos

Membros
  • Posts

    1,796
  • Joined

  • Last visited

  • Days Won

    31

Reputation Activity

  1. Like
    Theotokos reacted to emotta in SOS - Dbf - Gravação   
    Coloque dbcommit() antes do unlockrecord
  2. Like
    Theotokos reacted to Jmsilva in SOS - Dbf - Gravação   
    Dbcommit() ajuda e também colocar um log para monitorar banmerca antes e depois da gravação. Assim vc monitora a gravações e descobre o que está dando errado.
     
  3. Like
    Theotokos reacted to Rogerio Figueira in Migração para SQLRDD   
    Boa tarde.
    Se você tem o Fivewin atualizado, melhor seria usar o FWMaria nativo dele. Tem gente que já migrou do tDolphin para o FWMaria, dizem compensar.
    Eu ainda não fiz isso por motivo de custos, vou esperar passar a pandemia e os negócios melhorarem.

    Usar o tDolphin é simples, para mim a migração foi muito fácil.

    Você precisa baixar as libs e fazer uns testes . Depois disso mãos a obra.
    https://bitbucket.org/danielgarciagil/tdolphin/downloads/

    Na pasta samples tem vários exemplos.

    Qualquer dúvida, pode perguntar.
  4. Like
    Theotokos reacted to aferra in COR DO GET EM EDIÇÃO   
    Essa funciona para tudo é global
    SetGetColorFocus( nRGB( 255, 240, 100) )
  5. Like
    Theotokos got a reaction from weiller.siqueira in Campo senha igual ao do Google   
    REDEFINE GET oGet VAR cSenha ID 4004 Of oScr UPDATE FONT oFont COLOR CLR_WHITE,CLR_RED ACTION SUAFUNCAO("PARA LIBERAR VISUALIZACAO") BITMAP "SEU_BMP_OLHO.Bmp"
  6. Like
    Theotokos reacted to rochinha in Exibir Notificação ao usuario em App rodando no TRAY do windows   
    Amiguinhos,
    Theotokos, na pasta samples do Fivewin tem o exemplo do que você necessita, procure por algo com *tray*.
    O exemplo permite apresentar um ícone no tray e ao clicar um menu pode ser manipulado. Show-de-Bola.
     
  7. Like
    Theotokos reacted to rochinha in Exibir Notificação ao usuario em App rodando no TRAY do windows   
    Amiguinhos,
     
    Theotokos, não querendo tirar o mérito da resposta do marcioe devo informá-lo que a implementação é rápida e indolor( igual a aplicação de Ozônio ).
    Basta usar em qualquer parte do seu programa a função FUNCTION ShowMsgTray(cMsg, cTit):
    ... nNumeroDePedidos := 3 ShowMsgTray( "Chegaram "+strZero(nNumeroDePedidos,2)+" pedidos", "Chegada de Pedidos" ) ... Ainda terá de incluir o trecho em algum .PRG de funções do seu ambiente.
    #pragma BEGINDUMP #include <hbapi.h> #define _WIN32_IE 0x0501 #include <windows.h> #ifndef NIF_INFO #define NIF_INFO 0x00000010 #define NIIF_INFO 0x00000001 #endif #ifndef NIIF_NOSOUND #define NIIF_NOSOUND 0x00000010 #endif HB_FUNC( GETNOTIFYICONDATA ) { NOTIFYICONDATAA nid; memset( &nid, 0, sizeof( NOTIFYICONDATA ) ); nid.cbSize = sizeof( NOTIFYICONDATA ); #ifndef _WIN64 nid.hWnd = ( HWND ) hb_parnl( 1 ); #else nid.hWnd = ( HWND ) hb_parnll( 1 ); #endif nid.uID = ( UINT ) hb_parnl( 2 ); nid.uFlags = NIF_INFO | NIF_MESSAGE | NIF_ICON | NIF_TIP ; nid.dwInfoFlags = NIIF_INFO | NIIF_NOSOUND; nid.uCallbackMessage = ( UINT ) hb_parnl( 3 ); #ifndef _WIN64 nid.hIcon = ( HICON ) hb_parnl( 4 ); #else nid.hIcon = ( HICON ) hb_parnll( 4 ); #endif strcpy( nid.szTip, hb_parc( 5 ) ); strcpy( nid.szInfo, hb_parc( 5 ) ); strcpy( nid.szInfoTitle, hb_parc( 6 ) ); hb_retclen( ( char * ) &nid, sizeof( NOTIFYICONDATA ) ); } #pragma ENDDUMP  
  8. Like
    Theotokos reacted to rubensma in VS CODE   
    emotta, não entendo quando fala de GIT ou repositório, poderia dar uma aula pra ajudar a entrarmos no VSCODE, não sei como começar e acredito que muitos aqui também querem usar, acho.
  9. Like
    Theotokos reacted to emotta in Quantidade Máxima de Campos Num Arquivo DBF ou Tabela SQL   
    Sim, isso mesmo Theotokos. 
    Criar campos desta maneira das tabelas (ACES01,ACES02,...,ACES99) ou (PERMISSA01,PERMISSA02,...,PERMISSA99) é uma falha de normatização e dificulta muito a manutenção.
    Veja bem, isso não é uma critica ao programa pois quebrar normatização é parte do processo. Mas fica apenas uma observação pra vocês. Eu aconselho a criar uma tabela filho e resolver isso da forma indicada mas claro, cada um sabe a realidade do que precisa, eu mesmo já criei tabelas desta maneira (criando vários campos) e que era necessário assim mas tem que saber que isso é um erro.
    Abraços
  10. Like
    Theotokos reacted to emotta in Quantidade Máxima de Campos Num Arquivo DBF ou Tabela SQL   
    Valdir então não faça assim, crie uma tabela apenas com DOIS campos sendo:
    ID CARACTER  TAMANHO: 2
    CHECK CARACTER TAMANHO: 1
     
    Desta forma a tabela terá apenas dois campos porem pra cada identificador (ID) terá um registro. Deixe como chave principal da tabela o ID. Pra saber se está com CHECK basta fazer um SEEK nesta tabela pelo ID e se existir vc verifica se o campo CHECK está preenchido. Se estiver preenchido ele está com o CHECK e se nao existir ou estiver em branco está SEM CHECK.
    Não crie a tabela desta forma que está fazendo não, é muito mais complicado pra se manter assim. É minha dica.
     
     
  11. Like
    Theotokos reacted to marcioe in Tabela de Produtos   
    Segue o link
    https://mega.nz/file/VIglTbaa#5IrHKpGcuMi60ShPyhhKm5UQu2m76Fx7T8v4orEpFws
  12. Like
    Theotokos reacted to emotta in VS CODE   
    Estou fazendo os testes com o VS CODE, está evoluindo bem, mas quero aqui deixar os elogios ao Vailton. É impressionante que muitas das facilidades do VS CODE, que começou a ser desenvolvido em 2015, existem no xDev que é de 2008 ou 2009 (a versão 0.72 alguem sabe o ano?).
    Inclusive a parte de compilação, que aqui na EMotta temos algumas peculiaridades e não da pra compilar da forma convencional, o xDev permitiu facilmente compilar e o formato de configuração é muito semelhante.
    Vailton, usamos o xDev aqui na EMotta a muitos anos. Sempre funcionou muito bem, quero agradecer por te-lo desenvolvido e nos disponibilizado. É uma ferramenta fantástica. 
    Mas vamos seguir agora com o VS CODE que é a mais usada do momento e é excelente. Recomendo a quem ainda não usa começar a pelo menos estuda-la.
    Vou deixar alguns links que estão me ajudando bastante nesse estudo.
        - https://harbour.wiki/index.asp?page=PublicArticles&mode=show&id=190401174818&sig=6893630672
        - http://fivewin.com.br/index.php?/topic/27795-visual-studio-2017/
        - https://forums.fivetechsupport.com/viewtopic.php?f=17&t=37459&p=223922&hilit=vscode#p223922
        - https://forums.fivetechsupport.com/viewtopic.php?f=6&t=38697&p=231562&hilit=vscode#p231562
     
    Abraços
     
     
  13. Like
    Theotokos reacted to giovanyvecchi in Existe uma forma de enviar "arquivos" para whatsapp   
    Execute o programa em modo administrador e tente novamente
  14. Like
    Theotokos reacted to oziel in Nota de Falecimento.   
    Difícil.
    Hoje tomei coragem de entrar no FW.
    Recebi essa triste mensagem no dia pelo Facebook.
    Ao longo do ano de 2019 conversei com ele algumas vezes pelo Skype. Mas tinha dias
    em que ele relatava as fortes dores. Participei com ele de um último projeto do Frota... Sei 
    que ele não conseguiu terminar as alterações que pretendia.
    Hoje tenho convicção que ele descansou. Assim quis o Senhor.
    Abraços.
  15. Like
    Theotokos reacted to alex2002 in Acentuação   
    Olá,

    Vc pode usar a função abaixo para validar tanto o campo digitado quanto a comparação. Se for em SQL vc tem que criar esta função também no SQL para comparar.
    Um abraço,

    Alexandre Pereira
     
    ////////////////////////////DADOS DA FUNCAO////////////////////////////////////////////
    // NOME       : TiraAcentoUTF                                                        //
    // SINTESE    : Retirar acentos e cedilhas                                           //
    // PARAMETROS : <1> cTexto para retirar os acentos                                   //
    // RETORNO    : cTexto sem acentos ou cedilhas                                       //
    ///////////////////////////////////////////////////////////////////////////////////////
    function TiraAcentoUTF( cTexto )
    cTexto := StrTran(cTexto,"ã","a")
    cTexto := StrTran(cTexto,"ä","a")
    cTexto := StrTran(cTexto,"à","a")
    cTexto := StrTran(cTexto,"á","a")
    cTexto := StrTran(cTexto,"ª","a")
    cTexto := StrTran(cTexto,"â","a")
    cTexto := StrTran(cTexto,"¦","a")
    cTexto := StrTran(cTexto,"è","e")
    cTexto := StrTran(cTexto,"é","e")
    cTexto := StrTran(cTexto,"ê","e")
    cTexto := StrTran(cTexto,"ë","e")
    cTexto := StrTran(cTexto,"ì","i")
    cTexto := StrTran(cTexto,"í","i")
    cTexto := StrTran(cTexto,"î","i")
    cTexto := StrTran(cTexto,"ï","i")
    cTexto := StrTran(cTexto,"ò","o")
    cTexto := StrTran(cTexto,"§","o")
    cTexto := StrTran(cTexto,"õ","o")
    cTexto := StrTran(cTexto,"ö","o")
    cTexto := StrTran(cTexto,"ó","o")
    cTexto := StrTran(cTexto,"º","o")
    cTexto := StrTran(cTexto,"ô","o")
    cTexto := StrTran(cTexto,"õ","o")
    cTexto := StrTran(cTexto,"ø","o")
    cTexto := StrTran(cTexto,"ù","u")
    cTexto := StrTran(cTexto,"ú","u")
    cTexto := StrTran(cTexto,"ü","u")
    cTexto := StrTran(cTexto,"û","u")
    cTexto := StrTran(cTexto,"ç","c")
                                
                                         
    cTexto := StrTran(cTexto,"Ã","A")
    cTexto := StrTran(cTexto,"Ä","A")
    cTexto := StrTran(cTexto,"À","A")
    cTexto := StrTran(cTexto,"Á","A")
    cTexto := StrTran(cTexto,"Â","A")
    cTexto := StrTran(cTexto,"È","E")
    cTexto := StrTran(cTexto,"Ë","E")
    cTexto := StrTran(cTexto,"É","E")
    cTexto := StrTran(cTexto,"Ê","E")
    cTexto := StrTran(cTexto,"Ì","I")
    cTexto := StrTran(cTexto,"Í","I")
    cTexto := StrTran(cTexto,"Î","I")
    cTexto := StrTran(cTexto,"Ï","I")
    cTexto := StrTran(cTexto,"Ò","O")
    cTexto := StrTran(cTexto,"Õ","O")
    cTexto := StrTran(cTexto,"Ó","O")
    cTexto := StrTran(cTexto,"Ô","O")
    cTexto := StrTran(cTexto,"Ö","O")
    cTexto := StrTran(cTexto,"Ù","U")
    cTexto := StrTran(cTexto,"Ú","U")
    cTexto := StrTran(cTexto,"Ü","U")
    cTexto := StrTran(cTexto,"Û","U")
    cTexto := StrTran(cTexto,"Ç","C")
    cTexto := StrTran(cTexto,"«"," ")
    cTexto := StrTran(cTexto,"®"," ")
    cTexto := StrTran(cTexto,""," ")
    cTexto := StrTran(cTexto,"¬"," ")
    cTexto := StrTran(cTexto,"¯"," ")
    cTexto := StrTran(cTexto,"ý"," ")
    cTexto := StrTran(cTexto,","," ")
    cTexto := StrTran(cTexto,"'"," ")
    cTexto := StrTran(cTexto,"`"," ")
    cTexto := StrTran(cTexto,"/"," ")
    cTexto := StrTran(cTexto,"\"," ")
    return cTexto
     
  16. Like
    Theotokos reacted to Rogerio Figueira in Duvida em Criar Variaveis   
    Desde o velho Clipper (RIP)  como constava no manual,  o uso de variáveis definidas como matrizes consome menos memória.
    Então eu sempre que possível uso matrizes para todas as variáveis.
    Também facilita bastante a programação.
     
    IF oQry:nRecCount >0
        cmatriz[10] := oQry:cheques
        cmatriz[11] := oQry:autcartao1
        cmatriz[12] := oQry:valorcartao1
        cmatriz[13] := oQry:venc_cartao1
        cmatriz[14] := oQry:autcartao2
        cmatriz[15] := oQry:valorcartao2
        cmatriz[16] := oQry:venc_cartao2
        cmatriz[17] := oQry:autdebito
        cmatriz[18] := oQry:valordebito
        cmatriz[19] := oQry:dinheiro
        cmatriz[20] := oQry:data
        
        for xx=10 to 20
            ocmatriz[xx]:refresh()
        
        next
    END
    []´s
     
  17. Like
    Theotokos reacted to kapiaba in Duvida em Criar Variaveis   
    Nada, se voce fizer assim:


       LOCAL oBtns := ARRAY(12), IDBotao, oFont    DEFINE FONT oFont   NAME "Ms Sans Serif" SIZE 0, -14 BOLD    //->Definicao dos Botoes do Programa    REDEFINE BUTTON oBtns[01] ID 1000 OF oDlg                                 ;             ACTION ( INICIACAD( oLbx, DeOndeVem := [INCLUSAO] ) )            ;             WHEN( .NOT. lEsModi )    oBtns[01]:cToolTip := OemToAnsi( "Incluir Novo Registro - Alt+N" )    REDEFINE BUTTON oBtns[02] ID 2000 OF oDlg                                 ;             ACTION ( CARREGACAD( oLbx, DeOndeVem := [ALTERACAO] ),           ;                                  lEsModi := .T. )                            ;              WHEN( .NOT. lEsModi )    oBtns[02]:cToolTip := OemToAnsi( "Altera‡Æo de Dados - Alt+A" )    REDEFINE BUTTON oBtns[03] ID 3000 OF oDlg                                 ;             ACTION ( IF( MsgYesNo( "Deseja Apagar Este Registro? "         + ;                          CRLF+CRLF, "Confirma? " ),                          ;                      IF( CAD->(Rlock()), CAD->( DbDelete() ),                ;                          CAD->(DbDelete())), .T. ), DbSkip(+1),              ;                           CARREGACAD( oLbx ), oLbx:Refresh() )                ;             WHEN( .NOT. lEsAlta .AND. .NOT. lEsModi )    oBtns[03]:cToolTip := OemToAnsi( "ExclusÆo de Registro - Alt+E" )    REDEFINE BUTTON oBtns[04] ID 4000 OF oDlg                                 ;             ACTION ( BUSCACAD(cTitle, cText, uVar, cBmpFile, cResName, oLbx));              WHEN( .NOT. lEsAlta .AND. .NOT. lEsModi )    oBtns[04]:cToolTip := OemToAnsi( "Pesquisar o Dado - Alt+P" )    REDEFINE BUTTON oBtns[05] ID 5000 OF oDlg                                 ;             ACTION ( DbGoTop(), CARREGACAD( oLbx ) )                             ;              WHEN( .NOT. lEsAlta .AND. .NOT. lEsModi )    oBtns[05]:cToolTip := OemToAnsi( "Inicio do Arquivo - Alt+I" )    REDEFINE BUTTON oBtns[06] ID 6000 OF oDlg                                 ;             ACTION ( IF( !BOF(), DbSkip(-1), DbGoTop() ), CARREGACAD( oLbx ) );             WHEN( .NOT. lEsAlta .AND. .NOT. lEsModi )    oBtns[06]:cToolTip := OemToAnsi( "Registro Anterior do Arquivo - Alt+T" )    REDEFINE BUTTON oBtns[07] ID 7000 OF oDlg                                 ;             ACTION ( IF( !EOF(), DbSkip(+1), Dbskip(-1) ), CARREGACAD( oLbx ) );             WHEN( .NOT. lEsAlta .AND. .NOT. lEsModi )    oBtns[07]:cToolTip := OemToAnsi( "Registro Seguinte do Arquivo - Alt+X" )    REDEFINE BUTTON oBtns[08] ID 8000 OF oDlg                                 ;             ACTION ( DbGoBottom(), CARREGACAD( oLbx ) )                      ;             WHEN( .NOT. lEsAlta .AND. .NOT. lEsModi )    oBtns[08]:cToolTip := OemToAnsi( "Final do Arquivo - Alt+F" )    REDEFINE BUTTON oBtns[09] ID 9000 OF oDlg                                 ;             ACTION ( IMPRIMECAD( oLbx ) )                                    ;             WHEN( .NOT. lEsAlta .AND. .NOT. lEsModi )    oBtns[09]:cToolTip := OemToAnsi( "Listagem do Arquivo - Imprimir - Alt+L" )    REDEFINE BUTTON oBtns[10] ID 10000 OF oDlg                                ;             ACTION ( lSalvar := .T., IF( .NOT. EMPTY( aGets[1] ),            ;                      SALVARCAD( oLbx ), CIERTO( "Registro em Branco " ) ) )  ;             WHEN( lEsAlta .OR. lEsModi )    oBtns[10]:cToolTip := OemToAnsi( "Gravar Dados no Arquivo - Alt+G" )    REDEFINE BUTTON oBtns[11] ID 11000 OF oDlg                                ;             ACTION ( INICIACAD( oLbx ), CARREGACAD( oLbx ), lSalvar := .F.,  ;                                                      lEsAlta := .F.,         ;                                                      lEsModi := .F. ) CANCEL    oBtns[11]:cToolTip := OemToAnsi( "Cancelar Opera‡Æo - Alt+C" )    REDEFINE BUTTON oBtns[12] ID 12000 OF oDlg                                ;             ACTION ( oDlg:End() ) CANCEL UPDATE    oBtns[12]:cToolTip := OemToAnsi( "Saida - Exit - Cancelar" )    //-> Liga as Fontes dos Botoes - Escolha Modelo    //-> SET FONT OF oBtns[01] TO oFont     //-> SET FONT OF oBtns[02] TO oFont     //-> SET FONT OF oBtns[03] TO oFont     //-> SET FONT OF oBtns[04] TO oFont     //-> SET FONT OF oBtns[05] TO oFont     //-> SET FONT OF oBtns[06] TO oFont     //-> SET FONT OF oBtns[07] TO oFont     //-> SET FONT OF oBtns[08] TO oFont     //-> SET FONT OF oBtns[09] TO oFont     //-> SET FONT OF oBtns[10] TO oFont     //-> SET FONT OF oBtns[11] TO oFont     //-> SET FONT OF oBtns[12] TO oFont    //-> Outra Forma Mais Rapida de Fazer    FOR IDBotao = 1 TO 12        SET FONT OF oBtns[IDBotao] TO oFont     NEXT    oFont:End()
  18. Like
    Theotokos got a reaction from kapiaba in Nota de Falecimento.   
    Meus Sentimentos, que a família receba de Deus o conforto necessário para superar essa perda....
     
  19. Like
    Theotokos reacted to macs in HAMACHi   
    https://www.4infra.com.br/o-que-e-mikrotik/
    Dependendo do modelo, acho que você encontra a partir de R$ 250,00
  20. Like
    Theotokos reacted to Rogerio Figueira in HAMACHi   
    Como o Marcio falou acima, no seu caso o Terminal Server seria a solução imediata.
    É a solução que tenho recomendado aos clientes que querem continuar com o sistema antigo.
    Funciona bem,  inclusive permite rodar nossos aplicativos em tablets Android.

    Mas a solução definitiva é mudares para SQL.  Parece um bixo complicado, mas assim que começares vais ver que é muiiiiito mais fácil de trabalhar com SQL do que com DBFs.
  21. Like
    Theotokos reacted to marcioe in HAMACHi   
    Olha só voce pode usar o TERMINAL SERVER, é uma opção,
    no caso é apenas o trafego de telas, talvez seja viavel
     
  22. Like
    Theotokos reacted to marcioe in HAMACHi   
    Olá, bom dia 
    O hamachi nada mais é que uma forma de fazer uma VPN, 
    O que voce poderá construir com outras plataformas, tipo NO-IP por exemplo.
    Mas voce poderá contratar a provedora de internet do seu cliente(matriz) e fazer a VPN 
    Mas eu acho o hamachi o mais simples de configurar, eu mesmo já usei, hoje não mais por conta de usar MYSQL, mas tem a versão paga, talvez tenha como melhorar se for pago, liga pra eles e veja
     
     
  23. Like
    Theotokos got a reaction from luiz53 in ROTINA PROMOÇÃO   
    pode-se tmb criar um cadastro de promoções... onde vc entra com o codigo do produto e as condições desta promoção... preco, qtde limite, dt.valida promoção... etc....
    ai no modulo de venda vc verifica se este produto esta no cadastro de promoções e realiza a condição...
     
  24. Like
    Theotokos got a reaction from kapiaba in Conflito SetFocus com Printer oPrn   
    Function RtGravaPDV(lAppend,nOpcPDV,oDlgNota)
    ...
         MsgRun("Gerando Relarório","Relatório",{|| RelPDV2(lAppend,nOpcPDV) })

         oCodCli:SETFOCUS()
         OBTN2:OJUMP:=oCodCli
    Return .t.
     
    FUNCTION RelPDV2(lAppend,nOpcPDV)
    Private oPrn
    Private nFlag,nLinha,nPagina
    *
    PRINTERSETUP()
    Printer oPrn DOC "Pedido de Venda" PREVIEW // modo grafico com preview
    oPrn:SetLandScape()  // Impreesão tio Paisagem
    ....
     oPrn:EndPAGE()
    EndPrint     
    Return .T.
  25. Like
    Theotokos got a reaction from Valdir in Revés no Windows 7   
    nãos ei se perguntou a mim ou ao  Ladinilson , mas no meu caso a restauração do bkp é externo ao sistema... sem acesso ao usuário sem a minha senha...
     
×
×
  • Create New...