Clipper On Line • Ver Tópico - LetoDBf (fork) -> LetoDb com espinafre
Mudar para estilo Clássico
Discussão sobre Banco de Dados e RDDs para Clipper/[x]Harbour.
Postar uma resposta

LetoDBf (fork) -> LetoDb com espinafre

30 Dez 2018 15:01

Olá,

Tenho um índice onde tenho uma variável pública, assim:

Left( referencia, nNivel )

Usando o Leto, na hora de indexar, ocorre de execução , variável inexistente "nNivel"

Tentei criar esta variável no servidor atraves da funçao leto_varset() mas nao deu certo.

Alguem saberia me dizer como fazer ?

Resolvido: https://groups.google.com/forum/m/#!topic/harbour-users/ykkTp9LrEgQ

Obrigado,

LetoDBf (fork) -> LetoDb com espinafre

04 Jan 2019 12:07

Olá pessoal, tenho essa rotina onde transfiro registros de um arquivo para outro em seguida deleto o registro,
gostaria de saber, se com o LetoDBF, a cada registro deletado, é necessário dar um DBCOMMIT() e um DBUNLOCK()
a cada registro deletado, ou basta dar um DBCOMMIT() e um DBUNLOCK() quando terminar de processar o arquivo inteiro.

Código:
SELECT 82 // ITENS
SEEK STR(cPEDIDOS,6)
DO WHILE PEDIDO = cPEDIDO
     IGUALAVAR() // IGUALO VARIAVEIS
     SELECT 4 ; APPEND BLANK
     REPLACE CODMERCAD  WITH wCODMERCAD
     REPLACE NOMPRO_    WITH wNOMPRO_ 
     DBCOMMIT()
     DBRUNLOCK()
     SELECT 82
     RLOCK() ; DELETE // --> nessa linha, tem que executar DBCOMMIT() E DBUNLOCK() ?         
     SKIP
ENDDO
DBCOMMIT()
DBRUNLOCK()
SELECT 81
RETURN

LetoDBf (fork) -> LetoDb com espinafre

04 Jan 2019 13:25

Olá porter,

Minha opinião: Apenas no final do processamento de todos os registros use DbCommit() e DbUnlock(). Usar DbRCommit(), DbCommit() ou COMMIT a cada registro atrasa e muito o processamento.

Eu uso apenas DbUnlock() no final do processamento (uso apenas isso) porque ao liberar o arquivo ou registro(s) eles são salvos no banco de dados automaticamente. Mas faça como achar mais seguro.

LetoDBf (fork) -> LetoDb com espinafre

04 Jan 2019 13:32

Boa tarde...
Eu uso apenas DbUnlock() no final do processamento (uso apenas isso) porque ao liberar o arquivo ou registro(s) eles são salvos no banco de dados automaticamente

Então.. Jairo.. eu tb usava dbcommit() e depois dbunlock(). Não sabia desse detalhe.
Então se usar apenas dbunlock() ele destrava o registro e salva alterações?
Isso apenas no registro atual ou na tabela inteira?

Achei isso no manual do harbour do git https://harbour.github.io/doc/harbour.html#dbunlock
Essa função libera o arquivo ou o bloqueio de registro na área de trabalho atualmente selecionada ou com alias. Ele não desbloqueará um bloqueio associado em bancos de dados relacionados.


Obg.
Rubens

LetoDBf (fork) -> LetoDb com espinafre

04 Jan 2019 14:58

Olá Rubens,

rubens escreveu:Isso apenas no registro atual ou na tabela inteira?
Na tabela aberta na área atual, e em todos os registros. Para ter esse efeito em áreas relacionadas e demais áreas abertas, use DbUnlockAll(), ou DbUnlock()->cNomeAlias.

Veja:
DbUnlock():
Releases file and all record locks in a work area.
(Tradução livre: libera o arquivo e todos os registros de uma determinada área)
PS: Se não informar a área, exemplo: DbUnlock()->cNomeAlias, o efeito será exclusivo na área atual.

DbUnlockAll():
Unlocks all records and releases all file locks in all work areas.
(Tradução livre: libera todos os registros e todos os arquivos em todas as áreas)

LetoDBf (fork) -> LetoDb com espinafre

05 Jan 2019 18:01

Olá,

Estou tendo um problema aqui com o Letodbf, quando eu vou gravar algum registro ou incluir um novo, dá erro de GPF ou trava a tela.
Estou abrindo os arquivos dbf e cdx, passando o path com IP corretamente e o arquivo é aberto normalmente.

Alguém já se deparou com este tipo de problema ?

Obrigado.

LetoDBf (fork) -> LetoDb com espinafre

08 Jan 2019 10:18

Olá rossine,

Qual versão do Harbour você está usando? Pergunto porque nas duas versões mais recentes (a de 31/12/2018 e a anterior) tive muito problema na hora de travar registros usando o LETO, então voltei a usar uma versão de Junho de 2017.

Isso porque uso o Harbour 3.2, sobre o 3.4 não sei.

