Histórico da Página
Composition Setup |
---|
import.css=/download/attachments/3279126062824/newLayouttecnologia.css |
|
Pagetitle | ||||
---|---|---|---|---|
|
...
...
Função: DBRUnlock
Libera
...
determinado
...
registro
...
bloqueado.
Sintaxe
Bloco de código | ||
---|---|---|
| ||
DBRUnlock( [nRegistro nRec ] )--> Nil
|
Parâmetros
...
Nome | Tipo | Descrição | Obrigatório | Referência |
---|
...
nRec |
...
numérico | Indica o número do registro que será desbloqueado. |
|
|
...
Observações
- Pode-se
...
- escolher um registro a ser desbloqueado, através do parâmetro
...
- nRec. Porém, se este parâmetro não for especificado,
...
- serão soltos todos os bloqueios de registro do alias atual, da mesma forma que a função DBUnlock
...
- .
...
- Em ambos os casos, somente serão soltos os bloqueios de registro obtidos nos processos/conexões atuais. Caso a função seja chamada solicitando o desbloqueio de um registro especifico que encontra-se bloqueado por outro proceso, a chamada de desbloqueio será ignorada.
- Não é possível chamar a função
...
- DBRUnlock para um alias
...
- caso o driver de abertura deste alias esteja com uma transação ativa. Caso o programa AdvPL erroneamente chame as funções
...
- DBRUnlock e/ou
...
- DBUnlock dentro de um bloco transacionado, o programa será interrompido com a ocorrência de erro fatal
...
- AdvPL "DBRUnlock cannot be called in a transaction".
- Caso não haja tabela aberta, o programa será encerrado com ocorrência de erro recuperável "Work area not in use".
- Se a tabela está aberta em modo exclusivo, a função não realiza desbloqueio de registros.
- 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 "Commit error: (DBRUnlock)".
- Se houver algum problema no desbloqueio do registro, será apresentada no log de console do AppServer a mensagem "Warning - DBRUnlock - Unlock error".
- Caso um programa faça mais de uma conexão com o mesmo SGBD, uma conexão consegue liberar o bloqueio de um registro que foi bloqueado 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.
O exemplo abaixo mostra o desbloqueio de todos os registros bloqueados.
Bloco de código | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
user function test1()
Local nHandle := TCLink( "MSSQL/DSN1", "127.0.0.1", 7890 )
Local cTable := "MYTABLE"
Local cRDD := "TOPCONN"
Local lRet := .F.
// Abre a tabela em modo compartilhado
".//Este exemplo, apresenta duas maneiras de utilizar a função DBRUnlock(). DBUseArea( .T., "dbfcdxads"cRDD,"\dadosadv609\sa1990.dbf","SSS", cTable, (cTable), .T., .F. ) DBGoTo( 100)DBRUnlock ) lRet := DBRLock() //Desbloqueia Bloqueia o registro de número 100atual conout(100)DBRUnlock(110) lRet ) // Exibe: .T. lRet := DBRLock( 110 ) //Desbloqueia Bloqueia o registro de número 110 conout( lRet ) // Exibe: .T. DBRUnlock() // Desbloqueia todos os registros bloqueados // Advanced Protheus 6.09 , Advanced Protheus 7.10 , Microsiga Protheus 8.11 , Protheus 10 , TOTVS Application Server 10 , ByYou Application Server Fecha a tabela
DBCloseArea()
// Desconecta do SGBD
TCUnlink( nHandle )
return
|
O exemplo abaixo espera ser possível fazer o bloqueio de um registro, altera e depois o desbloqueia.
Bloco de código | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
user function test2()
Local nHandle := TCLink( "MSSQL/DSN1", "127.0.0.1", 7890 )
Local cTable := "MYTABLE"
Local cRDD := "TOPCONN"
Local lRet := .F.
// Abre a tabela em modo compartilhado
DBUseArea( .T., cRDD, cTable, (cTable), .T., .F. )
// Vai para o registro 100
DBGoTo( 100 )
// Espera o bloqueio ser possível
while !DBRLock()
sleep( 1000 )
enddo
// Altera o conteúdo do registro
(cTable)->MYFIELD := "ABCDE"
// Desbloqueia o registro 100
DBRUnlock( 100 )
// Fecha a tabela
DBCloseArea()
// Desconecta do SGBD
TCUnlink( nHandle )
return
|
Veja também
Visão Geral
Import HTML Content
Conteúdo das Ferramentas
Tarefas