Histórico da Página
Composition Setup |
---|
import.css=/download/attachments/3279126062824/newLayouttecnologia.css |
Pagetitle | |||
---|---|---|---|
|
...
|
Bloqueia
...
o
...
registro
...
atual
...
ou
...
o
...
especificado.
Sintaxe
Bloco de código | ||
---|---|---|
| ||
DBRLock( [ |
...
nRec ] ) |
...
|
Parâmetros
...
Nome | Tipo | Descrição | Obrigatório | Referência |
---|
...
nRec |
...
numérico | Indica o número do registro que será bloqueado. |
|
|
Retorno
Nome |
---|
...
Tipo |
---|
...
Descrição |
---|
lRet |
...
lógico | Retorna verdadeiro (.T.), se o registro for bloqueado com sucesso; caso contrário, falso (.F.) |
...
. |
Observações
- Esta função é utilizada quando se tem uma tabela aberta,
...
- compartilhada e se deseja bloquear um registro para que outros usuários não possam alterá-lo
...
- .
- Caso não haja tabela aberta, o programa será encerrado com ocorrência de erro recuperável "Work area not in use".
- Caso o número de bloqueios exceda o limite indicado pela chave MaxLocks (valor padrão: 10000), o programa será encerrado com ocorrência de erro fatal "Number of locks exceeded - Total: TTT File: NNN", onde TTT é o número de bloqueios efetuados e NNN o número de registros bloqueados.
- Se a tabela
...
- está aberta em modo exclusivo, a função não altera
...
- o bloqueio do registro e retorna .T..
- O usuário pode escolher o registro que será bloqueado, através do parâmetro
...
- nRec, mas se este não for especificado,
...
- o registro corrente será bloqueado, como na função RLock
...
- .
- Esta função funciona de forma oposta a DBRUnlock
...
- , que libera os registros bloqueados.
- O principal motivo de retorno .F. é quando o registro já foi bloqueado por outro usuário.
- Se um registro já estiver bloqueado e a conexão que fez o bloqueio tentar bloquear novamente esse mesmo registro, a função retornará .T..
- Caso um programa faça mais de uma conexão com o SGBD, a primeira conexão bloquear um registro, e a segunda conexão tentar atualizar esse registro, o programa será encerrado com ocorrência de erro recuperável "Update error - lock required". Contudo, se a segunda conexão fizer o bloqueio antes de atualizar, o bloqueio será efetuado e o registro poderá ser modificado.
- A função DBCloseArea remove todos os bloqueios realizados.
Exemplos
O exemplo abaixo utiliza a RDD "TOPCONN", mas a função pode ser utilizada com qualquer uma das RDDs válidas.
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 exclusivo DBUseArea( .T., cRDD, cTable, (cTable), .F., .F. ) DBGoTop() lRet := DBRLock() // Tenta bloquear o registro de número 1 conout( lRet ) // Exibe: .T. DBCloseArea() // Abre a tabela em modo compartilhado DBUseArea( .T., |
...
cRDD, |
...
cTable, (cTable), .T., .F. ) |
...
DBGoTo( 100 |
...
) lRet := DBRLock() // Bloqueia o registro |
...
de número 100 conout( lRet ) // Exibe: .T. lRet := DBRLock( 110 ) // Bloqueia o registro de número 110 conout( lRet ) // |
...
Exibe: .T.
// 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 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. )
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
DBRUnlock( 100 )
// Fecha a tabela
DBCloseArea()
// Desconecta do SGBD
TCUnlink( nHandle )
return
|
Veja também
Advanced Protheus 6.09 , Advanced Protheus 7.10 , Microsiga Protheus 8.11 , Protheus 10 , TOTVS Application Server 10 , ByYou Application Server
...
Visão Geral
Import HTML Content
Conteúdo das Ferramentas
Tarefas