Campos
Definição
A área "Definição" da paleta Inspetor configura as propriedades básicas dos campos. Algumas propriedades estão disponíveis apenas quando certos tipos de campos são selecionados.
Cor
Você pode atribuir uma cor a cada nome de campo. As cores podem ser usadas para distinguir campos de acordo com seu papel ou atributos. Por exemplo, você pode usar uma cor para campos únicos e outra para campos obrigatórios. Também é possível atribuir uma cor individualmente para cada tabela e para cada relação.
Para definir a cor de um ou mais campos, selecione-os e escolha uma cor usando:
- O botão Cor na barra de ferramentas do editor de Estrutura,
- O comando Cor no menu de contexto dos campos,
- A opção Cor na paleta Inspetor.
A opção Automático pode ser usada para aplicar a cor padrão original ao nome do campo.
Invisível
Você pode tornar um campo invisível no ambiente de Aplicação e para os plug-ins selecionando a propriedade Invisível para este campo. O atributo Invisível oculta o campo do usuário. Um campo com este atributo não aparece em nenhum editor padrão do 4D e caixas de diálogo que aparecem no ambiente de Aplicação. Além disso, ele não pode ser usado por plug-ins. Os seguintes editores e caixas de diálogo no ambiente de Aplicação são afetados:
- Todos os editores de Consulta,
- O editor de Ordenação,
- O editor de Etiquetas,
- Os Relatórios rápidos,
- As caixas de diálogo de Exportação e importação de dados,
- O editor de Fórmulas.
Em cada um desses locais, o usuário não consegue ver ou escolher o campo. Por exemplo, o usuário não pode escolher um campo invisível para um design criado com o editor de Etiquetas.
Nota: Ao usar os editores, os usuários têm a opção de salvar suas especificações (por exemplo, a consulta ou ordenação criada) em arquivos de disco. Nesse caso, quaisquer campos especificados que posteriormente sejam declarados invisíveis ainda serão usados na operação. Além disso, os usuários podem digitar os nomes dos campos invisíveis no editor de Fórmulas.
Campos invisíveis são exibidos em itálico na janela do editor de Estrutura.
Único
Use o atributo Único quando você quiser garantir que cada registro tenha um valor diferente (único) neste campo. O atributo Único deve ser usado para o campo que identifica exclusivamente cada registro na tabela. O atributo Único é útil para validar campos que armazenam números de Funcionário, números de Seguro Social, números de Pedido de Compra, e assim por diante.
O atributo Único impede a duplicação de valores vazios assim como de quaisquer entradas. Um campo vazio não pode ser duplicado em outro registro.
A barra de informações do editor de Estrutura indica se a propriedade Único está marcada para um campo.
No 4D, campos com o atributo Único devem ser indexados. Um sinal visual indica que um índice será criado (se ainda não existir) quando você selecionar o atributo Único para um campo:

