Clipper On Line • Ver Tópico - Letodbf - o Inicio

Letodbf - o Inicio

Discussão sobre Banco de Dados e RDDs para Clipper/[x]Harbour.

Moderador: Moderadores

 

Letodbf - o Inicio

Mensagempor rubens » 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
"Eu e minha casa servimos ao Senhor e você ???"
Avatar de usuário

rubens
Colaborador

Colaborador
 
Mensagens: 1456
Data de registro: 16 Ago 2003 09:05
Cidade/Estado: Nova Xavantina - MT
Curtiu: 69 vezes
Mens.Curtidas: 95 vezes

Letodbf - o Inicio

Mensagempor Itamar M. Lins Jr. » 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.
cFrm:=leto_memoread("seu.frm")

Ou copiar o FRM quando for usar na ESTAÇÃO.
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.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 3754
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 130 vezes
Mens.Curtidas: 197 vezes

Letodbf - o Inicio

Mensagempor rubens » 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
"Eu e minha casa servimos ao Senhor e você ???"
Avatar de usuário

rubens
Colaborador

Colaborador
 
Mensagens: 1456
Data de registro: 16 Ago 2003 09:05
Cidade/Estado: Nova Xavantina - MT
Curtiu: 69 vezes
Mens.Curtidas: 95 vezes

Letodbf - o Inicio

Mensagempor rubens » 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
"Eu e minha casa servimos ao Senhor e você ???"
Avatar de usuário

rubens
Colaborador

Colaborador
 
Mensagens: 1456
Data de registro: 16 Ago 2003 09:05
Cidade/Estado: Nova Xavantina - MT
Curtiu: 69 vezes
Mens.Curtidas: 95 vezes

Letodbf - o Inicio

Mensagempor Jairo Maia » 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?
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar de usuário

Jairo Maia
Colaborador

Colaborador
 
Mensagens: 2440
Data de registro: 16 Ago 2010 13:46
Cidade/Estado: Campinas-SP
Curtiu: 294 vezes
Mens.Curtidas: 264 vezes

Letodbf - o Inicio

Mensagempor rubens » 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
"Eu e minha casa servimos ao Senhor e você ???"
Avatar de usuário

rubens
Colaborador

Colaborador
 
Mensagens: 1456
Data de registro: 16 Ago 2003 09:05
Cidade/Estado: Nova Xavantina - MT
Curtiu: 69 vezes
Mens.Curtidas: 95 vezes

Letodbf - o Inicio

Mensagempor Jairo Maia » 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.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar de usuário

Jairo Maia
Colaborador

Colaborador
 
Mensagens: 2440
Data de registro: 16 Ago 2010 13:46
Cidade/Estado: Campinas-SP
Curtiu: 294 vezes
Mens.Curtidas: 264 vezes

Letodbf - o Inicio

Mensagempor rossine » 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,
Rossine.

Harbour 3.4, MingW / Msvc, QT, Qt5xhb, GtQtc, DbfCdx, MySql/MariaDB.
rossine
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 233
Data de registro: 06 Ago 2007 09:57
Cidade/Estado: Divinópolis-MG
Curtiu: 0 vez
Mens.Curtidas: 17 vezes

Letodbf - o Inicio

Mensagempor rubens » 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
"Eu e minha casa servimos ao Senhor e você ???"
Avatar de usuário

rubens
Colaborador

Colaborador
 
Mensagens: 1456
Data de registro: 16 Ago 2003 09:05
Cidade/Estado: Nova Xavantina - MT
Curtiu: 69 vezes
Mens.Curtidas: 95 vezes

Letodbf - o Inicio

Mensagempor Fernando queiroz » 18 Out 2019 14:46

Ajuda dos experientes:

1 - Baixei e compilei o LETODBF
2 - ativei o serviço
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
;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

#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
HARBOUR 3.2, HWGUI 2.22 B4, SEFAZCLASS, DBFCDX, PDFClass, LETODBF
Fernando queiroz
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 310
Data de registro: 12 Nov 2014 23:41
Cidade/Estado: Rio Branco/acre
Curtiu: 3 vezes
Mens.Curtidas: 7 vezes