LetoDBf (fork) -> LetoDb com espinafre

10 Jan 2019 09:29

Olá,

Fiz atualização do LetoDbf ontem 09/01 atualização da mesma data e estou tendo problemas agora na criação de indices temporários

Código:
Error LETO/1006  Erro de criacao: DB\Harbour\h-AsaPrev\NETIO\SERVER5\DB\TMP6439544.CDX (DOS Error 3)
Called from ->ORDCREATE(0)


o DataPath no letodb.ini é:

DataPath = DB

Alguém está passando pelo mesmo problema ?

Acho que tem a ver com a nova função LETO_SETPATH

LetoDBf (fork) -> LetoDb com espinafre

10 Jan 2019 11:41

Alexandre, ainda não atualizei o LETO, mas você poderia fazer um teste por favor com a nova versão? Seria alterar DataPath = DB para DataPath = C:\DB, ou seja, colocar a unidade e reiniciar o serviço, para ver se vai funcionar.

LetoDBf (fork) -> LetoDb com espinafre

10 Jan 2019 12:44

Jairo Maia escreveu:Alexandre, ainda não atualizei o LETO, mas você poderia fazer um teste por favor com a nova versão? Seria alterar DataPath = DB para DataPath = C:\DB, ou seja, colocar a unidade e reiniciar o serviço, para ver se vai funcionar.


Jairo, descobri o problema, na minha aplicação logo no início tinha um

cDirSis := Hb_DirBase() + [NETIO\SERVER5\DB\]

SET DEFAULT TO &cDirSis.

Removi o SET DEFAULT TO &cDirSis. e funcionou nessa versão de 09/01/2019, o set default poderia até ser removido não impacta na aplicação.

Então nessa atualização não pode usar SET DEFAULT TO &cDirSis ou existe alguma forma que eu ainda não entendi, nem mesmo olhando o código da letodbf

O que eu não consegui entender ainda é essa função nova LETO_SETPATH que no changelog fiz que pode ser usada em substituição de SET PATH TO e SET DEFAULT TO,

Mas tem uma grande ? de como usar, se alguém souber gostaria de uma orientação de uso.

LetoDBf (fork) -> LetoDb com espinafre

12 Jan 2019 16:35

Olá Jairo,

Olá rossine,

Qual versão do Harbour você está usando? Pergunto porque nas duas versões mais recentes (a de 31/12/2018 e a anterior) tive muito problema na hora de travar registros usando o LETO, então voltei a usar uma versão de Junho de 2017.

Isso porque uso o Harbour 3.2, sobre o 3.4 não sei.



Estou usando o Harbour 3.4.

Parece que o problema está no controle do index, pois logo após alterar um um registro, até outro arquivo some os registros.

Tipo assim:

- Tenho um arquivo de contas a receber qonde a chaves principal é: documento + tipo de documento.
- Quando incluo um registro no contas a receber, os registros do cadastro de tipo de documentos, somem e quando eu tento reincluir um novo registro, aí ocorre o GPF.

LetoDBf (fork) -> LetoDb com espinafre

12 Jan 2019 18:44

Olá Rossine,

Tem como mostrar o código desta gravação ?

Eu tenho usado o harbour 3.4 compilado com LLVM/CLANG 7.01 e também a última atualização do letodbf de 12/01, o meu sistema está estável.
Faço DbRLock(), DbCommit(), DbUnLock() sem problemas.

Lembro de problemas com indice e por acaso descobri que era o parâmetro timeout Leto_Connect()

Passei usar: nTimeOut := -1
Nunca mais tive problemas com abertura de tabela e indices, as gravações estão ok.

Ex.:
Código:

cIpAddServer := [192.168.1.109]

cPortaServer := [2812]

cServidorDB  := [//] + cIpAddServer + [:] + cPortaServer + [/]

nTimeOut     := -1

Leto_Connect( cServidorDB, , , nTimeOut )

LetoDBf (fork) -> LetoDb com espinafre

15 Jan 2019 21:01

Olá Alexandre,

asimoes escreveu:Eu tenho usado o harbour 3.4 compilado com LLVM/CLANG 7.01 e também a última atualização do letodbf de 12/01, o meu sistema está estável.
Faço DbRLock(), DbCommit(), DbUnLock() sem problemas.

Lembro de problemas com indice e por acaso descobri que era o parâmetro timeout Leto_Connect()

Passei usar: nTimeOut := -1
Nunca mais tive problemas com abertura de tabela e indices, as gravações estão ok.

Ex.:
Código:

cIpAddServer := [192.168.1.109]

cPortaServer := [2812]

cServidorDB  := [//] + cIpAddServer + [:] + cPortaServer + [/]

nTimeOut     := -1

Leto_Connect( cServidorDB, , , nTimeOut )


Aqui eu já usava a configuração: nTimeOut := -1 e mesmo assim ocorria o erro que citei.

Não sei se o que o Elch mexeu nesta última release também resolveu meu problema, mas agora está funcionando 100%, inclusive estou testando em casa usando meu notebook via wifi acessando uma máquina local que deixei como servidor de dados do LETO e inclusive a velocidade de execução que também estava muito lento, melhorou muito o acesso aos dados.

Me parece que o Elch, corrigiu algum problema sobre "locks" nesta release. Vejam o comentário dele:

https://groups.google.com/forum/#!topic/harbour-users/lKCaAbJ9HPQ%5B26-50%5D

T+

LetoDBf (fork) -> LetoDb com espinafre

20 Fev 2019 20:40

Caros amigos,

Atualmente utilizo xHarbour 1.2.1 (Simplex) (Rev. 9421) / Borland C++ 5.5.1 (32 bit) e não tenho como iniciar uma migração para o Harbour hoje.
Já uso o Letodb em meu sistema e estou interessado em fazer testes com o Letodb(f). Após baixar, tentei gerar a LIB e encontrei os seguintes erros na execução do make_b32.bat.
O Letodb(f) aumentou a velocidade de acesso os dados? Na minha aplicação tenho que fornecer muitos relatórios várias vezes ao dia com críticas de vendas por item, o que gera uma demanda muito grande, visto que o banco de dados é enorme.

Código:
MAKE Version 5.2  Copyright (c) 1987, 2000 Borland
   IF EXIST "obj\api\letocl.obj" del obj\api\letocl.obj
   bcc32 -c -Iinclude;D:\XHARBOUR\include -d   -tWM -D__WIN32__ -D__CONSOLE__  -DUSE_PMURHASH=1 -D__LETO_C_API__=1 -DLETO_NO_MT=1 -DLETO_NO_THREAD=1 -oobj\api\letocl.obj source\client\letocl.c
Borland C++ 5.82 for Win32 Copyright (c) 1993, 2005 Borland
source\client\letocl.c:
Error E2209 D:\XHARBOUR\include\hbzlib.h 41: Unable to open include file '../source/rtl/zlib/zlib.h'
Error E2141 include\funcleto.h 176: Declaration syntax error
Error E2141 include\funcleto.h 177: Declaration syntax error
Error E2141 include\funcleto.h 178: Declaration syntax error
Error E2141 include\funcleto.h 180: Declaration syntax error
Error E2141 include\funcleto.h 181: Declaration syntax error
Error E2293 include\funcleto.h 182: ) expected
Error E2141 include\funcleto.h 185: Declaration syntax error
Error E2141 include\funcleto.h 186: Declaration syntax error
Error E2303 include\funcleto.h 189: Type name expected
Error E2293 include\funcleto.h 190: ) expected
Error E2303 include\funcleto.h 191: Type name expected
Error E2303 include\funcleto.h 192: Type name expected
Error E2147 include\funcleto.h 193: 'HB_BOOL' cannot start a parameter declaration
Error E2141 include\funcleto.h 196: Declaration syntax error
Warning W8017 D:\XHARBOUR\include\hbapirdd.h 125: Redefinition of 'HB_FT_TIME' is not identical
Error E2139 include\letocl.h 111: Declaration missing ;
Error E2238 include\letocl.h 112: Multiple declaration for 'HB_USHORT'
Error E2344 include\letocl.h 111: Earlier declaration of 'HB_USHORT'
Error E2139 include\letocl.h 112: Declaration missing ;
Error E2238 include\letocl.h 113: Multiple declaration for 'HB_USHORT'
Error E2344 include\letocl.h 111: Earlier declaration of 'HB_USHORT'
Error E2139 include\letocl.h 113: Declaration missing ;
Error E2238 include\letocl.h 114: Multiple declaration for 'HB_USHORT'
Error E2344 include\letocl.h 111: Earlier declaration of 'HB_USHORT'
Error E2139 include\letocl.h 114: Declaration missing ;
Error E2228 include\letocl.h 114: Too many error or warning messages
*** 26 errors in Compile ***

** error 1 ** deleting obj\api\letocl.obj


Se alguém puder ajudar, agradeço antecipadamente.

Saudações,

Júlio.

LetoDBf (fork) -> LetoDb com espinafre

23 Fev 2019 11:10

na minha humilde opnião seria bom fazer um topico so com o letodb(fork) , aqui até tem muita informação, mais esta um pouco digamos "bagunçada" , porque mistura o letodb e o letodb(fork)
que convenhamos são parecidos mais tem pequenas diferenças
seria bom abrir um topico , com a a ideia inicial do itamar, que fosse um estilo manual de como iniciar , o que precisa o que mudaria no seu .prg atual
com pequenos exemplos funcionais, para facilitar
com toda certeza diminuiriam as duvidas em torno do assunto... fosse estilo o tutorial do acbr que o amigo rubens "salvo engano " fez
sei que demandaria um pouco de trabalho, então quem ja esta usando, poderia se empenhar "quando podesse claro pq sei que o tempo é corrido para nós ",
em ajudar esse topico ja que estaria tudo centalizado em um unico lugar
Postar uma resposta