Clipper On Line • Ver Tópico - Erro ao gravar registro novo - dbappend()

Erro ao gravar registro novo - dbappend()

Discussão sobre a linguagem CA-Clipper.

Moderador: Moderadores

 

Erro ao gravar registro novo - dbappend()

Mensagempor JoséQuintas » 29 Abr 2021 11:49

Quanto ao erro citado do Windows 95:

Aconteceu com WIndows 95 e Windows 98, problemas com drivers de rede realtek que vinham com eles.
Não sei dizer se eram as versões normais, ou as OSR2, que seguiram as duas.
Só sei que o problema veio nas duas versões, veio, foi embora, e retornou na outra.
Se não me engano, depois também retornou no Windows 2000.
O driver retornava tamanho inválido, o que fazia com que o sistema tentasse acessar um tamanho maior do que o verdadeiro.
Também acontecia com rede novell 3.11, quando ficava vários dias no ar.
O DBF acusava um registro a mais, o que causava erro em append.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18129
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Erro ao gravar registro novo - dbappend()

Mensagempor JSystem » 29 Abr 2021 14:48

Itamar M. Lins Jr. escreveu:Olá!
Isso não irá resolver em definitivo.
Se antes funcionava ?


Quando os terminais eram XP funcionavam perfeitamente!
JSystem
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 143
Data de registro: 21 Jan 2010 20:10
Cidade/Estado: Uberaba
Curtiu: 3 vezes
Mens.Curtidas: 1 vez

Erro ao gravar registro novo - dbappend()

Mensagempor JSystem » 29 Abr 2021 14:56

JoséQuintas escreveu:Acho melhor não complicar.
Quando chama alias->( fAppend() ), a função já vai ser executada no alias indicado, não precisa complicar a função, além do mais, elimina parâmetro a mais, e evita esquecer dele.


Não José, estou dizendo é ALIAS->(dbappend()) mesmo, sem usar sua função no momento, entendeu ?
JSystem
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 143
Data de registro: 21 Jan 2010 20:10
Cidade/Estado: Uberaba
Curtiu: 3 vezes
Mens.Curtidas: 1 vez

Erro ao gravar registro novo - dbappend()

Mensagempor JSystem » 29 Abr 2021 15:03

JoséQuintas escreveu:Quanto ao Skip 0, testado também numa época usando Clipper+Sixcdx e VB6 com ADS Local, e não se trata nem de ficar visível na rede, mas também na mesma máquina em uso simultâneo.

NÃO SEI dizer sobre COMMIT, nunca usei, nunca precisei, e nunca testei.


Então José, a vida inteira uso dbcommit(), como já disse, enquanto era XP com o WINDOWS SERVER 2012(que ainda utilizo) nunca tive problemas, com os terminais windows 7 que estou tendo problemas.
JSystem
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 143
Data de registro: 21 Jan 2010 20:10
Cidade/Estado: Uberaba
Curtiu: 3 vezes
Mens.Curtidas: 1 vez

Erro ao gravar registro novo - dbappend()

Mensagempor JSystem » 29 Abr 2021 15:08

JoséQuintas escreveu:O DBF acusava um registro a mais, o que causava erro em append.


Então, no meu caso ele não grava nada, se gerasse pelo menos registro em branco, o caso seria outro, não deixa nem rastro.
JSystem
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 143
Data de registro: 21 Jan 2010 20:10
Cidade/Estado: Uberaba
Curtiu: 3 vezes
Mens.Curtidas: 1 vez

Erro ao gravar registro novo - dbappend()

Mensagempor JSystem » 29 Abr 2021 15:28

Itamar M. Lins Jr. escreveu:Só vai resolver usando Terminal Service, LetoDbf. Nem usando Harbour com rede mapeada resolve, vira e mexe dá um problema de corromper indices, precisando no mínimo de reindexar.


Então Itamar, preciso tomar uma atitude, os problemas estão ocorrendo com frequência, com isso os usuários(vendedores) estão perdendo a credibilidade no sistema.

