Página 1 de 2
É preciso dar um DBUNLOCK após um DBAPPEND() ??
Enviado: 17 Ago 2007 10:32
por janio
Olá a todos,
É
preciso dar um DBUNLOCK() após um DBAPPEND()
Jânio
Enviado: 17 Ago 2007 10:37
por Maligno
O bloqueio se mantém. Portanto, desbloqueie o registro caso não precise mais dele. Até porque, alguém poderá precisar alterá-lo em seguida, num ambiente de rede.
Re: É preciso dar um DBUNLOCK após um DBAPPEND() ??
Enviado: 17 Ago 2007 10:40
por sygecom
janio escreveu:Olá a todos,
É
preciso dar um DBUNLOCK() após um DBAPPEND()
Jânio
Tche, o DBAPPEND() cria um registro novo e Bloqueia o mesmo, eu uso DBUNLOCK() sempre depois de gravar um novo registro....até hj funcionou legal, em mono e multiusuario...
Enviado: 17 Ago 2007 10:43
por janio
Só um DBUNLOCK é necessário para que os outros da rede vejam o registro adicionado??? Ou é necessário um DBCOMMIT() tbém??
Jânio
Enviado: 17 Ago 2007 10:45
por Maligno
dbCommit() é necessário para que os buffers internos sejam descarregados para o arquivo.
Enviado: 17 Ago 2007 10:45
por sygecom
DBAPPEND()
repl campo with variavel
DBCOMMIT()
DBUNLOCK()
Enviado: 17 Ago 2007 10:48
por Maligno
Acho que o problema não está em saber usar as funções em si. Mas a necessidade ou não da dbCommit, o que eu já expliquei.
Enviado: 17 Ago 2007 10:49
por sygecom
Foi, duas resposta juntas, se eu tivese visto antes não teria postado...de uma olhada no horario dos post !!!
Enviado: 17 Ago 2007 10:51
por Maligno
Ou é necessário um DBCOMMIT() tbém??
Não esquecendo, claro, de um aspecto muito importante. Caso não tenha visto a discussão que houve há algum tempo sobre o assunto: não use dbCommit() em excesso. Isso causa uma lentidão no sistema. Se for incluir/alterar vários registros em lote (numa malha WHILE ou FOR/NEXT, por exemplo), use dbCommit() apenas após a gravação do último registro.
Enviado: 17 Ago 2007 11:04
por juniorcamilo
c nao ultilizar o dbcommit, tem algum problema e qual o problema??
Enviado: 17 Ago 2007 11:05
por janio
Ok amigos,
Estou com alguns problemas numa rede e acho que era esse o detalhe que ainda não tinha me dado conta.
Valeu a todos,
Jânio
Enviado: 17 Ago 2007 11:06
por Maligno
juniorcamilo escreveu:c nao ultilizar o dbcommit, tem algum problema e qual o problema??
Sem a execução de dbCommit() as alterações não serão imediatamente vistas pelos demais usuários da rede.
Enviado: 17 Ago 2007 11:21
por Ademir
Uma duvida...
abrindo o arquivo EXCL NEW depois do dbappend() eu preciso dar dbunlock() tambem ?
Enviado: 17 Ago 2007 11:40
por Maligno
Nem adianta tentar isso porque o arquivo já foi aberto para uso exclusivo. A execução de dbUnLock() ficaria sem efeito. Neste caso, para desbloquear, só fechando e abrindo de novo, em modo SHARED.
Enviado: 14 Set 2007 09:41
por janio
Maligno escreveu:Não esquecendo, claro, de um aspecto muito importante. Caso não tenha visto a discussão que houve há algum tempo sobre o assunto: não use dbCommit() em excesso. Isso causa uma lentidão no sistema. Se for incluir/alterar vários registros em lote (numa malha WHILE ou FOR/NEXT, por exemplo), use dbCommit() apenas após a gravação do último registro.
Olá a todos,
Voltando ao tópico... considerando que é recomedável usar o DbCommit() somente após a malha While... For... pergunto: Causaria algum
dano grave em um ambiente de rede
DESBLOQUEAR o registro antes do DbCommit(), como faço no código abaixo??
Código: Selecionar todos
SELECT DESDO
DBSETORDER(1)
GOTO TOP
DBSEEK(vPEDIDO)
DO WHILE CODPED = vPEDIDO
TRAVA()
DBDELETE()
DBUNLOCK()
DBSKIP()
ENDDO
DbCommitAll()
Jânio