O editor impede que você remova o índice de um campo Único (opção Nenhum ou comandos de remoção não disponíveis para índices quando tal campo está selecionado). Se você quiser remover o índice de um campo único, é necessário remover antes o atributo Único.
Expor como recurso REST
Esta opção controla se o campo é exposto para requisições REST.
- Você também pode definir esta opção no nível da tabela.
- Esta opção é usada no contexto dos recursos de datastore remoto do ORDA.
Rejeitar entrada de valor NULL
Esta propriedade é usada para impedir o armazenamento de valores NULL. Quando esta propriedade está marcada para um campo, não será possível armazenar o valor NULL neste campo. Se um campo com este atributo receber um valor NULL, um erro será gerado. Esta propriedade de baixo nível corresponde exatamente ao atributo NOT NULL do SQL.
No 4D, os campos também podem ter o atributo "Obrigatório" (veja abaixo). Os dois conceitos são semelhantes, mas seu escopo é diferente: o atributo "Obrigatório" é um controle de entrada de dados, enquanto o atributo "Rejeitar entrada de valor NULL" atua no nível do mecanismo do banco de dados.
Mapear valores NULL para valores em branco
Esta propriedade torna o processamento de valores "em branco" e valores NULL consistente para o campo via a linguagem 4D.
Não é recomendado usar esta opção em desenvolvimentos baseados em ORDA, onde os valores NULL são totalmente suportados.
Por razões de compatibilidade, valores NULL armazenados em tabelas do banco de dados 4D são automaticamente convertidos em valores padrão quando manipulados via a linguagem 4D. Por exemplo, no caso da seguinte instrução:
$myTextVar:=[myTable]myTextField
... se o campo myTextField contiver um valor NULL, a variável $myTextVar conterá "" (string vazia). Os valores padrão dependem do tipo de dado. Por outro lado, esse mecanismo em princípio não se aplica ao processamento realizado no nível do mecanismo do banco de dados 4D, como consultas. De fato, buscar por um valor “em branco” (por exemplo $myvalue=0) não encontrará registros que armazenam o valor NULL, e vice-versa. Quando ambos os tipos de valores (valores padrão e NULL) estão presentes nos registros para o mesmo campo, certos processamentos podem ser alterados ou exigir código adicional. Para evitar esses inconvenientes, a opção Mapear valores NULL para valores em branco pode ser usada para padronizar todo o processamento na linguagem 4D. Esta propriedade pode ser usada para estender o princípio de uso de valores padrão para todo o processamento. Campos contendo valores NULL serão sistematicamente considerados como contendo valores padrão.
- Os campos Alpha no formato UUID que não são gerados não são considerados como NULL (veja formato UUID).
- Esta propriedade é considerada em um nível muito baixo do mecanismo do banco de dados. Ela atua mais particularmente sobre o comando
Is field value Null.
Autoincremento
A propriedade Autoincremento gera números sequenciais na tabela. Pode ser usada com campos dos tipos Integer, Long Integer e Integer 64 bits.
Um campo com esta propriedade é automaticamente incrementado cada vez que um registro é criado na tabela. O número sequencial atribuído ao campo corresponde ao "contador interno" da tabela, mantido pelo 4D. Este contador interno também pode ser acessado usando os comandos 4D Sequence number e Get database parameter e usando o marcador #N (veja Valores padrão).
Os números atribuídos nunca são reutilizados na tabela, mesmo quando registros são excluídos. Números gerados durante uma transação que é cancelada são "perdidos". A propriedade Autoincremento corresponde ao atributo SQL AUTO_INCREMENT e pode ser especificada usando esta linguagem. O rótulo AUTO INCREMENT também aparece na área de informações SQL do Inspetor para campos com este atributo.
Embora sejam únicos na tabela quando gerados, números autoincrementados NÃO são recomendados para preencher campos de chave primária de ID único para registros, especialmente quando a estrutura é usada com vários arquivos de dados, pois nesse caso o contador interno pode ser dessincronizado. Além disso, o contador interno de uma tabela pode ser redefinido usando o comando SET DATABASE PARAMETER. Para criar IDs únicos de registros, é altamente recomendado usar UUIDs, que oferecem as seguintes vantagens:
- UUIDs geram IDs que são únicos entre todas as tabelas e bancos de dados.
- Para gerar UUID você pode combinar a opção Auto UUID (veja abaixo) e o comando
Generate UUID.
Armazenado no registro, arquivo de dados ou fora do arquivo de dados
Este menu de opções está disponível apenas para campos dos tipos Text, BLOB, Picture e Object type. Você pode definir um local de armazenamento para os dados do campo.
No registro
Os dados são armazenados com cada registro. Geralmente, você não deve escolher esta opção para campos que contenham dados volumosos. No entanto, ela é selecionada por padrão para campos Text porque esse tipo de armazenamento é necessário se você quiser usar índices B-Tree "padrão". O menu de seleção de índice é oculto quando dados Text são armazenados fora dos registros.
No arquivo de dados
Os dados são armazenados no arquivo de dados, mas fora de cada registro. Esta opção é selecionada por padrão para campos BLOB e Picture. Você pode otimizar o funcionamento do banco de dados ao trabalhar com dados volumosos armazenando textos, imagens, Blobs e objetos fora dos registros.
Fora do arquivo de dados
Os dados são armazenados em arquivos separados, fora do arquivo de dados. Esta opção é descrita em Armazenamento externo de dados.
- Esta opção só é considerada para novos registros criados posteriormente na tabela. Quando você define esta opção para uma tabela onde registros já foram inseridos, eles não são modificados e a tabela funcionará em modo misto de armazenamento interno/externo. Se você quiser estender este modo também para os registros existentes, é necessário compactar os dados usando a opção Forçar atualização dos registros.
- Dados armazenados fora do arquivo de dados não são tratados pelo recurso de criptografia de dados, se estiver habilitado.
- Esta opção não está disponível para campos do tipo Object.
Tamanho máximo de armazenamento interno
Como descrito na seção anterior, para fins de otimização, por padrão os dados dos campos dos tipos BLOB, Picture, Text e Object são armazenados fora dos registros ou fora do arquivo de dados. Nesta configuração, pode ser interessante, por razões de desempenho, "forçar" os dados a serem armazenados nos registros quando seu tamanho for limitado. Este funcionamento é particularmente otimizado quando sua aplicação lida com dados BLOB, Picture, texto ou objeto de tamanhos inconsistentes. O valor inserido nesta área representa o tamanho em bytes abaixo do qual os dados do campo serão armazenados no registro. Por exemplo, se você inserir 30.000 para um campo de imagem, uma imagem de 20 KB será armazenada no registro e uma imagem de 40 KB será armazenada no local definido nas configurações (no arquivo de dados ou fora dele). Por padrão, o valor é 0: todos os dados do campo são armazenados fora dos registros.
Formato UUID
Esta propriedade está disponível para campos do tipo Alpha. Ela indica que o campo armazena identificadores UUID. Os dados armazenados devem estar em conformidade com o formato UUID (combinação de 32 letras (A-F, a-f) e números (0-9)). Para isso, você pode usar a propriedade Auto UUID, o comando Generate UUID ou qualquer algoritmo personalizado.
Se você tentar armazenar uma string que não esteja em conformidade com o formato UUID neste campo, o 4D a converte automaticamente. A mesma operação também é aplicada ao conteúdo de campos existentes que não sejam Alpha e que sejam transformados em campos UUID: ao carregar os registros, os valores são reformatados e então armazenados novamente.
Campos com a propriedade de formato UUID podem ser exibidos em formulários e permanecem editáveis. Seu conteúdo aparece em caracteres maiúsculos. Você deve passar por uma variável se quiser exibir caracteres minúsculos.
- Campos com o formato UUID não podem ser associados a índices de palavras-chave nem a listas de escolha.
- Você pode criar uma relação entre dois campos que ambos tenham o formato UUID, mas não pode vincular um campo Alpha padrão a um campo com formato UUID.
- Um campo UUID que é inicializado (gerado) e que tem valor NULL retorna uma string vazia. Um campo UUID que não é gerado não é NULL e retorna "000..." (o número de zeros é igual ao número de caracteres). A propriedade não é considerada para campos UUID não gerados (exibição de "000...").
Auto UUID
Esta opção só está ativa quando você seleciona a propriedade Formato UUID. Você pode usar a propriedade Auto UUID para gerar automaticamente um número UUID no campo.
Este número é calculado automaticamente nos seguintes contextos:
- quando um registro é criado,
- quando um registro é carregado cujo campo UUID contém um valor Null. Isso ocorre mais particularmente para registros criados e salvos antes do campo UUID ser adicionado na tabela, quando a opção Mapear valores NULL para valores em branco estava desmarcada. Naturalmente, em todos os casos, o registro deve ser salvo para que o UUID gerado automaticamente seja salvo no campo.
Quando dados são importados, mesmo com esta propriedade selecionada, o 4D não gera um novo número, mas usa os valores importados (e os transforma quando necessário se o formato não for válido). No entanto, se o valor do campo importado estiver vazio, um UUID é gerado automaticamente.
Class

