É preciso dar um DBUNLOCK após um DBAPPEND() ??

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Avatar do usuário
janio
Colaborador
Colaborador
Mensagens: 1846
Registrado em: 06 Jul 2004 07:43
Localização: UBAJARA - CE

É preciso dar um DBUNLOCK após um DBAPPEND() ??

Mensagem por janio »

Olá a todos,

É preciso dar um DBUNLOCK() após um DBAPPEND() ???


Jânio
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem 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.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Re: É preciso dar um DBUNLOCK após um DBAPPEND() ??

Mensagem 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...
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
janio
Colaborador
Colaborador
Mensagens: 1846
Registrado em: 06 Jul 2004 07:43
Localização: UBAJARA - CE

Mensagem 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
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

dbCommit() é necessário para que os buffers internos sejam descarregados para o arquivo.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Mensagem por sygecom »

DBAPPEND()
repl campo with variavel
DBCOMMIT()
DBUNLOCK()
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem 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.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Mensagem por sygecom »

Foi, duas resposta juntas, se eu tivese visto antes não teria postado...de uma olhada no horario dos post !!!
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem 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.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
juniorcamilo
Usuário Nível 3
Usuário Nível 3
Mensagens: 343
Registrado em: 10 Nov 2006 09:12
Localização: Pará

Mensagem por juniorcamilo »

c nao ultilizar o dbcommit, tem algum problema e qual o problema??
Avatar do usuário
janio
Colaborador
Colaborador
Mensagens: 1846
Registrado em: 06 Jul 2004 07:43
Localização: UBAJARA - CE

Mensagem 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
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem 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.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Ademir
Usuário Nível 3
Usuário Nível 3
Mensagens: 170
Registrado em: 31 Jul 2007 16:28
Localização: Porto Ferreira-SP

Mensagem por Ademir »

Uma duvida...


abrindo o arquivo EXCL NEW depois do dbappend() eu preciso dar dbunlock() tambem ?
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem 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.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
janio
Colaborador
Colaborador
Mensagens: 1846
Registrado em: 06 Jul 2004 07:43
Localização: UBAJARA - CE

Mensagem 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
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Responder