LetoDBF, nunca estudei nada a respeito.

Se puder me contatar, por email ou zap, segue meus dados:
josadac@terra.com.br
34 9 9978 1974
JSystem
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 143
Data de registro: 21 Jan 2010 20:10
Cidade/Estado: Uberaba
Curtiu: 3 vezes
Mens.Curtidas: 1 vez

Erro ao gravar registro novo - dbappend()

Mensagempor JSystem » 29 Abr 2021 15:37

Itamar M. Lins Jr. escreveu:https://comp.lang.clipper.visual-objects.narkive.com/h94B7M0U/windows-7-corruption-network
Leia aqui tem alguma coisa explicando. O Harbour tem umas funções para desligar, mas não está atualizado para as novas versões do SMB. Talvez funcione, mas não evita os antivirus de atrapalhar. O Norton antivirus mesmo, pode sobrepor um arquivo DBF/CDX/NTX, achando que foi infectado.


Itamar, vi conversas nesse link, algo sobre os terminais logarem com usuários diferentes, no final, falaram tbem em desativar SMB2, já tentou uma dessas experiencias ?
JSystem
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 143
Data de registro: 21 Jan 2010 20:10
Cidade/Estado: Uberaba
Curtiu: 3 vezes
Mens.Curtidas: 1 vez

Erro ao gravar registro novo - dbappend()

Mensagempor JoséQuintas » 29 Abr 2021 15:38

JSystem escreveu:Não José, estou dizendo é ALIAS->(dbappend()) mesmo, sem usar sua função no momento, entendeu ?


Vai continuar sem teste se append funcionou.
Tem que ser pelo menos isto:

lOk := .F.
nCont := 0
DO WHILE nCont >= 20
   IF dbAppend()
      lOk := .T.
      EXIT
   ENDIF
   OL_Yield() // OSLIB
   nCont += 1
   Inkey(0.1)
ENDDO
RETURN lOk


Use pelo menos o OL_AutoYield(.T.) no início do aplicativo, e a OSLIB.

No fonte:
IF ! alias->( FuncaoAppend() )
   .....
ENDIF


No Harbour não precisa OSLIB, mas ele tem funções tapa-buraco de compatibilidade, senão basta criar.

Porque OSLIB?
Precisa liberar tempo para o Windows, principalmente pra ele conversar com o servidor.
O DOS é mais lerdo, talvez por isso não teve problemas com Clipper.
Ao mesmo tempo, detecção de teclado e mouse no Clipper causa 100% de uso de CPU, mesmo parado, por isso a OSLIB.

Nunca tive problema de rede com Clipper.
Com Harbour precisei fazer alguns ajustes, mas tudo bem.

Coloque o teste de append, ou nunca vai resolver seu problema.
Se falha, precisa tentar de novo, não apenas abandonar.

Sempre procurei usar o default do Windows.

Quando mencionam problemas aqui no fórum, nem sei do que estão falando, porque nunca tive nenhum, salvo exceções, como por exemplo testar se arquivo existe em determinadas versões do Windows.
Reindexava o aplicativo quando queria, as vezes demorava um ano ou mais.
Sempre default do Windows.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18129
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Erro ao gravar registro novo - dbappend()

Mensagempor Softwhouse » 29 Abr 2021 15:44

Se for em Harbour, esse código não vai funcionar:

(ALIAS)->(dbappend())
if (ALIAS)->(dbrlock())
replace ...
(ALIAS)->(dbcommit(),dbunlock())
else
Alert()
Endif


Troque:
(ALIAS)->(DbAppend())

Por:

ALIAS->(DbAppend())
Fernando
Softwhouse
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 300
Data de registro: 07 Dez 2011 17:44
Cidade/Estado: Porto Alegre/RS
Curtiu: 0 vez
Mens.Curtidas: 12 vezes

Erro ao gravar registro novo - dbappend()

