Vous êtes sur le site Web historique de la documentation de 4D. Les documentations sont progressivement déplacées vers developer.4d.com

Accueil

 
4D v19.8
entity.drop( )

entity.drop( ) 


 

entity.drop ( {mode} ) -> Résultat 
Paramètre Type   Description
mode  Entier long in dk force drop if stamp changed : force la suppression même si le marqueur interne a changé
Résultat  Objet in Résultat de l'opération de suppression

La méthode entity.drop( ) supprime les données de l'entité de la table associée à la dataclass. A noter que l'entité reste en mémoire.

Dans une application multiprocess ou multi-utilisateurs, la méthode entity.drop( ) est exécutée en mode "verrouillage optimiste", dans lequel un marqueur de verrouillage interne est automatiquement incrémenté à chaque sauvegarde de l'enregistrement. Pour plus d'informations, veuillez vous reporter à la page Verrouillage d'entités.

Par défaut, lorsque le paramètre mode est omis, la méthode retourne une erreur (cf. ci-dessous) si l'entité a été modifiée (i.e. le marqueur interne a changé) entre-temps par un autre process ou utilisateur.
Sinon, vous pouvez passer l'option dk force drop if stamp changed dans le paramètre mode : dans ce cas, l'entité est supprimée même si la valeur du marqueur interne est différente (si la clé primaire est identique). 

Résultat

L'objet retourné par entity.drop( ) contient les propriétés suivantes :

PropriétéTypeDescription
successbooléenVrai si l'action de suppression a été effectuée avec succès, sinon Faux.
Disponible uniquement en cas d'erreur :
status(*)numériqueCode d'erreur, voir ci-dessous
statusText(*)texteDescription de l'erreur, voir ci-dessous
Disponible uniquement en cas d'erreur de verrouillage pessimiste :
LockKindTexttexte"Locked by record"
lockInfoobjetInformation sur l'origine du verrouillage
task_idnumériqueID du process
user_nametexteNom d'utilisateur de la session sur la machine
user4d_aliastexteAlias utilisateur défini avec SET USER ALIAS, sinon le nom d'utilisateur dans le répertoire de la base 4D
user4d_idnumériqueNuméro de l'utilisateur 4D (Disponible uniquement dans les bases 4D binaires) 
host_nametexteNom de la machine
task_nametexteNom du process
client_versiontexte
Disponible uniquement en cas d'erreur critique (clé primaire dupliquée, disque plein...) :
errorscollection d'objets
messagetexteMessage d'erreur
component signaturetexteSignature du composant interne (p.e. "dmbg" pour le composant de base de données)
errCodenombreCode d'erreur

(*) Les valeurs suivantes peuvent être retournées dans les propriétés status et statusText de l'objet Résultat en cas d'erreur : 

Constante Valeur Comment
dk status entity does not exist anymore 5 L'entité n'existe plus dans les données. Cette erreur peut se produire dans les cas suivants :
  • l'entité a été supprimée (le stamp est modifié et l'espace mémoire est libéré)
  • l'entité a été supprimée et remplacée par une autre avec une clé primaire différente (le stamp est modifié et une nouvelle entité occupe l'espace mémoire). Avec entity.drop( ), cette erreur peut être retournée lorsque l'option dk force drop if stamp changed est utilisée. Avec entity.lock( ), cette erreur peut être retournée lorsque l'option dk reload if stamp changed est utilisée.

statusText associé : "Entity does not exist anymore"

dk status locked 3 L'entité est verrouillée par un verrou pessimiste.
statusText associé : "Already locked"
dk status serious error 4 Une erreur critique peut être une erreur de bas niveau de la base de données (ex. clé dupliquée), une erreur matérielle, etc.
statusText associé : "Other error"
dk status stamp has changed 2

La valeur du marqueur interne (stamp) de l'entité ne correspond pas à celle de l'entité stockée dans les données (verrouillage optimiste).

  • avec entity.save( ) : erreur uniquement si l'option dk auto merge n'est pas utilisée
  • avec entity.drop( ) : erreur uniquement si l'option dk force drop if stamp changed n'est pas utilisée
  • avec entity.lock( ) : erreur uniquement si l'option dk reload if stamp changed n'est pas utilisée
statusText associé : "Stamp has changed"

Exemple sans option 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("Vous avez supprimé "+$employee.firstName+" "+$employee.lastName) //L'entité supprimée reste en mémoire
    :($status.status=dk status stamp has changed)
       ALERT($status.statusText)
 End case

Même exemple avec l'option 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("Vous avez supprimé "+$employee.firstName+" "+$employee.lastName) //L'entité supprimée reste en mémoire
    :($status.status=dk status entity does not exist anymore)
       ALERT($status.statusText)
 End case



Voir aussi  

entity.save( )

 
PROPRIÉTÉS 

Produit : 4D
Thème : ORDA - Entity

 
PAGE CONTENTS 
 
HISTORIQUE 

Créé : 4D v17

 
UTILISATION DE L'ARTICLE

4D - Langage ( 4D v19)
4D - Langage ( 4D v19.1)
4D - Langage ( 4D v19.4)
4D - Langage ( 4D v19.5)
4D - Langage ( 4D v19.6)
4D - Langage ( 4D v19.7)
4D - Langage ( 4D v19.8)