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 asimoes » 15 Nov 2018 14:05

Controle de transação com LetoDbf, muito interessante:
  Begin Sequence  With __BreakBlock()
 
      leto_BeginTransaction(.T.)   
     
      IF Clientes->( DbAppend() )
         IF ( lApp := NetErr() )
            Break
         ENDIF
      ENDIF   
      Clientes->Codigo     := "001"
      clientes->Situacao   := "01"
      Clientes->MalaDireta := "S"
      clientes->( DbRUnLock() )
     
      IF Clientes->( DbAppend() )
         IF ( lApp := NetErr() )
            Break
         ENDIF
      ENDIF       
      Clientes->Codigo     := "002"
      clientes->Situacao   := "01"
      Clientes->MalaDireta := "S"
      clientes->( DbRUnLock() )
     
      //A=B //aqui é para provocar o erro
     
      leto_CommitTransaction()
     
      clientes->( DbGoTop() )
     
   Recover
      Alert("Erro incluindo registro(s)")
      leto_Rollback()
      RETURN Nil
   End
   
   DbEdit()
►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: 3953
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 273 vezes
Mens.Curtidas: 187 vezes

LetoDBf (fork) -> LetoDb com espinafre

Mensagempor rubens » 15 Nov 2018 16:30

Boa tarde...

Sobre a criação de índices temporários tb tem essa observação no manual..
# Using temporary index orders [ created in Server OS temporary path ] are only possible in
mode: NO_Save_Wa = 1.


Rubens
"Eu e minha casa servimos ao Senhor e você ???"
Avatar de usuário

rubens
Colaborador

Colaborador
 
Mensagens: 1343
Data de registro: 16 Ago 2003 09:05
Cidade/Estado: Nova Xavantina - MT
Curtiu: 61 vezes
Mens.Curtidas: 80 vezes

LetoDBf (fork) -> LetoDb com espinafre

Mensagempor Itamar M. Lins Jr. » 15 Nov 2018 18:44

Ola!
Pra mim alterar tudo seria muito trabalho tento vista outros projetos.

Que forma ? Não muda nada no seu comando. Fica Igual, somente a parte de CLI1,CLI2,cGrupo que vc precisa troca antes para o conteúdo da variável, qualquer sentença SQL não é assim ?

cQuery := ... + " ' " + cli1 + " ' " +  ... 
cQuery := ... + " ' " + cGrupo + " ' " + ...


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

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 3394
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 97 vezes
Mens.Curtidas: 155 vezes

LetoDBf (fork) -> LetoDb com espinafre

Mensagempor fladimir » 15 Nov 2018 22:16

Fui pesquisar aki pra ver qts linhas teria q trocar até q não é muito

Imagem

Daria pra fazer em uns 3 a 5 dias.

Mas como disse o projeto q contém essas linhas não teria necessidade de alteração pq uso processamento já no servidor e acesso TS e são monousuários, não multi empresa.

Como estou envolvido em outros projetos, vou avaliar se mudo ou permaneço dessa forma.

Agradeço aos amigos aki do fórum, em especial desse post pelas dicas e auxilio em testes/ideias.

Vlw galera.

Abraço.
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


DESKTOP CONSOLE Harbour 3.4.0dev (4541270) (2016-06-28 07:05) | Console | MINGW | DBF | CDX | FastReport | MySQL
DESKTOP VISUAL... Harbour 3.2 | MinGW | Xailer 4.0.2 | MariaDB Nativo | Outros via ADO | FastReport
MOBILE Android/IOS e WEB - Outros
Avatar de usuário

fladimir
Colaborador

Colaborador
 
Mensagens: 2235
Data de registro: 15 Nov 2006 19:21
Curtiu: 17 vezes
Mens.Curtidas: 124 vezes

LetoDBf (fork) -> LetoDb com espinafre

Mensagempor rubens » 16 Nov 2018 07:54

Bom dia..

Alguém tem o o manage compilado para compartilhar?
O Console eu consegui compilar já o manage não. Precisa da HwGui e eu não tenho ela.

Obrigado

Rubens
"Eu e minha casa servimos ao Senhor e você ???"
Avatar de usuário

rubens
Colaborador

Colaborador
 
