domingo, 7 de fevereiro de 2010

Letodb posso usar ?

Ola!
Bem, essa é uma pergunta que muitas pessoas estão fazendo, eu estou usando em todos os meus sistemas, já não uso apenas o mapeamento para acessar a base em DBF o acesso é também via TCP/IP fazendo requisições ao servidor LetoDB.
Até o momento eu detectei um problema na função Leto_fRename() , mas isso não impede o seu uso, neste caso eu posso usar a função fRename() no servidor.
Outra caracteristica muito importante que obtive mundando para LetoDB, é que ficou muito perceptivel o ganho de performance nas estações, a velocidade é quase igual ao acesso via Telnet/SSH acessando uma estação do Linux , então o LetoDb resolveu o problema de corrupção do DB e ganhei velocidade no acesso aos dados.
Usando no-ip ou DDNS ou DynDNS prefiro esse último porque é muito simples de instalar, posso acessar a base de qualquer lugar.

O que eu mudei para trabalhar com o LetoDB ?
Criei um arquivo INI com as configurações para as estações, leio o arquivo e ativo ao não o acesso via LetoDB. Por exemplo:
[Config]
Dados=\Sistema\dados\
Servidor=//LOCALHOST:2812/
Driver=G:
Veja que com esse arquivo eu posso ter acesso aos dados via DBFCDX mapeado ou Via TCP.
Se a linha "Servidor" estiver vazia, o acesso é mapeado de outra forma é via Leto.
Essa função, HWG_GetIni() é da biblioteca Hwgui, então podemos fazer assim:
A porta padrão que o Leto escuta é a 2812, a porta é obrigatória então eu verifico os 3 primeiros números apenas, porque eu tenho clientes com ADSL compartilhada, na mesma rede tenho o Leto na porta 2812 e outra na porta 2813, eu configurei o roteador via NAT.

----------8<---------------8<-------------------
lDrive := Hwg_GetIni('Config','Driver',,cIniFile)
dServidor := Hwg_GetIni('Config','Servidor',,cIniFile)
dDados := lDrive+Hwg_GetIni('Config','Dados',,cIniFile)

If (lRddLeto := '281' $ dServidor)
If !empty(dServidor)
nConect := leto_Connect( dServidor )
IF nConect == -1
nRes := leto_Connect_Err()
IF nRes == LETO_ERR_LOGIN
MsgStop( "Falha ao Logar" )
ELSEIF nRes == LETO_ERR_RECV
MsgStop( "Error ao conectar" )
ELSEIF nRes == LETO_ERR_SEND
MsgStop( "Erro de envio" )
ELSE
MsgStop("Não connectado ao servidor: " +dServidor)
ENDIF
Return .f.
ENDIF
EndIf
Else
If !empty(dServidor)
If !NetDisk(lDrive)
If !NetRedir(lDrive,dServidor)
MsgInfo('Um Problema Ocorreu ao Mapear a Rede')
close all
Cancel
Endif
Endif
Endif
EndIf


------------------8<---------------------8<-------------------
E também criei uma função chamada AbreDB

Function AbreDB(cDb,cAlias,lExc)
...
If lRddLeto
If Leto_File(dServidor+cDb)
DbUseArea(.t.,"LETO",dServidor+cDB,cAlias,.T.,.F.,'PTISO')
Else
MsgStop('Arquivo Não Foi Localizado: '+dServidor+cDb)
lRet := .f.
EndIf
Else
DbUseArea(.t.,'DBFCDX',dDados+cDb,cAlias,.T.,.F.,'PTISO')
EndIf
...

Espero que seja útil aos senhores.

Continua...

Saudações,
Itamar M. Lins Jr.

2 comentários:

  1. Realmente o ganho de velocidade é grande, e até rodando local dá pra sentir a diferença.
    Mas ainda tem aquele probleminha Itamar ...

    ResponderExcluir
  2. olá tudo bem? pode responder uma pergunta?

    ResponderExcluir