-
Posts
1,796 -
Joined
-
Last visited
-
Days Won
31
Reputation Activity
-
-
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.
-
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.
-
Theotokos reacted to aferra in COR DO GET EM EDIÇÃO
Essa funciona para tudo é global
SetGetColorFocus( nRGB( 255, 240, 100) )
-
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"
-
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.
-
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
-
-
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
-
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.
-
Theotokos reacted to marcioe in Tabela de Produtos
Segue o link
https://mega.nz/file/VIglTbaa#5IrHKpGcuMi60ShPyhhKm5UQu2m76Fx7T8v4orEpFws
-
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
-
Theotokos reacted to giovanyvecchi in Existe uma forma de enviar "arquivos" para whatsapp
Execute o programa em modo administrador e tente novamente
-
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.
-
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
-
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
-
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()
-
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....
-
-
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.
-
-
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
-
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...
-
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.
-
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...