Mensagens: 1343
Data de registro: 16 Ago 2003 09:05
Cidade/Estado: Nova Xavantina - MT
Curtiu: 61 vezes
Mens.Curtidas: 80 vezes

LetoDBf (fork) -> LetoDb com espinafre

Mensagempor asimoes » 16 Nov 2018 12:16

Tem que olhar o manual, quem está tomando erro com unlock veja se está usando controle de transação

Sobre controle de transação: leto_BeginTransaction(), leto_CommitTransaction() e leto_Rollback()

leto_BeginTransaction() o unlock e a gravação dos registros das tabelas é feito com leto_CommitTransaction()

Usando leto_CommitTransaction() se usar DbUnLock() ou DbRUnlock() o letodb entra em condição de erro, não pode usar essas funções! (está no manual)

Resumindo:

leto_BeginTransaction() ou leto_BeginTransaction(.t.) precisa usar leto_CommitTransaction() para gerar o registro

O legal disso é que não entra registro fantasma e se tem por exemplo 3 tabelas fazendo append blank e se estivrem dentro de begin sequence with __BreakBlock()

No Recover você pode usar leto_Rollback() que desfaz todos os appends blank, com isso as tabelas envolvidas não ficam inconsistentes.
begin sequence with __BreakBlock()
   leto_BeginTransaction()
   tabela1->( DbAppend() )
   tabela2->( DbAppend() )
   tabela3->( DbAppend() )
    leto_CommitTransaction() //gera os registros das tabelas e faz unlock
Recover
   leto_Rollback() // desfaz a transação e faz unclock
End
►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: 3953
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 273 vezes
Mens.Curtidas: 187 vezes

LetoDBf (fork) -> LetoDb com espinafre

Mensagempor porter » 23 Nov 2018 12:55

Olá pessoal,
Porquê em determinados momentos, da esse erro: Error LETO/1000 : Erro de sintaxe

Lá no LETODBF\BIN\letodbf.log
11.23.2018 13:35:28 INFO: disconnect 192.168.0.100:1415 estoque.exe users=(1 : 1 : 1), tables=(0 : 19)

O que pode estar desconectando o LetoDbf ?
Obrigado.
porter
Usuário Nível 4

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

LetoDBf (fork) -> LetoDb com espinafre

Mensagempor asimoes » 23 Nov 2018 14:17

Porter,

Como ta definida a conexão com Leto_Connect() ?, observe que o timeout está com -1, tinha problema de conexão quando informava 30000 (30 seg), com -1
Nunca mais tive problema.

::nTimeOut := -1

Leto_Connect( cServidorDB, , , ::nTimeOut )
►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: 3953
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 273 vezes
Mens.Curtidas: 187 vezes

LetoDBf (fork) -> LetoDb com espinafre

Mensagempor porter » 23 Nov 2018 15:17

Como ta definida a conexão com Leto_Connect() ?, observe que o timeout está com -1, tinha problema de conexão quando informava 30000 (30 seg), com -1 Nunca mais tive problema.


::nTimeOut := -1
Leto_Connect( cServidorDB, , , ::nTimeOut )

Olá asimões, estou fazendo assim:

cPath := "SERVIDOR:2812"
nConect := leto_Connect( cPath)

Se fizer da forma como você sugeriu, precisa alterar também o timeout no arquivo letodb.ini, aqui o Timeout está com 360
Por curiosidade, porquê o exemplo que você passou, está assim ::nTimeOut, o que significa ::

Obrigado.
porter
Usuário Nível 4

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

LetoDBf (fork) -> LetoDb com espinafre

Mensagempor asimoes » 23 Nov 2018 16:23

porter escreveu:Por curiosidade, porquê o exemplo que você passou, está assim ::nTimeOut, o que significa ::

é propriedade da classe, você pode usar:

nConect := leto_Connect( cPath, , , -1)

Obs.: ;TimeOut = 360 está comentado no meu letodb.ini

Meu letodb.ini
;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
Trigger = "Leto_Trigger"
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: 3953
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 273 vezes
Mens.Curtidas: 187 vezes

LetoDBf (fork) -> LetoDb com espinafre

Mensagempor porter » 23 Nov 2018 16:37

Asimões,
O Timeout meu também está comentado, fiz da forma que você disse, e até agora não deu mais erro,
acho que resolveu o problema.

