Clipper On Line • Ver Tópico - Letodbf - o Inicio
Mudar para estilo Clássico
Discussão sobre Banco de Dados e RDDs para Clipper/[x]Harbour.
Postar uma resposta

Letodbf - o Inicio

16 Nov 2018 17:50

Itamar...
Veja só..

Minha estrutura de pastas:
PDVLITE \Tabelas
\Relatorios

Setei o DataPath para d:\PDVLITE\

a conexão ficou: //LOCALHOST:2832/

Daí para abrir o arquivo: USE //LOCALHOST:2832/TABELAS\CAIXA.DBF. Beleza, abre cria indices e tudo o mais.

Daí preciso carregar um arquivo tipo para Fastreport (não importa a ferramenta, é só o exemplo)
FrPrn:LoadFromFile('Relatorios\Compras.Fr3') (forma normal de carregar sem o LetoDBf)

Daí não sei como fazer.
Criei uma variável: cFileFR3 := //LOCALHOST:2832/RELATORIOS\Compras.Fr3
File( cFileFR3 ) -> Retorna .f.
Leto_File( cFileFR3) -> Retorna .t.
mas como vou carregar isso?
Tentei FrPrn:LoadFromFile(cFileFR3)
mas nao funciona...

Obrigado
Rubens

Letodbf - o Inicio

16 Nov 2018 19:32

Ola!
Use leto_memoread() para carregar para uma variável. Não uso o Fastreport mais vi agora quem tem :LoadFromStream(), para ler de uma variável ou campo BLOB. Vc pode Salvar seus formulários em CAMPOS BLOB no Harbour e LER eles também.
Código:
cFrm:=leto_memoread("seu.frm")

Ou copiar o FRM quando for usar na ESTAÇÃO.
Código:
Leto_FCopyFromSrv( cLocalFileName, sServerFileName[, nStepSize ] ) ==> lSuccess

Copiar do servidor para a estação o arquivo, depois pode usar LoadFromFile()

E pode usar leto_memoread, leto_memowrit() para ler e salvar do servidor para a estação também.

Ou deixar a pasta compartilhada só como leitura se for o caso.

Saudações,
Itamar M. Lins Jr.

Letodbf - o Inicio

17 Nov 2018 07:50

Bom dia..

Certo..

Nos meus testes aqui esses arquivos externos eu tava copiando junto com o executável para a estação. Acho que vou continuar assim. São poucos e já estão direcionados no programa. Daí quando fizer a instalação no terminal copia junto os arquivos externos tipo imagens, ini e etc... Já que a intenção é minimizar o uso da rede e não ficar compartilhando o server.

Obrigado
Rubens

Letodbf - o Inicio

21 Nov 2018 11:06

Bom dia...

Hoje é o dia da prova de fogo... vamos por em produção em um cliente...

As tabelas ficaram com o leto.
Não criei condição para leto ou cdx.. tudo pelo leto mesmo..
cada terminal vai ter um ini de configuração que vai ter o path do leto, se terminal o nome do servidor ou ip, se servidor localhost
no ini vai ter tb informação se é terminal ou server. Se terminal mapeia e define o caminho dos arquivos não tabelas que vão ser usados.
Tudo no basicão sem refinamento algum.
Por enquanto o que eu percebi de melhoria foi em relação ao ganho de velocidade... realmente tá evidente...
fiz testes com o server num atlhlon x2 com 2gb de memória. é o ambiente do cliente que vou instalar hoje..
E os terminais com celeron e rede 10/100. Tabela de produtos com uns 10000, 4000 clientes e tal.. nos testes não percebi nenhum delay...
Notei que a velocidade é um pouco inferior ao TS. Mas bem superior a mapeamento.
Para mim foi satisfatório e pouco trabalhoso até aqui.
Tem que lembrar de conceitos. Pelo manual dá para trabalhar com o leto para outros tipos de arquivos, mas achei meio trabalhoso, já que a intenção no momento era resolver a questão rapidamente. O compartilhamento foi necessário e mais prático para o uso de arquivos de configuração, xmls e etc.. mas não está mexendo com isso toda hora.
Vamos ver no uso em produção o que vai rolar.
Se tiver na dúvida vale a pena.. Acho que muda seu sistema para outro nível sem uma curva de aprendizado muito grande..
Rubens

Letodbf - o Inicio

22 Nov 2018 07:43

Olá Rubens,

rubens escreveu:Não criei condição para leto ou cdx.. tudo pelo leto mesmo..
O que você quis dizer com isso? Não entendi...

