Clipper On Line • Ver Tópico - LetoDBf (fork) -> LetoDb com espinafre

LetoDBf (fork) -> LetoDb com espinafre

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

Moderador: Moderadores

 

LetoDBf (fork) -> LetoDb com espinafre

Mensagempor Itamar M. Lins Jr. » 04 Nov 2018 10:29

Ola!
Aqui, se eu tentar conectar com o IP do servidor, não conecta, somente da certo se cPath = "//localhost:2812/"

Vc precisa liberar a porta do FIREWALL do servidor ai e se tem algum antivirus deve verificar isso.
Adicionar regra de exceção no FIREWALL PORTA 2812 do LETODBF.

Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

LetoDBf (fork) -> LetoDb com espinafre

Mensagempor asimoes » 04 Nov 2018 11:19

Estranho isso, no servidor eu gravo o IP dele em arquivo
.ini. E a minha aplicação lê o IP não tem erro
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

LetoDBf (fork) -> LetoDb com espinafre

Mensagempor Itamar M. Lins Jr. » 04 Nov 2018 11:30

Ola!
deixando claro que no Servidor sempre deixo o IP fixo.

Eu padronizo o nome do servidor LetoDbf. E deixo fixo também.
Se a maquina na qual está instalado o LetoDbf, chame-se "servidor", eu deixo em um arquivo .INI, ai posso copiar para qualquer estação esse arquivo.
Bom deixar os IP´s da estações fixos, porque quando muda o IP, cai a conexão.
E altero no roteador para atribuir os IP's dos celulares acima de tal faixa, para não colidir com os IP´s fixos.

Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

LetoDBf (fork) -> LetoDb com espinafre

Mensagempor asimoes » 04 Nov 2018 16:13

No roteador é só identificar o mac das placas e atribuir os IP´s
Meu cliente tem 1 servidor e 3 estações, uma rede simples, nunca tive problemas com acesso, só quando o roteador queimou, coisas do tempo.
Foi só trocar o roteador e reatribuir os IP´s, coisa de 10 min no máximo, uma rede grande é melhor atribuir um IP fixo para o servidor e o resto das
estações com DHCP
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

LetoDBf (fork) -> LetoDb com espinafre

Mensagempor porter » 05 Nov 2018 11:38

Olá pessoal,
Pela estação, estou conseguindo acessar normalmente o servidor, e pela estação, para abrir um arquivo que está no servidor com o USE ESTQ001 SHARED
abre normalmente, mas quando tento abrir outro arquivo dessa mesma forma, da estação está dando o seguinte erro:

Error Base/1132: Erro de limite: acesso de array

Os dois arquivos estão no servidor, e pela estação somente o primeiro abre, o segundo dá o erro descrito acima, tenho que fazer alguma
configuração no letodb.ini ?
porter
Usuário Nível 5

Usuário Nível 5
 
Mensagens: 1024
Data de registro: 10 Dez 2009 15:44
Cidade/Estado: OLIMPIA-SP
Curtiu: 3 vezes
Mens.Curtidas: 23 vezes

LetoDBf (fork) -> LetoDb com espinafre

Mensagempor asimoes » 05 Nov 2018 17:58

Porter,

Esse é o letdb.ini que eu uso, veja o que está diferente no seu.