Mensagempor JoséQuintas » 29 Abr 2021 15:45

Meu recorde com DBF foram mais de 100 terminais simultâneos.
TODOS acessando o DBF de pedidos ao mesmo tempo.
Não sei o que é índice corrompido, a não ser aqueles problemas de Windows 95/98/2000 que citei.
Não sei o que é falhar append, a não ser aquele problema da rede novell 3.11, talvez há 30 anos atrás.

Essas funções que postei vém desde os tempos do Clipper.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18129
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Erro ao gravar registro novo - dbappend()

Mensagempor JSystem » 29 Abr 2021 15:47

JoséQuintas escreveu:Use pelo menos o OL_AutoYield(.T.) no início do aplicativo, e a OSLIB.


Já utilizo faz tempo.
Beleza, entendi, vou seguir sua orientação e passar a testar o dbappend().
JSystem
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 143
Data de registro: 21 Jan 2010 20:10
Cidade/Estado: Uberaba
Curtiu: 3 vezes
Mens.Curtidas: 1 vez

Erro ao gravar registro novo - dbappend()

Mensagempor JoséQuintas » 29 Abr 2021 15:49

rede.png


Meu backup mais antigo, de 2008.
Está aí a função da época.

Na época gravava o nome do usuário, pra mostrar aonde estava bloqueado.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18129
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Erro ao gravar registro novo - dbappend()

Mensagempor JSystem » 29 Abr 2021 15:50

JoséQuintas escreveu:Meu recorde com DBF foram mais de 100 terminais simultâneos.
TODOS acessando o DBF de pedidos ao mesmo tempo.
Não sei o que é índice corrompido, a não ser aqueles problemas de Windows 95/98/2000 que citei.
Não sei o que é falhar append, a não ser aquele problema da rede novell 3.11, talvez há 30 anos atrás.

Essas funções que postei vém desde os tempos do Clipper.


Tinha problema com indices corrompidos quando utilizava NTX e linkeditava com RTLINK, há uns 10 anos atrás, depois que passei trabalhar com CDX e BLINKER, não tive mais problema, estou tendo esse agora, com terminais WINDOWS 7.
JSystem
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 143
Data de registro: 21 Jan 2010 20:10
Cidade/Estado: Uberaba
Curtiu: 3 vezes
Mens.Curtidas: 1 vez

Erro ao gravar registro novo - dbappend()

Mensagempor JSystem » 29 Abr 2021 15:56

JoséQuintas escreveu:
rede.png


Meu backup mais antigo, de 2008.
Está aí a função da época.

Na época gravava o nome do usuário, pra mostrar aonde estava bloqueado.


Valeu José!
Vou aplicar aqui.
Muito obrigado pela sua atenção!
JSystem
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 143
Data de registro: 21 Jan 2010 20:10
Cidade/Estado: Uberaba
Curtiu: 3 vezes
Mens.Curtidas: 1 vez

Erro ao gravar registro novo - dbappend()

Mensagempor JoséQuintas » 29 Abr 2021 15:58

Não faz tanto tempo assim que deixei de usar DBF.
Aliás, ainda tenho alguns.
Como nunca tive problemas, sem pressa de terminar os que restaram.

Aliás ....
Na imobiliária ainda tem muitos DBFs.
Talvez 30 ou mais usuários.

Como eu disse na minha migração pra MySQL, não tinha problema nenhum.

O que usam lá?
Desde o começo era muito Windows XP e Windows 7, e Windows Server.
E era limitado a 32 bits.
Depois de migrar pra Harbour, começaram a entrar Windows 7 64 bits, e Windows 10.
Continua tudo funcionando, nunca mexi na configuração de nenhuma máquina, nem das máquinas novas, que com certeza várias já foram trocadas.

Índice corrompido... nunca.
Lentidão por excluir muita coisa... isso acontecia, e só por esse motivo era feita a reindexação depois de meses.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18129
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Anterior Próximo



Retornar para CA-Clipper

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 4 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