RELATE ONE aceita duas sintaxes.
A primeira sintaxe do comando, RELATE ONE(tabelaN), ativa todas as relações Muitos a Um automáticas para a tabela tabelaN no processo atual. Isso significa que para cada campo da tabela tabelaN que tenha uma relação Muitos a Um automática, o comando selecionará o registro relacionado em cada tabela relacionada. Isso muda o registro atual na(s) tabela(s) relacionadas para o processo.
A segunda sintaxe, RELATE ONE(campoN{;discriminante}), busca o registro relacionado com campoN. Não é necessário que a relação seja automática. Se existir, RELATE ONE carrega em memória o registro relacionado, dolo o registro e a seleção atual da tabela.
O parâmetro opcional discriminante só pode ser especificado se campoN é de tipo Texto ou Alfa. O campo discriminante deve ser um campo da tabela relacionada e pode ser de tipo Alfa, Texto, Numérico, Data, Hora, ou Booleano; Não pode ser tipo Imagem ou BLOB.
Se campoN é especificado e se mais de um registro é encontrado na tabela relacionada, RELATE ONE mostra uma lista de registros que correspondem ao valor de campoN, permitindo ao usuário selecionar um registro. Nessa lista, a coluna da esquerda mostra os valores dos campos relacionados, e a coluna da direita os valores de discriminante.
Seria possível encontrar mais de um registro se campoN termina com o caractere arroba (@). Se só houver uma coincidência, não aparece a lista. Especificar um campo em discriminante é o mesmo que definir um campo discriminante na caixa de diálogo de definição das propriedades de uma relação no ambiente Desenho. Para maior informação sobre a definição de um campo discriminante, consulte o Manual de Desenho de 4D.
No exemplo a seguir, a tabela [Faturas] está relacionada a tabela [Clientes] por duas relações manuais. Uma relação parte do campo [Faturas]Cobrar de ao campo [Clientes]ID, e a outra relação vai de [Faturas]Enviar a [Clientes]ID.
Como as duas relações apontam a mesma tabela, [Clientes], não é possível obter a informação de faturação e envio ao mesmo tempo. Portanto, a informação deve ser mostrada utilizando variáveis. Se o formulário contiver os campos [Clientes], só se mostrarão os valores resultantes da segunda relação.
Os seguintes métodos são os métodos de objeto dos campos [Faturas]Cobrar de e [Faturas]Enviar a. Estes métodos são executados quando são introduzidos campos.
Este é o método de objeto para o campo [Faturas]Cobrar de:
RELATE ONE([Faturas]Cobrar de
vDireccion1:=[Clientes]Direção
vCiudad1:=[Clientes]Cidade
vEstado1:=[Clientes]Estado
vCodigo1:=[Clientes]CodigoPostal
Este é o método de objeto para o campo [Faturas]Enviar a:
RELATE ONE([Faturas]Enviar a)
vDireccion2:=[Clientes]Direção
vCiudad2:=[Clientes]Cidade
vEstado2:=[Clientes]Estado
vCodigo2:=[Clientes]CodigoPostal
Se o comando for executado corretamente e se os registros relacionados forem carregados, a variável sistema OK toma o valor 1. Se o usuário clicar em Cancelar na caixa de diálogo de selecção do registro (que aparece quando o registro relacionado tiver sido modificado), a variável OK toma o valor 0.