Este es el sitio web histórico de la documentación de 4D. La documentación se está trasladando progresivamente a developer.4d.com |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v19.8
entity.lock( )
|
entity.lock ( {modo} ) -> Resultado | ||||||||
Parámetro | Tipo | Descripción | ||||||
modo | Entero largo |
![]() |
dk reload if stamp changed: recarga antes de bloquear si stamp cambió | |||||
Resultado | Objeto |
![]() |
Resultado de la operación de bloqueo | |||||
El método entity.lock( )pone un bloqueo pesimista(*) en el registro al que hace referencia la entidad. El bloqueo se establece para un registro y para todas las referencias de la entidad en el proceso actual.
(*)Para más información, consulte la página Bloquear entidades.
Otros procesos verán este registro como bloqueado (la propiedad result.success contendrá false si tratan de bloquear la misma entidad usando este método. Solo los métodos ejecutados en la sesión de "bloqueo" pueden editar y guardar los atributos de la entidad. La entidad puede ser cargada por otras sesiones, pero no podrán ingresar ni guardar valores
El registro bloqueado está desbloqueado:
De forma predeterminada, si se omite el parámetro modo, el método devolverá un error (ver a continuación) si la misma entidad fue modificada (es decir, el sello ha cambiado) por otro proceso o usuario mientras tanto.
De lo contrario, puede pasar la opción dk reload if stamp changed en el parámetro modo: en este caso, no se devuelve ningún error y la entidad se recarga cuando el stamp ha cambiado (si la entidad todavía existe y la llave primaria sigue siendo la misma).
Resultado
El objeto devuelto por entity.lock( ) contiene las siguientes propiedades:
Propiedad | Tipo | Descripción | |
success | booleano | true si la acción de bloquear es exitosa (o si la entidad ya está bloqueada en el proceso actual), de lo contrario false. | |
Disponible solo si se utiliza la opción dk reload if stamp changed: | |||
wasReloaded | booleano | true si la entidad fue recargada con éxito, de lo contrario false. | |
Disponible solo en caso de error: | |||
status(*) | número | Código de error, ver a continuación | |
statusText(*) | texto | Descripción del error, ver a continuación | |
Disponible solo en caso de error de bloqueo pesimista: | |||
lockKindText | texto | "Bloqueado por registro" | |
lockInfo | objeto | Información sobre el origen del bloqueo | |
task_id | número | ID del proceso | |
user_name | texto | Nombre de usuario de sesión en la máquina | |
user4d_id | texto | Nombre de usuario en el directorio de la base de datos 4D | |
host_name | texto | Nombre del equipo | |
task_name | texto | Nombre del proceso | |
client_version | texto | ||
Disponible solo en caso de error grave (llave primaria ya existe, disco lleno...): | |||
errors | colección de objetos | ||
message | texto | Mensaje de error | |
component signature | texto | Firma del componente interno (por ejemplo, "dmbg" representa el componente de la base) | |
errCode | número | Código de error |
(*) Los siguientes valores pueden devolverse en las propiedades status y statusText del objeto Resultado en caso de error:
Constante | Valor | Comentario |
dk status entity does not exist anymore | 5 | La entidad ya no existe en los datos. Este error puede ocurrir en los siguientes casos:
statusText asociado: "La entidad ya no existe" |
dk status locked | 3 | La entidad está bloqueada por un bloqueo pesimista. statusText asociado: "Ya bloqueado" ("Already locked") |
dk status serious error | 4 | Un error grave es un error de bajo nivel de la base de datos (por ejemplo, llave duplicada), un error de hardware, etc. statusText asociado: "Otro error" ("Other error") |
dk status stamp has changed | 2 | El valor de stamp interno de la entidad no coincide con el de la entidad almacenada en los datos (bloqueo optimista).
|
Ejemplo con error:
C_OBJECT($employee;$status)
$employee:=ds.Employee.get(716)
$status:=$employee.lock()
Case of
:($status.success)
ALERT("You have locked "+$employee.firstName+" "+$employee.lastName)
:($status.status=dk status stamp has changed)
ALERT($status.statusText)
End case
Ejemplo con la opción dk reload if stamp changed:
C_OBJECT($employee;$status)
$employee:=ds.Employee.get(717)
$status:=$employee.lock(dk reload if stamp changed)
Case of
:($status.success)
ALERT("You have locked "+$employee.firstName+" "+$employee.lastName)
:($status.status=dk status entity does not exist anymore)
ALERT($status.statusText)
End case
Producto: 4D
Tema: ORDA - Entity
Creado por: 4D v17
Manual de lenguaje 4D ( 4D v19)
Manual de lenguaje 4D ( 4D v19.1)
Manual de lenguaje 4D ( 4D v19.4)
Manual de lenguaje 4D ( 4D v19.5)
Manual de lenguaje 4D ( 4D v19.6)
Manual de lenguaje 4D ( 4D v19.7)
Manual de lenguaje 4D ( 4D v19.8)