Obrigado por sua atenção.
porter
Usuário Nível 4

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

LetoDBf (fork) -> LetoDb com espinafre

Mensagempor porter » 04 Dez 2018 16:45

Olá pessoal, com essa rotina, estou conectando o LetoDBF, e verifico se a conexão foi bem sucedida,
qual é o comando que verifica se o LetoDBF, ainda está em execução, não é toda hora, mas de tempos em tempos
recebo a mensagem de erro Error LETO/1000 : Erro de sintaxe, então gostaria de testar no sistema se
é o Leto que está desconectando ou é a Rede que cai.

Mesmo desconectando o LetoDbf com net stop letodbf_service, a rotina abaixo, sempre retorna zero(0), na abertura do sistema,
funciona normal, mas se em alguma parte do sistema, eu desconectar o leto, ai a rotina abaixo, não funciona.
cPath := "SERVIDOR:2812"
IF leto_Connect( cPath ) < 0
    MsgExclamation( "Perdeu conexão.................. !")
ENDIF


//Conectar e testar conexão foi bem sucedida...
PROCEDURE ConectaLetoDbf(cPath)
    nTimeOut := -1
    nConect := leto_Connect( cPath, , , nTimeOut )
    // Faz o teste de conexao
    IF nConect == -1
       SetColor( "GR+/B" )
      CLS
       nRes := leto_Connect_Err()
       IF nRes == LETO_ERR_LOGIN
          alert( "Falha ao Logar" )
       ELSEIF nRes == LETO_ERR_RECV
          alert( "Error ao conectar" )
       ELSEIF nRes == LETO_ERR_SEND
          alert( "Erro de envio" )
       ELSE
          MsgExclamation( "Nao conectado ao servidor: " + cPath + " , habilitar porta 2812 no servidor.")
       ENDIF
       Return .F.
     ENDIF
porter
Usuário Nível 4

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

LetoDBf (fork) -> LetoDb com espinafre

Mensagempor Jairo Maia » 04 Dez 2018 21:40

Olá porter,

porter escreveu:não é toda hora, mas de tempos em tempos recebo a mensagem de erro Error LETO/1000 : Erro de sintaxe, então gostaria de testar no sistema se é o Leto que está desconectando ou é a Rede que cai.
Não está relacionado a conexão do Leto. É outro problema. A rotina de erro deve dar o caminho onde ocorreu o erro. Trata-se de "erro de sintaxe", e não de falha de conexão.

Identifique onde está ocorrendo o erro, e se puder, post o trecho do código.
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: 2222
Data de registro: 16 Ago 2010 13:46
Cidade/Estado: Campinas-SP
Curtiu: 254 vezes
Mens.Curtidas: 231 vezes

LetoDBf (fork) -> LetoDb com espinafre

Mensagempor porter » 05 Dez 2018 12:27

Olá Jairo,
A rotina de erro deve dar o caminho onde ocorreu o erro. Trata-se de "erro de sintaxe"


Essa rotina de erro seria o arquivo c:\letodbf\bin\letodbf.log ?
Se for, está retornando a seguinte mensagem:
12.05.2018 09:23:38 INFO: disconnect 192.168.0.120:23354 estoque.exe users=(1 : 1 : 2), tables=(0 : 12)
Nessa mensagem de erro, em tables=(0 : 12), sei que tables se refere ao arquivo e "0 : 12" o que é ?
Estou cadastrando códigos e valores pela estação, esse erro ocorre na estação.

Identifique onde está ocorrendo o erro, e se puder, post o trecho do código.


O erro não acontece toda hora, se conseguisse saber em qual linha do sistema está o erro ficaria mais fácil,
assim eu postaria o código.

Obrigado por sua atenção.
porter
Usuário Nível 4

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

LetoDBf (fork) -> LetoDb com espinafre

Mensagempor Jairo Maia » 05 Dez 2018 12:51

Olá porter,

Desconsidere o que eu disse antes. Segundo o Itamar pode ser sim erro na rede. Veja a parir desse tópico: http://www.pctoledo.com.br/forum/viewtopic.php?p=122799#p122799
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: 2222
Data de registro: 16 Ago 2010 13:46
Cidade/Estado: Campinas-SP
Curtiu: 254 vezes
Mens.Curtidas: 231 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


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