Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
portuguese
Composition Setup
import.css=/download/attachments/3279126062824/newLayouttecnologia.css

Pagetitle
DBUnlockAll

...

...

...

DBUnlockAll

Retira

...

o

...

bloqueio

...

de

...

todos

...

os

...

registro

...

e

...

arquivos

...

de

...

todas

...

as

...

tabelas

...

abertas em uma área de trabalho.

Sintaxe

Bloco de código
collapsefalse
DBUnlockAll()

DBUnlockAll ( ) --> Nil

Nil (Nulo)

Observações

  • Essa função é utilizada para liberar todos os registros bloqueados e é equivalente a executar a função DBUnlock

...

  • para todas as tabelas da área de trabalho.
  • Se não for possível fazer a atualização do registro que está sendo desbloqueado, o programa será encerrado com ocorrência de erro recuperável "Update error: (DBUnlockAll)".
  • Não é possível chamar a função DBUnlockAll para um alias caso o driver de abertura deste alias esteja com uma transação ativa. Caso o programa AdvPL erroneamente chame a função DBUnlockAll dentro de um bloco transacionado, o programa será interrompido com a ocorrência de erro recuperável "DBUnlockAll cannot be called in a transaction".
  • Se houver algum problema no desbloqueio dos registros da tabela, será apresentada no log de console do AppServer a mensagem "Warning - DBUnlockAll - Unlock error".
  • Se a tabela está aberta em modo exclusivo, a função não realizará desbloqueios na tabela.
  • Caso um programa faça mais de uma conexão com o mesmo SGBD, uma conexão consegue liberar todos os bloqueios da área de trabalho que teve bloqueios feitos por outra conexão. Isso só é possível para conexões realizadas pela mesma thread.
  • A função DBCloseArea remove todos os bloqueios realizados.

Exemplos

Os exemplos abaixo utilizam a RDD "TOPCONN", mas a função pode ser utilizada com qualquer uma das RDDs válidas.

Bloco de código
languagecpp
themeEclipse
linenumberstrue
collapsefalse
user function test1()
  Local nHandle := TCLink( "MSSQL/DSN1", "127.0.0.1", 7890 )
  Local cTable1 := "MYTABLE1"
  Local cTable2 := "MYTABLE2"
  Local cRDD := "TOPCONN"
  Local lRet := .F.
  
  // Abre a tabela 1 em modo compartilhado, criando uma nova área de trabalho
  
//Este exemplo, apresenta como liberar todos os registros bloqueados da tabela corrente.
DBUseArea( .T.
,"dbfcdxads", "\dadosadv\sa1990.dbf","SSS",
, cRDD, cTable1, (cTable1), .T., .F. )
  
  lRet := DBRLock( 100 ) // Bloqueia o registro de número 100
  conout( lRet )         // Exibe: .T.
  
  // Abre a tabela 2 em modo compartilhado na área de trabalho atual
  DBUseArea( .F., cRDD, cTable2, (cTable2), .T., .F. )
    
  lRet := DBRLock( 110 ) // Bloqueia o registro de número 110
  conout( lRet )         // Exibe: .T.
.DBUnlockAll() Advanced Protheus 6.09 , Advanced Protheus 7.10 , Microsiga Protheus 8.11 , Protheus 10 , TOTVS Application Server 10 , ByYou Application Server

  
  // Desbloqueia todos os registros bloqueados na área de trabalho
  DBUnlockAll()
  
  // Reabre a tabela 1 em modo compartilhado
  DBUseArea( .F., cRDD, cTable1, (cTable1), .T., .F. )
  
  // Lista os bloqueios na tabela 1
  varinfo( "list1", DBRLockList() ) // Vai exibir: {}
  
  // Reabre a tabela 2 em modo compartilhado
  DBUseArea( .F., cRDD, cTable2, (cTable2), .T., .F. )
  
  // Lista os bloqueios na tabela 2
  varinfo( "list2", DBRLockList() ) // Vai exibir: {}
  
  // Fecha a área de trabalho
  DBCloseArea()
  
  // Desconecta do SGBD
  TCUnlink( nHandle )
return

Veja também