Letodbf - o Inicio

Mensagempor Fernando queiroz » 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 :'( :'( :'(
HARBOUR 3.2, HWGUI 2.22 B4, SEFAZCLASS, DBFCDX, PDFClass, LETODBF
Fernando queiroz
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 310
Data de registro: 12 Nov 2014 23:41
Cidade/Estado: Rio Branco/acre
Curtiu: 3 vezes
Mens.Curtidas: 7 vezes

Letodbf - o Inicio

Mensagempor MSDN » 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.
Marcelo Neves
Harbour+MiniGUI : harbourdeveloper.blogspot.com.br
Harbour 3.2, MiniGUI Extended, Borland C++ 5.5.1, xEdit, DBF/CDX, MySQL
(41) 99786-3995
skype : msdn.xbase
https://www.facebook.com/groups/459684654564715/
https://www.youtube.com/channel/UC3IsY8Gwwulg0aWOgW-o-Qg
marcelo.souza.das.neves@gmail.com
MSDN
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 539
Data de registro: 28 Nov 2003 14:55
Cidade/Estado: Curitiba - PR
Curtiu: 114 vezes
Mens.Curtidas: 90 vezes

Letodbf - o Inicio

Mensagempor Fernando queiroz » 19 Out 2019 01:10

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

gostei do resultado :* :* :*
HARBOUR 3.2, HWGUI 2.22 B4, SEFAZCLASS, DBFCDX, PDFClass, LETODBF
Fernando queiroz
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 310
Data de registro: 12 Nov 2014 23:41
Cidade/Estado: Rio Branco/acre
Curtiu: 3 vezes
Mens.Curtidas: 7 vezes

Letodbf - o Inicio

Mensagempor Itamar M. Lins Jr. » 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.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 3754
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 130 vezes
Mens.Curtidas: 197 vezes

Letodbf - o Inicio

Mensagempor Fernando queiroz » 28 Out 2019 22:31

Pergunta aos mais experientes em LetoDBF:

Como fazer o travamento para atualização ou deleção de um registro.

tenho feito com
DO WHILE .NOT. RLOCK( )
hwg_MsgInfo( "Registro em uso pelo Operador: "+ HB_EOL()+PRODUTOS->QUEM_BLOQ+ HB_EOL()+ "Solicite que liberem o cadastro desse Produto", "ATENÇÃO!!!" )
ENDDO

Só que tem dado erro de bloqueio, estive olhando na documentação e me sugerem FLOCK(), isto é, para bloquear todo o arquivo
alguém me explica o caso, tenho o arquivo de pedidos e de itens do pedido, se bloquear o pedido ninguém pode usar sei la to perdido,

Seguindo dicas do Quintas to bloqueando o arquivo Flock() somente no momento do UPDATE ou DELETE e já desbloqueio, com isso parou de dar erro de LOCK REQUIRED que estava dando antes com o RLOCK() , vi também que no .INI tem uma opção de tempo de bloqueio, bom vamos aos estudos

:% :% :%

Estava olhando na documentação e encontrei isso

Lock_Scheme = 0 - If > 0, extended locking scheme will be used by server.
* This is only needed, if your DBF will be greater in size as 1 GB. *
Then DB_DBFLOCK_HB32 will be used for NTX/CDX;
_or_ if set to 6, DB_DBFLOCK_CLIPPER2 for NTX, HB32 for other
_or_ if set to 2, DB_DBFLOCK_COMIX for CDX, HB32 for other
_or_ if set to 5, DB_DBFLOCK_HB64 for all.

o meu está 6 agora ficou a duvida de qual usar, ou tenhi de voltar pra RLOCK() novamente????
HARBOUR 3.2, HWGUI 2.22 B4, SEFAZCLASS, DBFCDX, PDFClass, LETODBF
Fernando queiroz
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 310
Data de registro: 12 Nov 2014 23:41
Cidade/Estado: Rio Branco/acre
Curtiu: 3 vezes
Mens.Curtidas: 7 vezes

Anterior Próximo



Retornar para Banco de Dados

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 1 visitante


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro