4D v15.4Type |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v15.4
Type
|
Type ( champVar ) -> Résultat | ||||||||
Paramètre | Type | Description | ||||||
champVar | Champ, Variable |
![]() |
Champ ou variable à tester | |||||
Résultat | Entier long |
![]() |
Numéro du type de données | |||||
Type retourne une valeur numérique qui indique le type du champ ou de la variable que vous avez passé(e) dans le paramètre champVar.
4D fournit les constantes prédéfinies suivantes, disponible dans le thème Types champs et variables :
Constante | Type | Valeur |
Est un BLOB | Entier long | 30 |
Est un booléen | Entier long | 6 |
Est un champ alpha | Entier long | 0 |
Est un entier | Entier long | 8 |
Est un entier 64 bits | Entier long | 25 |
Est un entier long | Entier long | 9 |
Est un float | Entier long | 35 |
Est un null JSON | Entier long | 255 |
Est un numérique | Entier long | 1 |
Est un objet | Entier long | 38 |
Est un pointeur | Entier long | 23 |
Est un tableau 2D | Entier long | 13 |
Est un tableau blob | Entier long | 31 |
Est un tableau booléen | Entier long | 22 |
Est un tableau chaîne | Entier long | 21 |
Est un tableau date | Entier long | 17 |
Est un tableau entier | Entier long | 15 |
Est un tableau entierlong | Entier long | 16 |
Est un tableau heure | Entier long | 32 |
Est un tableau image | Entier long | 19 |
Est un tableau numérique | Entier long | 14 |
Est un tableau objet | Entier long | 39 |
Est un tableau pointeur | Entier long | 20 |
Est un tableau texte | Entier long | 18 |
Est un texte | Entier long | 2 |
Est une date | Entier long | 4 |
Est une heure | Entier long | 11 |
Est une image | Entier long | 3 |
Est une sous table | Entier long | 7 |
Est une variable chaîne | Entier long | 24 |
Est une variable indéfinie | Entier long | 5 |
Notes :
Vous pouvez appliquer la fonction Type aux champs, variables interprocess, variables process, variables locales et à des pointeurs dépointés qui référencent ces types d'objets. Vous pouvez appliquer Type aux paramètres ($1,$2..., ${...}) d'une méthode projet ou au résultat d'une fonction ($0).
Référez-vous à l'exemple de la commande APPEND DATA TO PASTEBOARD.
Référez-vous à l'exemple de la commande DRAG AND DROP PROPERTIES .
La méthode projet suivante efface une partie ou la totalité des champs de l'enregistrement courant de la table vers laquelle pointe le pointeur passé en paramètre, et ce, sans supprimer l'enregistrement ou changer d'enregistrement courant :
` Méthode projet VIDER ENREGISTREMENT
` VIDER ENREGISTREMENT ( Pointeur {; Entier long } )
` VIDER ENREGISTREMENT ( -> [Table] { ; Type des valeurs } )
C_POINTER($1)
C_LONGINT($2;$vlTypeVal)
If(Count parameters>=2)
$vlTypeVal:=$2
Else
$vlTypeVal:=0xFFFFFFFF
End if
For($vlChamp;1;Nombre de champs($1))
$vpChamp:=Field(Table($1);$vlChamp)
$vlTypeChamp:=Type($vpChamp->)
If($vlTypeVal ??$vlTypeChamp )
Case of
:(($vlTypeChamp=Is alpha field)|($vlTypeChamp=Is text))
$vpChamp->:=""
:(($vlTypeChamp=Is real)|($vlTypeChamp=Is integer)|($vlTypeChamp=Is longint))
$vpChamp->:=0
:($vlTypeChamp=Is date)
$vpChamp->:=!00/00/00!
:($vlTypeChamp=Is time)
$vpChamp->:=?00:00:00?
:($vlTypeChamp=Is Boolean)
$vpChamp->:=False
:($vlTypeChamp=Is picture)
C_PICTURE($vgImageVide)
$vpChamp->:=$vgImageVide
:($vlTypeChamp=Is subtable)
Repeat
ALL SUBRECORDS($vpChamp->)
DELETE SUBRECORD($vpChamp->)
Until(Records in subselection($vpChamp->)=0)
:($vlTypeChamp=Is BLOB)
SET BLOB SIZE($vpChamp->;0)
End case
End if
End for
Une fois cette méthode projet implémentée dans votre base, vous pouvez écrire :
` Effacer la totalité du contenu de l'enregistrement courant de la table [Choses à faire]
VIDER ENREGISTREMENT(->[Choses à faire])
` Effacer les champs de type Texte, BLOB et Image de l'enregistrement courant de la table [Choses à faire]
VIDER ENREGISTREMENT(->[Choses à faire];0?+Is text?+Is BLOB?+Is picture)
` Effacer la totalité de l'enregistrement courant de la table [Choses à faire] sauf les champs Alpha
VIDER ENREGISTREMENT(->[Choses à faire];-1?-Is alpha field)
Dans certains cas, par exemple pour écrire du code générique, il peut être nécessaire de savoir si un tableau est tableau standard indépendant ou une “ligne” d’un tableau 2D. Dans ce cas, il suffit d’utiliser le code suivant :
ptrmonTab:=->monTab{6} ` monTab{6} est-il une ligne d’un tableau 2D ?
RESOLVE POINTER(ptrmonTab;nomVar;numTable;numChamp)
If(nomVar#"")
$ptr:=Get pointer(nomVar)
$letype:=Type($ptr->)
` Si monTab{6} est une ligne de tableau 2D, $letype vaut 13
End if
Produit : 4D
Thème : Langage
Numéro :
295
Modifié : 4D v11 SQL
4D - Langage ( 4D v15)
4D - Langage ( 4D v15.4)
4D - Langage ( 4D v15.3)