import.css=/download/attachments/6062824/tecnologia.css |
Bloqueia uma tabela ou arquivo.
FLock() |
Nome | Tipo | Descrição |
---|---|---|
lRet | lógico | Retorna verdadeiro (.T.), se a tabela for bloqueada com sucesso; caso contrário, falso (.F.). |
O exemplo abaixo utiliza a RDD "TOPCONN", mas a função pode ser utilizada com qualquer uma das RDDs válidas.
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 := FLock() // Tenta bloquear a tabela indica em cTable conout( lRet ) // Exibe: .T. varinfo( "list1", DBRLockList() ) // Exibe: { 0 } DBCloseArea() // Abre a tabela em modo compartilhado DBUseArea( .T., cRDD, cTable, (cTable), .T., .F. ) lRet := DBRLock( 100 ) // 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. varinfo( "list2", DBRLockList() ) // Exibe: { 100, 110 } lRet := FLock() // Bloqueia a tabela indica em cTable conout( lRet ) // Exibe: .T. varinfo( "list3", DBRLockList() ) // Exibe: { 0 } // Fecha a tabela DBCloseArea() // Desconecta do SGBD TCUnlink( nHandle ) return |
O exemplo abaixo espera ser possível fazer o bloqueio de uma tabela, altera vários registros e depois desbloqueia.
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. ) // Espera o bloqueio da tabela ser possível while !FLock() sleep( 1000 ) enddo // Altera o conteúdo do registro 100 DBGoTo( 100 ) (cTable)->MYFIELD := "ABCDE" // Altera o conteúdo do registro 110 DBGoTo( 110 ) (cTable)->MYFIELD := "FGHIJ" // Desbloqueia a tabela DBUnlock() // Fecha a área de trabalho DBCloseArea() // Desconecta do SGBD TCUnlink( nHandle ) return |