Este es el sitio web histórico de la documentación de 4D. La documentación se está trasladando progresivamente a developer.4d.com

Inicio

 
4D v19.8
entity.drop( )

entity.drop( ) 


 

entity.drop ( {modo} ) -> Resultado 
Parámetro Tipo   Descripción
modo  Entero largo in dk force drop if stamp changed: fuerza la supresión incluso si el marcador interno ha cambiado
Resultado  Objeto in Resultado de la operación de supresión

El método entity.drop( ) elimina los datos de la entidad de la tabla asociada a la dataclass. Tenga en cuenta que la entidad permanece en la memoria.

En una aplicación multiusuario o multiproceso, el método entity.drop( ) se ejecuta en modo "bloqueo optimista", mientras que un marcador de bloqueo interno se incrementa automáticamente cada vez que se guarda el registro. Para más información, consulte la página Bloquear entidades.

Por defecto, si se omite el parámetro modo, el método devolverá un error (ver abajo) si la entidad fue modificada (es decir, el marcador interno ha cambiado) mientras tanto por otro proceso o usuario.
De lo contrario, puede pasar la opción dk force drop if stamp changed en el parámetro modo: en este caso, la entidad se suelta incluso si el valor del marcador ha cambiado (si la llave primaria sigue siendo la misma).

Resultado

El objeto devuelto por entity.drop( ) contiene las siguientes propiedades:

PropiedadTipoDescripción
successbooleanotrue si la acción de guardar es exitosa, de lo contrario es false.
Disponible solo si se utiliza la opción dk auto merge:
autoMergedbooleanotrue si se realizó una fusión automática, en caso contrario, false.
Disponible solo en caso de error:
status(*)númeroCódigo de error, ver a continuación
statusText(*)textoDescripción del error, ver a continuación
Disponible solo en caso de error de bloqueo pesimista:
LockKindTexttexto"Bloqueado por registro"
lockInfoobjetoInformación sobre el origen del bloqueo
task_idnúmeroID del proceso
user_nametextoNombre de usuario de sesión en la máquina
user4d_aliastextoAlias de usuario definido con SET USER ALIAS, o bien nombre de usuario en el directorio de la base 4D
user4d_idnúmeroNúmero de usuario 4D (solo disponible en bases binarias 4D)
host_nametextoNombre del equipo
task_nametextoNombre del proceso
client_versiontexto
Disponible solo en caso de error grave (error grave al tratar de duplicar una llave primaria, disco lleno...):
errorscolección de objetos
messagetextoMensaje de error
component signaturetextoFirma del componente interno (por ejemplo, "dmbg" representa el componente de la base)
errCodenúmeroCó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:
  • la entidad ha sido suprimida (el stamp ha cambiado y el espacio de memoria ahora está liberado)
  • la entidad ha sido suprimida y reemplazada por otra con una llave primaria diferente (el stamp ha cambiado y una nueva entidad ahora ocupa el espacio de memoria). Cuando se usa entity.drop( ), este error puede devolverse cuando se usa la opción dk force drop if stamp changed. Al usar entity.lock( ), este error puede devolverse cuando se usa la opción dk reload if stamp changed 

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).

  • con entity.save( ):  error solo si no se utiliza la opción dk auto merge
  • con entity.drop( ): error solo si no se usa la opción dk force drop if stamp changed
  • con entity.lock( ): error solo si no se usa la opción dk reload if stamp changed
statusText asociado: "El stamp ha cambiado" ("Stamp has changed")

Ejemplo sin la opción dk force drop if stamp changed:

 C_OBJECT($employees;$employee;$status)
 $employees:=ds.Employee.query("lastName=:1";"Smith")
 $employee:=$employees.first()
 $status:=$employee.drop()
 Case of
    :($status.success)
       ALERT("You have dropped "+$employee.firstName+" "+$employee.lastName) //La entidad soltada permanece en la memoria
    :($status.status=dk status stamp has changed)
       ALERT($status.statusText)
 End case

Ejemplo con la opción dk force drop if stamp changed:

 C_OBJECT($employees;$employee;$status)
 $employees:=ds.Employee.query("lastName=:1";"Smith")
 $employee:=$employees.first()
 $status:=$employee.drop(dk force drop if stamp changed)
 Case of
    :($status.success)
       ALERT("You have dropped "+$employee.firstName+" "+$employee.lastName) //La entidad soltada permanece en memoria
    :($status.status=dk status entity does not exist anymore)
       ALERT($status.statusText)
 End case



Ver también 

entity.save( )

 
PROPIEDADES 

Producto: 4D
Tema: ORDA - Entity

 
CONTENIDO DE LA PÁGINA 
 
HISTORIA 

Creado por: 4D v17

 
ARTICLE USAGE

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)