Type

4D - Documentation   Français   English   German   Español   4D v11 SQL, Comandos por temas   4D v11 SQL, Lista alfabética de comandos   4D v11 SQL, Constantes por temas   Regresar   Anterior   Siguiente

versión 11 (Modificado)


Type (campVar) Numérico

ParámetroTipoDescripción
campVarCampo | VariableCampo o variable a probar
ResultadoNuméricoNúmero de tipo de datos

Descripción

El comando Type devuelve un valor numérico que indica el tipo de campo o variable que usted pasa en campVar.

4D ofrece las siguientes constantes predefinidas:

ConstanteTipoValor
Is Alpha FieldEntero largo 0
Is String VarEntero largo 24
Is TextEntero largo 2
Is RealEntero largo 1
Is IntegerEntero largo 8
Is LongIntEntero largo 9
Is DateEntero largo 4
Is TimeEntero largo 11
Is BooleanEntero largo 6
Is PictureEntero largo 3
Is SubtableEntero largo 7
Is BLOBEntero largo 30
Is UndefinedEntero largo 5
Is PointerEntero largo 23
String ArrayEntero largo 21
Text ArrayEntero largo 18
Real ArrayEntero largo 14
Integer ArrayEntero largo 15
LongInt ArrayEntero largo 16
Date ArrayEntero largo 17
Boolean ArrayEntero largo 22
Picture ArrayEntero largo 19
Pointer ArrayEntero largo 20
Array 2DEntero largo 13

Notas:

Type devuelve 9 (Is LongInt) cuando se aplica a una variable de tipo gráfico.

A partir de la versión 11 de 4D, Type devuelve el tipo actual de un array cuando se aplica a una "fila" de un array 2D, en lugar de un Array 2D como antes (ver ejemplo 4).

Puede aplicar Type a campos, variables interproceso, variables proceso, variables locales y a los apuntadores sin referencia que hacen referencia a estos tipos de objetos. Puede aplicar Type a los parámetros ($1,$2..., ${...}), de un método de proyecto o a un resultado de una función ($0).

Ejemplos

1. Ver ejemplo del comando APPEND DATA TO PASTEBOARD.

2. Ver ejemplo del comando DRAG AND DROP PROPERTIES.

3. El siguiente método de proyecto borra una parte o la totalidad de los campos del registro actual de la tabla a la cual apunta el puntero pasado como parámetro. Hace esto sin borrar o cambiar el registro actual:

      ` Método de proyecto BORRAR REGISTRO
      ` BORRAR REGISTRO ( Puntero {; Entero largo } )
      ` BORRAR REGISTRO ( -> [Tabla] { ; Tipo de valores } )

   C_POINTER ($1)
   C_LONGINT ($2;$vlTipoVal)

   If (Count parameters>=2)
      $vlTipoVal:=$2
   Else
      $vlTipoVal:=0xFFFFFFFF
   End if
   For ($vlCampo;1;Count fields($1))
      $vpCampo:=Field(Table($1);$vlCampo)
      $vlTipoCampo:=Type($vpCampo->)
      If ( $vlTipoVal?? $vlTipoCampo )
         Case of
            : (($vlTipoCampo =Is Alpha Field)|($vlTipoCampo =Is Text))
               $vpCampo->:=""
            : (($vlTipoCampo =Is Real)|($vlTipoCampo=Is Integer)|($vlTipoCampo =Is LongInt))
               $vpCampo->:=0
            : ($vlTipoCampo =Is Date)
               $vpCampo->:=!00/00/00!
            : ($vlTipoCampo =Is Time)
               $vpCampo->:=?00:00:00?
            : ($vlTipoCampo =Is Boolean)
               $vpCampo->:=False
            : ($vlTipoCampo =Is Picture)
               C_PICTURE($vgImagenVacia)
               $vpCampo->:=$vgImagenVacia
            : ($vlTipoCampo =Is Subtable)
               Repeat
                  ALL SUBRECORDS($vpCampo->)
                  DELETE SUBRECORD($vpCampo->)
               Until(Records in subselection($vpCampo->)=0)
            : ($vlTipoCampo =Is BLOB)
               SET BLOB SIZE($vpCampo->;0)
         End case
      End if
   End for

Después de implementar este método de proyecto en su base de datos, puede escribir:

      ` Borrar todo el registro actual de la tabla [Cosas por hacer]
   BORRAR REGISTRO (->[Cosas por hacer])

      ` Borrar los campos de tipo Texto, BLOB e Imagen del registro actual de la tabla [Cosas por hacer]
   BORRAR REGISTRO(->[Cosas por hacer]; 0 ?+ Is Text ?+ Is BLOB ?+ Is Picture )

      ` Borrar la totalidad del registro actual de la tabla [Cosas por hacer] excepto los campos Alfa
   BORRAR REGISTRO (->[Cosas por hacer]; -1 ?- Is Alpha Field )

 
4. En algunos casos, por ejemplo cuando se escribe código genérico, usted puede necesitar saber si un array es un array estándar independiente o una "fila" de un array 2D. En este caso, usted puede utilizar el siguiente código:

ptrmiArr:=->miArr{6}   ` ¿Es miArr{6} la fila de un array 2D?
   RESOLVE POINTER (ptrmiArr;varNombre;numTabla;numCamp)
   If (varNombre#"")
      $ptr:=Get pointer (varNombre)
      $eltipo:=Type($ptr->)
         ` Si miArr{6} es una fila de un array 2D, $eltipo es igual a 13
   End if

Ver también

Is a variable, Undefined.


4D - Documentation   Français   English   German   Español   4D v11 SQL, Comandos por temas   4D v11 SQL, Lista alfabética de comandos   4D v11 SQL, Constantes por temas   Regresar   Anterior   Siguiente