Erro ao gravar registro novo - dbappend()

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Erro ao gravar registro novo - dbappend()

Mensagem por JoséQuintas »

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 mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
JSystem
Usuário Nível 3
Usuário Nível 3
Mensagens: 143
Registrado em: 21 Jan 2010 21:10
Localização: Uberaba

Erro ao gravar registro novo - dbappend()

Mensagem por JSystem »

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
Registrado em: 21 Jan 2010 21:10
Localização: Uberaba

Erro ao gravar registro novo - dbappend()

Mensagem por JSystem »

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
Registrado em: 21 Jan 2010 21:10
Localização: Uberaba

Erro ao gravar registro novo - dbappend()

Mensagem por JSystem »

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
Registrado em: 21 Jan 2010 21:10
Localização: Uberaba

Erro ao gravar registro novo - dbappend()

Mensagem por JSystem »

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
Registrado em: 21 Jan 2010 21:10
Localização: Uberaba

Erro ao gravar registro novo - dbappend()

Mensagem por JSystem »

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
Registrado em: 21 Jan 2010 21:10
Localização: Uberaba

Erro ao gravar registro novo - dbappend()

Mensagem por JSystem »

Itamar M. Lins Jr. escreveu:https://comp.lang.clipper.visual-object ... on-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 ?
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Erro ao gravar registro novo - dbappend()

Mensagem por JoséQuintas »

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:

Código: Selecionar todos

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:

Código: Selecionar todos

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 mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Softwhouse
Usuário Nível 3
Usuário Nível 3
Mensagens: 324
Registrado em: 07 Dez 2011 18:44
Localização: Porto Alegre/RS

Erro ao gravar registro novo - dbappend()

Mensagem por Softwhouse »

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
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Erro ao gravar registro novo - dbappend()

Mensagem por JoséQuintas »

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 mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
JSystem
Usuário Nível 3
Usuário Nível 3
Mensagens: 143
Registrado em: 21 Jan 2010 21:10
Localização: Uberaba

Erro ao gravar registro novo - dbappend()

Mensagem por JSystem »

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().
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Erro ao gravar registro novo - dbappend()

Mensagem por JoséQuintas »

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 mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
JSystem
Usuário Nível 3
Usuário Nível 3
Mensagens: 143
Registrado em: 21 Jan 2010 21:10
Localização: Uberaba

Erro ao gravar registro novo - dbappend()

Mensagem por JSystem »

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
Registrado em: 21 Jan 2010 21:10
Localização: Uberaba

Erro ao gravar registro novo - dbappend()

Mensagem por JSystem »

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!
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Erro ao gravar registro novo - dbappend()

Mensagem por JoséQuintas »

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 mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Responder