Type

4D - Documentation   Français   English   German   Español   4D v11 SQL, Commandes par thèmes   4D v11 SQL, Liste alphabétique des commandes   4D v11 SQL, Constantes par thèmes   Retour   Précédent   Suivant

version 11 (Modifiée)


Type (champVar) Numérique

ParamètreTypeDescription
champVarChamp | VariableChamp ou variable à tester
RésultatNumériqueNuméro du type de données

Description

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 :

ConstanteTypeValeur
Est un champ alphaEntier long0
Est une variable chaîneEntier long24
Est un texteEntier long2
Est un numériqueEntier long1
Est un entierEntier long8
Est un entier longEntier long9
Est une dateEntier long4
Est une heureEntier long11
Est un booléenEntier long6
Est une imageEntier long3
Est une sous-tableEntier long7
Est un BLOBEntier long30
Est une variable indéfinieEntier long5
Est un pointeurEntier long23
Est un tableau chaîneEntier long21
Est un tableau texteEntier long18
Est un tableau numériqueEntier long14
Est un tableau entierEntier long15
Est un tableau entierlongEntier long16
Est un tableau dateEntier long17
Est un tableau booléenEntier long22
Est un tableau imageEntier long19
Est un tableau pointeurEntier long20
Est un tableau 2DEntier long13

Notes :

Type retourne 9 (Est un entier long) lorsqu'elle est appliquée à une variable de type Graphe.

A compter de la version 11 de 4D, Type retourne le véritable type d'un tableau lorsqu'elle est appliquée à une "ligne" d'un tableau 2D, et non plus Est un tableau 2D (cf. exemple 4).

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

Exemples

(1) Référez-vous à l'exemple de la commande AJOUTER DONNEES AU CONTENEUR.

(2) Référez-vous à l'exemple de la commande PROPRIETES GLISSER DEPOSER.

(3) 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_POINTEUR ($1)
   C_ENTIER LONG ($2;$vlTypeVal)

   Si (Nombre de parametres>=2)
      $vlTypeVal:=$2
   Sinon
      $vlTypeVal:=0xFFFFFFFF
   Fin de si
   Boucle ($vlChamp;1;Nombre de champs($1))
      $vpChamp:=Champ(Table($1);$vlChamp)
      $vlTypeChamp:=Type($vpChamp->)
      Si ( $vlTypeVal ?? $vlTypeChamp )
         Au cas ou
            : (($vlTypeChamp=Est un champ alpha)|($vlTypeChamp=Est un texte))
               $vpChamp->:=""
            : (($vlTypeChamp=Est un numérique)|($vlTypeChamp=Est un entier)|($vlTypeChamp=
                                          Est un entier long))
               $vpChamp->:=0
            : ($vlTypeChamp=Est une date)
               $vpChamp->:=!00/00/00!
            : ($vlTypeChamp=Est une heure)
               $vpChamp->:=?00:00:00?
            : ($vlTypeChamp=Est un booléen)
               $vpChamp->:=Faux 
            : ($vlTypeChamp=Est une image)
               C_IMAGE($vgImageVide)
               $vpChamp->:=$vgImageVide
            : ($vlTypeChamp=Est une sous table)
               Repeter
                  TOUS LES SOUS ENREGISTREMENTS($vpChamp->)
                  SUPPRIMER SOUS ENREGISTREMENT($vpChamp->)
               Jusque(Sous enregistrements trouves($vpChamp->)=0)
            : ($vlTypeChamp=Est un BLOB)
               FIXER TAILLE BLOB($vpChamp->;0)
         Fin de cas
      Fin de si
   Fin de boucle

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 ?+ Est un texte ?+ Est un BLOB ?+ Est une image )

      ` Effacer la totalité de l'enregistrement courant de la table [Choses à faire] sauf les champs Alpha
   VIDER ENREGISTREMENT (->[Choses à faire]; -1 ?- Est un champ alpha )

(4) 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 ?
   RESOUDRE POINTEUR(ptrmonTab;nomVar;numTable;numChamp)
   Si(nomVar#"")
      $ptr:=Pointeur vers(nomVar)
      $letype:=Type($ptr->)
         ` Si monTab{6} est une ligne de tableau 2D, $letype vaut 13
   Fin de si

Référence

Est une variable, Indefinie.


4D - Documentation   Français   English   German   Español   4D v11 SQL, Commandes par thèmes   4D v11 SQL, Liste alphabétique des commandes   4D v11 SQL, Constantes par thèmes   Retour   Précédent   Suivant