| 4D v13.4Type | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|  | 
    4D v13.4
 Type 
         | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Type ( campVar ) -> Resultado | ||||||||
| Parâmetro | Tipo | Descrição | ||||||
| campVar | Campo, Variável |   | Campo ou Variável a ser testada | |||||
| Resultado | Inteiro longo |   | Número de tipo de dados | |||||
O comando Type devolve um valor numérico que indica o tipo do campo ou da variável que passa em campVar.
4D oferece as seguintes constantes pré-definidas:
| Constante | Tipo | Valor | 
| Is Alpha Field | Inteiro longo | 0 | 
| Is Real | Inteiro longo | 1 | 
| Is Text | Inteiro longo | 2 | 
| Is Picture | Inteiro longo | 3 | 
| Is Date | Inteiro longo | 4 | 
| Is Undefined | Inteiro longo | 5 | 
| Is Boolean | Inteiro longo | 6 | 
| Is Subtable | Inteiro longo | 7 | 
| Is Integer | Inteiro longo | 8 | 
| Is LongInt | Inteiro longo | 9 | 
| Is Time | Inteiro longo | 11 | 
| Array 2D | Inteiro longo | 13 | 
| Real array | Inteiro longo | 14 | 
| Integer array | Inteiro longo | 15 | 
| LongInt array | Inteiro longo | 16 | 
| Date array | Inteiro longo | 17 | 
| Text array | Inteiro longo | 18 | 
| Picture array | Inteiro longo | 19 | 
| Pointer array | Inteiro longo | 20 | 
| String array | Inteiro longo | 21 | 
| Boolean array | Inteiro longo | 22 | 
| Is Pointer | Inteiro longo | 23 | 
| Is String Var | Inteiro longo | 24 | 
| Is Integer 64 bits | Inteiro longo | 25 | 
| Is BLOB | Inteiro longo | 30 | 
| Is Float | Inteiro longo | 35 | 
Notas: 
• Type  devolve 9 (Is LongInt) quando se aplica a uma variável de tipo gráfico.
• A partir da versão 11 de 4D, Type devolve o tipo atual de um array quando é aplicado a uma "fila" de um array 2D, ao invés de um Array 2D como antes (ver exemplo 4).
• A partir da versão 11 de 4D, Type devolve o tipo (Is text ou Text array quando se aplica respectivamente a uma variável Alfa ou a um array Alfa (a partir desta versão, não há diferença entre uma variável Alfa e Texto).
Ver exemplo do comando APPEND DATA TO PASTEBOARD.
Ver exemplo do comando DRAG AND DROP PROPERTIES.
O método de projeto a seguir apaga uma parte ou a totalidade dos campos do registro atual da tabela a qual aponta o ponteiro passado como parâmetro. Faz isto sem apagar ou modificar o registro atual:
  ` Método de projeto APAGAR REGISTRO
  ` APAGAR REGISTRO ( Ponteiro {; Inteiro longo } )
  ` APAGAR REGISTRO ( -> [Tabela] { ; 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($vgImagemVaxia)
             $vpCampo->:=$vgImagemVazia
          :($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 forDepois de implementar este método de projeto em seu banco de dados, pode escrever:
  ` Apagar todo o registro atual da tabela [Coisas a fazer]
 APAGAR REGISTRO(->[Coisas a fazer])
  ` Apagar os campos de tipo Texto, BLOB e Imagem do registro atual da tabela [Coisas a fazer]
 APAGAR REGISTRO(->[Coisas a fazer];0?+Is Text?+Is BLOB?+Is Picture)
  ` Apagar a totalidade do registro atual da tabela [Coisas a fazer] exceto os campos Alfa
 APAGAR REGISTRO(->[Coisas a fazer];-1?-Is Alpha Field)Em alguns casos, por exemplo quando se escreve código genérico, pode necessitar saber se um array é um array normal independente ou uma "fila" de um array 2D. Neste caso, pode utilizar o código a seguir:
 ptrmeuArr:=->meuArr{6} ` É meuArr{6} a fila de um array 2D?
 RESOLVE POINTER(ptrmeuArr;varNome;numTabela;numCamp)
 If(varNome#"")
    $ptr:=Get pointer(varNome)
    $eltipo:=Type($ptr->)
  ` Se meuArr{6} é uma fila de um array 2D, $otipo é igual a 13
 End if
	Produto: 4D
	Tema: Linguagem
	Número 
        295
        
        
        
	
	Modificado: 4D v11 SQL