;Server = \\192.168.56.1
;IP = 127.0.0.1
Port = 2812
DataPath = DB
;LogPath = /tmp
Default_Driver = CDX
;Lock_Scheme = 6
;Memo_Type = FPT
Share_Tables = 0
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
;HardCommit = 0 ver readme.txt
;AutOrder = 0
;ForceOpt = 0
;TimeOut = 360
;Zombie_Check = 30
;Server_User = advantage
;Server_UID = 1000
;Server_GID = 4
;BC_Services = letodb;
;BC_Interface = eth2
;BC_Port = 2812
DataBase = DB
;Backup = C:\Users\cisin\Documents\GitHub\LetoDBf\bin\backup
Mask = *.dbf,*.dbt,*.ntx
Lock = 1
Seconds = 30
Wait = 1
ArcCmd = tar -cvzf /tmp/backup/leto.tar.gz /tmp/backup/*
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

LetoDBf (fork) -> LetoDb com espinafre

Mensagempor porter » 05 Nov 2018 19:20

Olá Asimões, obrigado por responder.
Fiz as modificações, conforme o seu arquivo letodb.ini, o comando USE ESTQ001 SHARED executa e em seguida da a mensagem de erro: Error Base/1132: Erro de limite: acesso de array, só consegue acessar apenas o primeiro arquivo do servidor, quando tenta acessar o segundo arquivo, da erro, não consegui descobrir ainda onde estou errando.
porter
Usuário Nível 5

Usuário Nível 5
 
Mensagens: 1024
Data de registro: 10 Dez 2009 15:44
Cidade/Estado: OLIMPIA-SP
Curtiu: 3 vezes
Mens.Curtidas: 23 vezes

LetoDBf (fork) -> LetoDb com espinafre

Mensagempor Itamar M. Lins Jr. » 05 Nov 2018 20:09

Ola!
Porter, vc pŕecisa criar os exemplos e postar para todos nós testarmos.
FUNCTION MAIN
LOCAL aStru := {}
IF LETO_CONNE...
Cria estrutura do DBF vazio, indexar, etc...
BROWSE()

Dessa forma que vc está fazendo as suas perguntas fica muito cansativo, agente tentar adivinhar o que pode ser.
Isso não é erro do LetoDbf, tá parecendo que tem uma função ligada na abertura do arquivo(indice) não sei, e o LetoDb não enxerga.
Cadê esse arquivo ? cadê os códigos ?
Posta ai, agora bem simplificado.
A mesma coisa ocorre com outras pessoas que estão querendo usar o Letodbf.
Tem que aprender isolar o problema, linha por linha, fazer teste com códigos pequenos para que todos nós possamos testar. Pode ser um BUG do LetoDb e pode não ser.
Function main
local aStru := {{"nome","c",10,0}} //criar um DBF com apenas uma linha
local cPath := '//192...
IF leto_Connect( cPATH ) < 0
alert("erro...

  IF dbCreate( cPath + aStru)
      ? "Arquivo criado via leto..."
   ENDIF


Ai todo mundo vai saber te ajudar.

Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

LetoDBf (fork) -> LetoDb com espinafre

Mensagempor asimoes » 05 Nov 2018 21:11

Porter,

Tem que usar o bom e velho debug, habilita o -b no hbp ou hbm, e coloca o altd() antes da abertura dos dbf´s, outra coisa mostra pra gente a sua rotina de abertura dos arquivos, pode ter algo errado ai
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

LetoDBf (fork) -> LetoDb com espinafre

Mensagempor asimoes » 05 Nov 2018 21:29

Porter,

Tenta isso:

USE ESTQ001 SHARED NEW ( a cláusula new é para atribuir uma nova área pro dbf )
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

LetoDBf (fork) -> LetoDb com espinafre

Mensagempor porter » 06 Nov 2018 16:47

Olá,
O erro ocorre quando bloqueio um registro de PRODUTOS por exemplo para gravar e em seguida tento abrir CLIENTES por exemplo, eu não estava descobrindo o erro
porque o arquivo era aberto em outra parte do sistema, então não imaginava que o motivo era esse, então alterei e coloquei a
abertura do arquivo logo abaixo.

BloqReg( "PRODUTOS" )
REPLACE ULTVENDA WITH DATE()
UNLOCK
USE CLIENTES SHARED  -->> Error Base/1132: Erro de limite: acesso de array nessa linha, se bloquear registro para gravar.

FUNCTION BLOQREG(ARQ)
      SAVE SCREEN
      IF RLOCK()
         RETURN .T.
      ELSE
         DO WHILE .T.
            IF !RLOCK()
               MENSAGEM("Registro Indisponível!  ( " + ARQ + " ) " )
               RESTORE SCREEN
               LOOP
            ENDIF
            EXIT
         ENDDO
      ENDIF
      RETURN .T.

porter
Usuário Nível 5

Usuário Nível 5
 
Mensagens: 1024
Data de registro: 10 Dez 2009 15:44
Cidade/Estado: OLIMPIA-SP
Curtiu: 3 vezes
Mens.Curtidas: 23 vezes

LetoDBf (fork) -> LetoDb com espinafre

Mensagempor Itamar M. Lins Jr. » 06 Nov 2018 17:15

Ola!
Porter use ALIAS no rlock() e em todo lugar, não sabemos que área está aberta, abrimos no início, e vamos só direcionando.
(cAlias)->(Rlock())

Da forma que vc mostrou o código, está embolando as áreas(tabelas)
BloqReg( "PRODUTOS" )
produtos->ULTVENDA := DATE() //não precisa do replace.
produtos->(DbUNLOCK())
IF SELECT("CLIENTES") > 0
  //JA TÁ ABERTO
ELSE
   USE CLIENTES SHARED 
ENDIF
//NA FUNÇÃO BLOQREG
FUNCTION BLOQREG(cAlias)
LOCAL lOk := .T.
hb_default(@cAlias,alias())
Do While .t.
      IF (cAlias)->(RLOCK())
          exit
      else
          IF neterr()
               MENSAGEM("Registro Indisponível!  ( " + ARQ + " ) " )
         lOk := .F.
...
ENDDO
Return lOk


Entendeu a lógica ?

Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

LetoDBf (fork) -> LetoDb com espinafre

Mensagempor asimoes » 06 Nov 2018 18:44

Eu acrescentaria USE CLIENTES SHARED NEW

NEW para informar que está sendo aberto em uma área nova, se não fizer isso vai "matar" alguma área previamente informada
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

LetoDBf (fork) -> LetoDb com espinafre

Mensagempor Itamar M. Lins Jr. » 07 Nov 2018 14:40

Ola!
A cláusula NEW, deve ser usada apenas para o numero 1,2,3,4,5... não colidir
O correto é verificar se está ou não aberto com SELECT() para não abrir várias vezes o mesmo DBF sem necessidade.
Se precisar usar um PACK, e não souber onde o DBF está aberto(área 1,2,3..) ? ou um flock/rlock travando ?

SELECT([<cAlias>]) --> nWorkArea

SELECT()
Determine the work area number of a specified alias
------------------------------------------------------------------------------
Syntax

     SELECT([<cAlias>]) --> nWorkArea

Arguments

     <cAlias> is the target work area alias name.

Returns

     SELECT() returns the work area of the specified alias as an integer
     numeric value.

Description

     SELECT() is a database function that determines the work area number of
     an alias.  The number returned can range from 0 to 250.  If <cAlias> is
     not specified, the current work area number is returned.  If <cAlias> is
     specified and the alias does not exist, SELECT() returns zero.

     Note:  The SELECT() function and SELECT command specified with an
     extended expression argument look somewhat alike.  This should not be a
     problem since the SELECT() function is not very useful on a line by
     itself.

Examples

     .  This example uses SELECT() to determine which work area
        USE...NEW selected:

        USE Sales NEW
        SELECT 1
        ? SELECT("Sales")            // Result: 4

     .  To reselect the value returned from the SELECT() function, use
        the SELECT command with the syntax, SELECT (<idMemvar>), like this:

        USE Sales NEW
        nWorkArea:= SELECT()
        USE Customer NEW
        SELECT (nWorkArea)


Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

LetoDBf (fork) -> LetoDb com espinafre

Mensagempor porter » 07 Nov 2018 15:27

Olá Itamar e asimões
Com DBFCDX, dá certo tanto da forma que eu vinha fazendo, como também dá certo, do jeito que você sugeriu,
mas com o LetoDbf, o mesmo erro ainda persiste, o erro ocorre quando executo o sistema na estação, o LetoDbf conecta normalmente tanto local como na estação, estou achando que o erro não está na forma como estou bloqueando o registro, ainda não descobri onde estou errando, USE CLIENTES SHARED NEW,
também dá o mesmo erro.
No servidor tenho uma pasta chamada LETODBF, e nessa pasta tenho esses arquivos:
leto.sh
letodb.exe
LETODB.INI
letodbf.log

letodbf.log
11.07.2018 15:47:38 INFO: connected  192.168.0.100:1967 estoque.exe CP: PT850  DF: dd/mm/yy  conn-ID 0
11.07.2018 15:47:46 INFO: disconnect 192.168.0.100:1967 estoque.exe users=(1 : 1 : 2), tables=(0 : 4)
porter
Usuário Nível 5

Usuário Nível 5
 
Mensagens: 1024
Data de registro: 10 Dez 2009 15:44
Cidade/Estado: OLIMPIA-SP
Curtiu: 3 vezes
Mens.Curtidas: 23 vezes

Anterior Próximo



Retornar para Banco de Dados

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 14 visitantes


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
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro