4D v16.3

Tipos de campos 4D

Página Inicial

 
4D v16.3
Tipos de campos 4D

Tipos de campos 4D  


 

 

É necessário especificar um tipo de campo para cada campo. Os tipos de campos afetam a maneira como 4D manipula e armazena os dados nos campos e como os introduz e os exibe nos formulários. Como padrão, 4D atribui um tipo Alfanumérico para cada novo campo.

Para modificar o tipo de um campo:

   1. Clique no ícone do tipo de campo na imagem da tabela escolha o tipo que deseja no menu associado.
     
      OU
      Clique com o botão direito no campo cujo tipo você deseja alterar e escolha o novo tipo no sub-menu Tipo do menu contextual.
      OU
      Selecione o campo cujo tipo deseja alterar e clique na área Tipo do Inspetor para mostrar o menu de tipos.

É possível alterar o tipo a qualquer momento, a menos que o campo tenha uma relação ou pertença à uma chave primária. Neste caso, o menu para escolher um tipo de campo está desativado. Você deve eliminar a relação ou a chave primária antes de alterar o tipo do campo.

Se você altera o tipo de campo antes de introduzir dados no campo, 4D altera simplesmente o tipo de campo. Se você altera o tipo de campo depois de introduzir dados no campo, 4D converte, se for possível, os dados para que correspondam ao novo tipo. Os dados de um campo Imagem convertido em outro tipo não são exibidos.

Quando se converte um tipo de campo, 4D conserva o valor original do campo até que você modifique o registro. Por exemplo, se um campo de tipo texto contém o valor “maior que 10” e você alterar o tipo de campo a Inteiro, o campo modificado exibe “10”. Se altera o campo novamente a Texto, 4D exibe novamente “maior que 10”.
Por padrão, 4D suporta os seguintes tipos de campos:

    * Alfa: texto alfanumérico entre 1 e 255 caracteres.
    * Texto: texto de até 2 GB.
    * Data: datas entre o ano 100 e o ano 32 767.
    * Hora: hora expressada em horas:minutos:segundos.
    * Booleano: um campo que só pode conter os valores TRUE (verdadeiro) ou FALSE(falso).
    * Inteiro: número inteiro entre -32 768 y 32 767.
    * Inteiro longo: número uma faixa de mais ou menos 2 147 483 647.
    * Inteiro 64 bits (1): número inteiro de 8 bytes incluídos entre +/- 2E64,
    * Real: número real na faixa de ±1.7E±308 (com 13 cifras significativas).
    * Flutuante(1): número de ponto flutuante,
    * BLOB: todo objeto binário, como um gráfico, outra aplicação ou qualquer documento.
    * Imagem: uma imagem em um dos formatos suportados por 4D (ver Formatos Nativos Compatíveis no Manual de Referência de Linguagem 4D)

(1)  Atenção, estes tipos de campos só são utilizados pelo motor SQL de 4D. Se estes campos são utilizados na linguagem de 4D, seus valores se convertem internamente em números reais

Nota: O termo genérico "string" pode indicar um tipo Alfa ou Texto e "número" pode indicar um Inteiro, um Inteiro Longo, Inteiro 64 bits, Real ou Flutuante.

Alfa  

Um campo tipo Alfa contém caracteres alfanuméricos (letras e números), sinais de pontuação, e caracteres especiais como o asterisco (*), o sinal de porcentagem (%), o hífen (-) e outros similares. Os campos alfa são utilizados para armazenar informação que deva ser tratada como texto e não ultrapasse 255 caracteres de comprimento.

Um campo alfa pode estar associado a um índice padrão e/ou a um índice de palavras chaves. Para maiores informações sobre indexação, consulte o parágrafo Criar e modificar Índices.

Alfa é o tipo de campo mais comum. Geralmente, se utiliza este campo para nomes, endereços, números telefônicos, códigos postais e similares. Durante a entrada de dados, um campo Alfa permite qualquer caractere, número, símbolo de pontuação ou caractere especial.

Códigos Postais (CEP) devem utilizar o  tipo Alfa por duas razões: os campos numéricos não exibem zeros ao início e alguns códigos postais contêm hífens. A regra geral que se aplica para escolher entre numérico e Alfa consiste em escolher o campo Alfa a menos que o campo seja utilizado em cálculos numéricos ou pesquisas ou ordenações baseadas em valores numéricos.

É possível definir o comprimento máximo de um campo Alfa entre 1 e 255 caracteres.

É possível concatenar dois ou mais campos Alfa. Por exemplo, é possível colocar o nome o sobrenome de uma pessoa em uma mesma linha de uma etiqueta. É possível fazê-lo simplesmente utilizando a linha de código a seguir:

 NomeCompleto:=[Empregados]Nome+" "+[Empregados]Sobrenome

A variável NomeCompleto pode ser exibida ou impressa. Você também pode extrair parte da informação para uso em outro lugar (extrair uma substring). A substring pode então ser exibida ou impressa.

Texto  

Um campo Texto é parecido a um campo Alfa, exceto por algumas diferenças.

Um campo Texto pode conter até 2Gb de caracteres alfanuméricos. Geralmente, os campos tipo texto são utilizados para armazenar blocos de texto de tamanho grande, tais como comentários ou descrições.
Por razões de otimização, o conteúdo de um campo Texto é armazenado, por padrão, fora dos registros (ver o parágrafo “Stored in the Record” Armazenado em registro, arquivo de dados ou fora do arquivo de dados). Neste caso, o campo não pode ser associado a um índice padrão. Como os campos Alfa, um campo Texto pode ser associado a um índice de palavras chaves. Para maiores informações sobre indexação, consulte o parágrafo “Management of Indexes” em Criar e modificar Índices.

Em um formulário de entrada, um campo Texto pode ter barras de rolagem. Em um relatório impresso, o campo texto pode se estender tanto quanto seja necessário para imprimir toda a informação, inclusive se for necessário estender por várias páginas.

Durante a entrada de dados, os campos Texto oferecem as características básicas de edição de texto: rolagem, ajuste de texto dentro da área definida para visualizar o campo, clique duplo para selecionar uma palavra, movimentar o cursor com a ajuda das teclas direcionais, e operações padrões como cortar, copiar e colar. Se tiver a opção multi-linha, um campo de tipo Texto aceita retornos de carro durante a entrada de dados para a criação de novos parágrafos (um campo tipo Alfa não permite isso). Se tiver a opção multi-estilo, o campo pode conter texto com variações de estilo como subscrito, negrito ou colorido.

É possível colar o texto nos campos tipo texto, incluindo texto de outros processadores de texto.

Nota: Outra forma de armazenar texto com um registro é utilizando o plug-in 4D Write. Com 4D Write, é possível utilizar diferentes atributos de fonte, alinhamentos de parágrafo, e outras características próprias dos processadores de texto que não estão disponíveis em campos Texto padrão. Como com todos os plug-ins 4D, a área 4D Write deve ser colocada em um campo de tipo BLOB – e não de tipo Texto. Para maiores informações sobre o uso de 4D Write, consulte Introdução a 4D Write no Manual de referência de Linguagem 4D.

Data  

Utilize um campo tipo Data para armazenar valores de datas como datas de início, datas de compra, aniversários, entre outros. Um campo tipo Data pode armazenar qualquer valor de data (dia, mês, ano) respeitando o formato DD/MM/AAAA entre o ano 100 e o ano 32767.

Nota:

  • O formato de datas utilizado no Brasil, Grã-Bretanha, Espanha e América Latina é DD/MM/AAAA, nos Estados Unidos é MM/DD/AAAA e na Suécia é AA/MM/DD. 4D armazena as datas de acordo com o formato selecionado no sistema operacional de seu computador.
  • Apesar do campo datas poder armazenar até o ano  32 767, certas operações do sistema impõe um limite inferior

Hora  

Utilize um campo tipo Hora para armazenar horas com a hora atual, a hora de uma reunião, a hora de faturamento, entre outros). Um campo tipo Hora pode armazenar qualquer hora no formato HH:MM:SS.

Os campos Booleanos (algumas vezes chamados campos lógicos) contêm valores TRUE ou FALSE.

É possível definir o formato de um campo Booleano como uma caixa de seleção ou um par de botões de opção. Uma caixa de seleção marcada é verdadeiro (TRUE); vazia é falso (FALSE). Selecionar o primeiro botão de opção equivale a verdadeiro (TRUE) e selecionar o segundo botão equivale a falso (FALSE).

Nomeie os campos Booleanos de modo que seja possível perguntar “O campo nome é verdadeiro?”. Esta pergunta é útil ao realizar pesquisas porque 4D revisa o valor TRUE e FALSE em um campo Booleano. Por exemplo, é possível nomear um campo “Masculino” no lugar de “Sexo”. Seu critério de pesquisa pode então ser escrito como “Masculino é verdadeiro” no lugar de “Sexo é verdadeiro”.

Inteiro  

O tipo de campo Inteiro é utilizado para armazenar números inteiros, ou seja, números sem frações decimais. Os campos de tipo Inteiro podem armazenar números inteiros entre -32.768 e 32.767.

Utilize o campo Inteiro Longo para armazenar números inteiros muito grandes, que não podem ser armazenados no campo de tipo Inteiro. Este tipo de campo pode armazenar números inteiros entre ±2.147.483.647.

Este tipo de campo pode ser utilizado para armazenar números inteiros de 8 bytes permitindo manipular valores inteiros de tamanho grande, entre +/- 2E64.

Nota: Atenção, este tipo de campo é utilizado somente pelo motor SQL de 4D. Se este campo é utilizado é utilizado na linguagem de 4D, seu valor é convertido internamente em um número real.

Real  

Os campos de tipo Real são utilizados para armazenar números reais, ou seja, números decimais (preço, salários, gastos, etc.). Os campos reais podem armazenar qualquer número na faixa de ±1.7E±308.
Os formatos de saída numéricos são baseados automaticamente nos parâmetros regionais do sistema. 4D substitui os caracteres “,” e “.” nos formatos de saída numéricos por, respectivamente, o separador de milhares definido no sistema operacional.

Nota: no motor da base de dados 4D, as comparações de números reais se realizam sempre com um valor ípsilon de 10^-6 com a finalidade de obter um nível de precisão suficiente. Para garantir a coerência dos dados e dos cálculos, este valor ípsilon não pode mudar. Particularmente, o motor de base de dados não leva em consideração o comando SET REAL COMPARISON LEVEL, que só se aplica aos tratamentos estabelecidos na linguagem de 4D. Devido a imprecisão inerente aos cálculos realizados nos números reais, não recomendamos o uso deste tipo de dados para armazenar valores precisos como identificadores.

Este tipo de campo pode ser utilizado para armazenar os números de ponto flutuante. Estes tipos de números permitem armazenar os valores reais sem perder precisão.

Nota: Atenção, este tipo de campo é utilizado unicamente pelo motor SQL de 4D. Se este campo é utilizado na linguagem 4D, seu valor se converte internamente em um número real.

Os campos de tipo Blob (Binary Large Object) armazenam documentos binários de todo tipo. Por exemplo, pode armazenar documentos criados por outras aplicações, imagens escaneadas ou outras aplicações. Um BLOB pode ser de até 2 Gb. Quando se trabalha com um registro que contém um campo BLOB, todo o BLOB é carregado na memória. É possível utilizar campos tipo BLOB para armazenar arquivos de desktop dentro do seu banco de dados. Também é possível escrever os conteúdos de um campo tipo BLOB em um arquivo de desktop. Por exemplo, é possível utilizar um campo tipo BLOB em um sistema de gestão de documentos que armazena documentos no banco de dados e os entrega aos usuários quando são solicitados.


Você utiliza os comandos BLOB na linguagem 4D para manipular os campos tipo BLOB. Utilize os comandos  DOCUMENT TO BLOB e BLOB TO DOCUMENT para ler e escrever documentos a partir e em campos BLOB. Os comandos COMPRESS BLOB, EXPAND BLOB, e BLOB PROPERTIES lhe permitem trabalhar com campos BLOBs comprimidos. Para maiores informações sobre o uso de campos BLOBs, consulte a seção BLOBs no Manual de linguagem 4D. Por razões de otimização, o conteúdo de um campo BLOB é armazenado fora dos registros. Os BLOBs só são carregados quando é necessário, por exemplo, uma vez que o registro buscado é encontrado.

O conteúdo de um campo BLOB não é exibido na tela já que um BLOB pode representar qualquer tipo de dados.

Imagem  

Os campos tipo Imagem são utilizados para armazenar fotografias digitalizadas, diagramas, mapas, e ilustrações criadas utilizando aplicações gráficas. As imagens são conservadas em seu formato nativo.

Algumas aplicações gráficas armazenam informação adicional com as imagens, como por exemplo, instruções para dispositivos de saída como uma impressora PostScript™ ou, a partir de 4D v12, metadados. Esta informação acompanha a imagem quando se copia ou cola em um campo Imagem e é utilizada por 4D durante a impressão da imagem ou, no caso dos metadados, através dos comandos GET PICTURE METADATA e SET PICTURE METADATA.
 
Por razões de otimização, o conteúdo de um campo imagem é armazenado fora dos registros. As imagens só são carregadas quando for necessário, por exemplo, uma vez que o registro buscado é encontrado. A partir de 4D v13, também pode eleger guardar imagens fora do arquivo de dados (ver a seção Armazenamento externo dos dados).

4D pode memorizar um nome por padrão para cada imagem armazenada em um campo. Isso significa que você pode definir um nome de arquivo por padrão quando guarda o conteúdo de um campo imagem em um arquivo disco através de uma exportação usuário ou utilizando o comando WRITE PICTURE FILE (quando passa uma cadeia vazia no parâmetro nomArquivo). Se o conteúdo do campo é copiado em uma variável ou em outro campo, seu nome por padrão também é copiado.

Pode associar um nome por padrão a uma imagem armazenada em um campo imagem de dois maneiras:

  • Por programação, usando o comando SET PICTURE FILE NAME. Pode utilizar este comando para associar um nome de arquivo por padrão a imagem. Também pode utilizar o comando Get picture file name para averiguar o nome por padrão de uma imagem.
  • Automaticamente, quando o conteúdo de um arquivo imagem se importa em um campo imagem utilizando o menu contextual ou usando o comando READ PICTURE FILE: neste caso, 4D memoriza o nome do arquivo imagem original.

Isto se ilustra na seguinte sequencia:

  1. usuário importa o arquivo com o nome logo64.png em um campo imagem:
  2. A continuação, o usuário guarda o conteúdo do campo imagem: o nome logo64.png se apresenta na caixa de diálogo (tenha em conta que se trata de um nome por padrão e pode mudar)

Object  

Os  campos objetos armazenam pares de atributo/valor dos diferentes tipos, sem esquemas de dados predefinidos. A estrutura de dados armazenada não é necessariamente a mesma entre os diferentes registos. Por exemplo, um objeto de campo [Person]Address pode conter atributos diferentes, dependendo da cidade, do país, e assim por diante:

record1= {"street1":"Cotton Treasure Grounds", "street2":"Place Corners", "state":"MD",...} 
record2= {"street1":"Umber Road", "Number":"28", "state":"MO",...}

A estrutura dos objectos 4D baseia-se no princípio padrão de pares de "propriedade/valor". A sintaxe destes objetos baseia-se na notação JSON, mas ainda não a segue completamente:

  • Um nome de atributo é sempre um texto, como "Nome".
  • Um valor de atributo pode ser um dos seguintes tipos:

            número (Real, Integer, etc.)
        
    texto
        
    array (texto, real, inteiro longo, inteiro, booleano, objeto, apontador)
        
    nulo
           
Boolean

        
    data (formato "AAAA-MM-DDTHH: mm: ssZ")
        
    objeto (objetos podem ser aninhados em vários níveis)

Atenção: Por favor, note que os nomes dos atributos diferenciam entre maiúsculas e minúsculas.

Um campo objeto pode ser de até 2 GB. Ao trabalhar com um registro que contenha um campo objeto, todo o objeto é carregado na memória. Como para os campos do tipo texto, imagem ou campo BLOB, os campos objeto podem ser armazenados no arquivo de dados (com registros ou qualquer outro) ou fora do arquivo de dados; Esta opção está em Armazenamento externo dos dados.

Use os comandos 4D
Objetos (Linguagem) para gerenciar os campos objeto. Use os comandos  OB Get e OB SET para ler e gravar dados de e para campos objeto. Você também pode armazenar e ler arrays como atributos usando os comandos OB SET ARRAY e OB GET ARRAY.

Você pode usar comandos dedicados como QUERY BY ATTRIBUTE, [#cmd id="1424"/], DISTINCT ATTRIBUTE VALUES ou DISTINCT ATTRIBUTE PATHS para  buscar entre os campos objeto.

Como os campos de tipo de objeto são baseados em texto, seu conteúdo é exibido por padrão em um formulário 4D como texto e formato JSON (ver seção abaixo).

Nota: Para trabalhar com objetos JSON, você pode usar os comandos encontrados no "JSON".

O tipo objeto permite definir campos sem esquema dinâmico. Estes campos objeto podem ser considerados como campos "definidos pelo usuário" ou "personalizados". Em 4D, agora tem que escolher entre os modelos de dados com ou sem esquema. Em ambos os casos, você pode executar pesquisas indexadas rápidas.

Observe também que os campos objeto podem simplificar os modelos de dados padrão. Por exemplo, para uma tabela "Contatos" convencional, apenas um campo de tipo objeto permite evitar a criação de dezenas de campos que representam todos os valores possíveis, a maioria dos quais não são usados em 90% dos casos. O modelo de informação em tempo real é criado somente se necessário.

Todos os comandos do Objetos (Linguagem)  agora aceitam um campo objeto como o primeiro parâmetro (objeto).


Da mesma forma que objetos de linguagem padrão, os valores de campo objeto são manipulados pelos comandos do tema
Objetos (Linguagem). Por exemplo:

  // Defina um valor
 OB SET([Pessoas] Identity_OB;"Nome";$ firstName)
 OB SET([Pessoas] Identity_OB,"Last Name",$ lastName)
 
  // Obter um valor
 $ FirstNameOB=Get([Pessoas] Identity_OB;"Nome")
 $ ApelidoOB=Get([Pessoas] Identity_OB,"Last Name")


Os arrays também são suportados, por exemplo:

 ARRAY TEXT($arrGirls;3)</p><p>$arrGirls{1}:="Emma"
 $arrGirls{2}:="Susan"
 $arrGirls{3}:="Jamie"
 OB SET ARRAY([Persons]Children;"Girls";$arrGirls)

Para salvar modificações aplicadas aos atributos de um campo Objeto, na maioria dos casos é necessário notificar explicitamente a 4D da mudança antes de salvar o registro. Essa notificação é realizada reatribuindo o campo objeto para si mesmo:

 [Persons]Identity_OB:=[Persons]Identity_OB //força com que 4D atualize os conteúdos dos campos
 SAVE RECORD([Persons])

Esse passo é necessário já que uma referência de objeto pode ser usada em diferentes lugares dentro da aplicação, incluindo outros campos objeto. A linguagem 4D não pode detectar se algum dos atributos de objeto campo foram modificados quando salva o registro.

Deve reatribuir explicitamente o campo para salvar seus conteúdos logo que os atributos forem modificados:

  • quando manejar qualquer atributo através da notação de objeto:
     [Person]Info.firstName:="Jane"
     [Person]Info:=[Person]Info //obrigatório para salvar as edições
     SAVE RECORD([Person])
  • quando manejar os atributos além do primeiro nível usando o comando OB SET:
     OB SET([Person]Info.Children[0];"firstName";"Jenny")
     [Person]Info:=[Person]Info //obrigatório para salvar as edições
     SAVE RECORD([Person])

Nota: Atribuir o campo não é necessário quando manejar atributos de primeiro nível com o comando OB SET:

 OB SET([Rect]Desc;"x";"50";"y";"50";"color";"blue") //acesso aos atributos de primeiro nível
 SAVE RECORD([Rect]//não precisa atribuir o campo nesse caso

Os campos de objeto pode ser usado em fórmulas (usando o editor de fórmulas padrão ou o comando EXECUTE FORMULA).   No entanto, neste contexto, os campos de objectos podem ser manuseados apenas com os seguintes comandos:

Por exemplo, você pode executar a seguinte fórmula de pesquisa:

 OB Get([Rect]Desc;"color")="blue"

Como padrão, os campos objeto são representados como áreas de texto nos formulários 4D. Dentro destas áreas, os dados objeto deve ser undefined, ou devem ser formatados em texto JSON; caso contrário, um erro é retornado.

Por exemplo, se você definiu o campo [Rect]Desc como um campo objeto, você pode escrever:

 CREATE RECORD([Rect])
 <p>[Rect]Name:="Blue square"
 OB SET([Rect]Desc;"x";"50";"y";"50";"color";"blue")
 SAVE RECORD([Rect])

Quando o campo [Rect]Desc estiver incluído no seu formulário, os seguintes conteúdos são exibidos:

Você pode editar os valores que são exibidos diretamente no campo texto ou digitar dados objeto diretamente com a notação padrão; será formatado em JSON automaticamente quando pulsar a tecla [Tab]:



No entanto, a edição direta deve ser feita com cautela, já que os espaços fora de lugar, ou símbolos, irá resultar em um erro de análise JSON e não se salvam os dados editados:



Normalmente, ele é mais preciso para lidar com o conteúdo dos campos objeto através de comandos
Objetos (Linguagem) e JSON.

A maioria das características padrão de 4D suportam campos de tipo objeto. Mas algumas partes avançadas do aplicativo não está prontas para usar diretamente os campos objeto na versão atual. Estas peças são progressivamente atualizadas e estarão disponíveis em versões futuras.

As seguintes funções ou comandos suportam parcialmente  campos objeto através de fórmulas 4D:

Função/Comando
Editor de pesquisas
Editor de ordenação
Editor de importação/exportação
4D Write
4D Write Pro
4D View
4D Tags
PROCESS 4D TAGS

As seguintes funções e comandos 4D não admitem campos objeto:

Funções/Comandos
Editor de relatórios rápidos
Editor de etiquetas
Gráficos
PHP
Plugin SDK SQL Data Definition Language (CREATE TABLE)
SQL Data Manipulation Language (SELECT, INSERT, UPDATE)
SQL EXPORT DATABASE e SQL EXPORT SELECTION
RELATE ONE
RELATE MANY
ORDER BY
SCAN INDEX

 
PROPRIEDADES 

Produto: 4D
Tema: Criar uma estrutura de banco de dados

 
HISTÓRIA 

Modificado: 4D v15

 
ARTICLE USAGE

Manual de Desenho 4D ( 4D v16)
Manual de Desenho 4D ( 4D v16.1)
Manual de Desenho 4D ( 4D v16.3)