This property is available for fields of type Object (in 4D projects only). It allows you to define a class-typed object field, enhancing code completion, syntax checking, and runtime validation when typing code that involves object fields.
You can enter any valid class name in this property, including:
- User classes (e.g.
cs.MyClass) - Built-in 4D classes (e.g.
4D.File,4D.Folder) - Exposed component-defined classes (e.g.
cs.MyComponent.MyClass)
If you enter an invalid class name, a warning is triggered and the input is rejected.
Non-streamable classes such as ORDA Data Model classes, file handles, web server... cannot be associated to object fields.
In your code, when assigning a value to a class-typed object field, 4D verifies that it belongs to the declared class. If not or if the object has no class, an error is triggered. Accessing unknown attributes will also raise syntax errors.
To retrieve the associated class name at runtime, use the classID property, for example ds.MyTable.MyField.classID.
Classe 4D.Vector
Se você atribuir 4D.Vector como a classe de um campo do tipo Object, você define um campo vetor. Esses campos armazenam embeddings e podem ser usados para consultar dados usando recursos de IA. Consulte a documentação da classe 4D.Vector para ver como consultar com vetores.
Observe que o componente 4D Embedding Studio pode ajudar você a configurar e atualizar seus campos 4D.Vector.
Quando você atribui 4D.Vector como a classe de um campo do tipo Object, um ícone específico é exibido como tipo de campo no editor de Estrutura: ![]()