rubens escreveu: Se terminal mapeia e define o caminho dos arquivos não tabelas que vão ser usados.
Porque mapear? Se a rede está conectada, basta colocar o IPv4 do servidor nas estações que o Leto acha o servidor na rede. Alguma razão especifica para mapear?

Letodbf - o Inicio

22 Nov 2018 08:19

Bom dia..

O que você quis dizer com isso? Não entendi...

Tô vendo alguns exemplos, onde se não conectar usa dbfcdx normal... eu testei conectando no leto normal aqui local no localhost então vou deixar tudo conectando mesmo o servidor... Ou isso pode me trazer problemas?

Porque mapear? Se a rede está conectada, basta colocar o IPv4 do servidor nas estações que o Leto acha o servidor na rede. Alguma razão especifica para mapear?

Eu tenho relatórios que usam arquivos fr3 (fastreport), baixo arquivos xml e salvo em subpastas do sistema etc... nõ dá para ficar copindo isso para os terminais porque o programa vai ser executado no terminal. Daí vou ter que mapear e indicar onde é para salvar.

Obrigado
Rubens

Letodbf - o Inicio

22 Nov 2018 09:00

rubens escreveu:Eu tenho relatórios que usam arquivos fr3 (fastreport)
Ok, entendi.

rubens escreveu:Tô vendo alguns exemplos, onde se não conectar usa dbfcdx normal... eu testei conectando no leto normal aqui local no localhost então vou deixar tudo conectando mesmo o servidor... Ou isso pode me trazer problemas?
Pelo contrário, só vejo vantagens. Hoje meu sistema abre localmente as tabelas com informações do Cest e a tabela IBPTax. Estou mudando para que sejam lidas diretamente do servidor, e não mais localmente.

Isso porque no inicio do mês cada máquina verifica no site se existe nova versão dessas tabelas, e se sim atualizam. Não vejo necessidade, já que o trafego na rede que é ler essas tabelas é insignificante, não justifica fazer essa segregação.

Apenas a verificação se o executável do terminal é o mesmo do servidor é feita diariamente, através da verificação da data e hora de criação dos arquivos (DateTime). Se houver diferença, os terminais renomeiam o executável local, copiam o executável do servidor, avisa o usuário que a versão foi atualizada, e solicita para fechar a janela e reabrir o sistema.

Assim, todas atualizações necessárias, serão feitas apenas no servidor, isso polpa trabalho...

Boa sorte, sucesso. Acho que você vai notar muitas vantagens com esse RDD.

Letodbf - o Inicio

23 Nov 2018 09:05

Bom dia,

Estou desenvolvendo um novo módulo em meu sistema e eu gostaria de usar o LetoDBF neste novo módulo, mas continuar usando o RDDCDX no resto do sistema.

É possível usar em concomitância ambos RDD´s sem ter problemas de perca de dados ou índice corrompido ?

Alguém já usa desta forma ?

Obrigado,

Letodbf - o Inicio

23 Nov 2018 09:50

Bom dia..

Rossine quem entende mais vai te responder melhor..
Mas pelo que eu entendi continua usando padrão CDX tanto é que isto é setado no ini do letodb server.
O Leto nesse caso tá fazendo somente o trabalho de rede mas a manipulação continua sendo CDX.
Se você quer local sem usar o leto é só na conectar no leto.. daí vai continuar trabalhando CDX.
Acho que é isso.

Rubens

Letodbf - o Inicio

18 Out 2019 14:46

Ajuda dos experientes:

1 - Baixei e compilei o LETODBF
2 - ativei o serviço
Código:
10.18.2019 14:31:45 DEBUG thread3() ending ..
10.18.2019 14:31:45       Server at port 2812 have shutdown.
10.18.2019 14:32:38       UDF file: C:\LetoDBf-master\bin\letoudf.hrb not present.
10.18.2019 14:32:38 INFO: LetoDBf Server 3.00 (20191017), will run at port :2812 ( internal also used :2813 )
10.18.2019 14:32:38 INFO: DataPath=C:\COMARA, ShareTables=1, NoSaveWA=1, Max Tables=999
10.18.2019 14:32:38 INFO: LoginPassword=0, CacheRecords=21, LockExtended=0, Max Users=99
10.18.2019 14:32:38 DEBUG second socket: 324 for errors established
10.18.2019 14:32:38 DEBUG thread3() with pipe handle: 332 started ..

3 - o meu arquivo .ini segue abaixo
Código:
;Server = 192.168.15.30
;IP = 192.168.15.30
Port = 2812
DataPath = C:/COMARA
;LogPath = /tmp
Default_Driver = CDX
;Lock_Scheme = 6
;Memo_Type = FPT
Share_Tables = 1
No_Save_WA = 1
Lower_Path = 0
EnableFileFunc = 1
EnableAnyExt = 1
Allow_UDF = 1
Pass_for_Login = 0
Pass_for_Manage = 0
Pass_for_Data = 0
;Pass_File = leto_users
Cache_Records = 21
;Max_Vars_Number = 1000
;Max_Var_Size = 67108864
;Tables_Max  = 999
;Users_Max = 99
Debug = 1
Optimize = 1
;AutOrder = 0
;ForceOpt = 0
;TimeOut = 360
;Zombie_Check = 0
;Server_User = advantage
;Server_UID = 1000
;Server_GID = 4
;BC_Services = letodb;
;BC_Interface = eth2
;BC_Port = 2812
;SMB_SERVER = 1
DataBase = /
Backup = /tmp/backup
Mask = *.dbf,*.dbt,*.ntx
Lock = 1
Seconds = 30
Wait = 1
ArcCmd = tar -cvzf /tmp/backup/leto.tar.gz /tmp/backup/*


o ip na rede interna da maquina onde esta o letodbf é 192.168.15.30

4-Liberei a porta do modem conforme abaixo
Untitled.jpg


5-fiz o seguinte codigo no aplicativo

Código:
#include "dbinfo.ch"
#include "rddleto.ch"
#include "hwgui.ch"
REQUEST LETO
REQUEST DBFCDX   
REQUEST HB_CODEPAGE_PTISO, HB_CODEPAGE_PT850
****************************************
FUNCTION MAIN( Caminho )
****************************************
LOCAL oMENUPRINC;
   , oToolbar1;
   , oFont;
   , TENTATIVA, OK_SENHA;
    , nPort := 2812
   
PUBLIC cPath := Caminho

   IF Empty( cPath )

     //cPath := "//127.0.0.1:2812/"

     cPath := ""

     RDDSETDEFAULT( "DBFCDX" )

   ELSE

     cPath := "//" + cPath + IiF( ":" $ cPath, "", ":" + ALLTRIM( STR( nPort ) ) )

     cPath += Iif( Right(cPath,1) == "/", "", "/" )

     RDDSETDEFAULT( "LETO" )
    
      IF ( leto_Connect( cPath ) ) < 0
         hwg_MsgInfo( "Erro Conectando ao Servidor: " + cPath + leto_Connect_Err( .T. ), "Verifique!!!")
         quit
      ELSE
        hwg_MsgInfo( "Conecção com o Servidor "+ cPath + " OK", "Conecção!!!" )
      ENDIF    
   ENDIF


mas a coisa nao funciona , simplesmente da erro de conecção,
onde estou errando ???? :'( :'( :'(

tenho de carregar algo cliente na outra maquina???

como chamar o aplicativo ???
já testei destas formas:

sgc 192.168.15.30
sgc localhost

mas todas as formas que tentei dão erro de conecção

Letodbf - o Inicio

18 Out 2019 16:57

Tava tudo certo era o tal do firewall do Windows sacaneando a coisa, desativei e funcionou,
agora tenho de criar regras para resolver o problema, so não sei como fazer :'( :'( :'(

Letodbf - o Inicio

18 Out 2019 18:04

Estou falando mais para ajudar, pq não tenho experiência no que vc precisa, mas talvez assinando o EXE ajude, ou então, descobrindo se existe alguma chave no registro do Windows que libere o Firewall do Windows para o Leto.

Letodbf - o Inicio

19 Out 2019 01:10

TUDO RESOLVIDO , regra criada, letodbf funcionando 100%
preparado para base normal e com letodbf

gostei do resultado :* :* :*

Letodbf - o Inicio

21 Out 2019 11:57

Ola!
TUDO RESOLVIDO , regra criada, letodbf funcionando 100%
preparado para base normal e com letodbf

gostei do resultado

Legal.
Bom ver, pq alguns não acertam e ficam inventando problema. Dizendo que ficou mais lento etc...
O firewall eu faço manual mesmo a regra do letodbf, alguns clicks, não digitamos nada só o nome da regra.
Nunca mais vai querer usar rede mapeada. São mudanças mínimas, e ainda ganhamos uma serie de funções extras, para ajudar. Por isso ainda uso DBF e vou ficar por muito tempo, salvo alguma necessidade extra...

Saudações,
Itamar M. Lins Jr.
Postar uma resposta