4D v16.3

RELATE MANY

Página Inicial

 
4D v16.3
RELATE MANY

RELATE MANY 


 

RELATE MANY ( tabela1 | campo1 ) 
Parâmetro Tipo   Descrição
tabela1 | campo1  Tabela, Campo in Tabela para estabelecer todas as relações Um a Muitos, ou campo UM

RELATE MANY tem duas sintaxes.

A primeira sintaxe, RELATE MANY(tabela1), estabelece todas as relações Um a Muitos para tabela1. Muda a seleção atual para cada tabela que tenha uma relação Um a Muitos com tabela1. As seleções atuais nas tabelas Muitos dependem do valor atual de cada campo relacionado na tabela Um. Cada vez que este comando for executado, as seleções atuais das tabelas Muitos são modificadas.

A segunda sintaxe, RELATE MANY(campo1), estabelece a relação Um a Muitos para campo1. Modifica a seleção atual para cada tabela que tenha uma relação com campo1. Isto significa que os registros relacionados se torna seleção atual da tabela Muitos.

Nota: Se a seleção atual da tabela Um está vazia no momento da execução de RELATE MANY, o comando não faz nada

 

Nota: Este comando não é compatível com campos tipo Objeto

Exemplo  

No seguinte exemplo, três tabelas estão relacionadas com relações automáticas. As duas tabelas [Pessoas] e [Partes] tem uma relação Muitos a Um com a tabela [Empresas].

Este é o formulário para a tabela [Empresas] que mostrará os registros relacionados das tabelas [Pessoas] e [Partes].

Quando são mostrados os formulários para Pessoas e Partes, os registros relacionados para as tabelas [Pessoas] e [Partes] se carregam e se transformam as seleções atuais destas tabelas.

Por outra parte, os registros relacionados não são carregados se um registro da tabela [Empresas] for selecionado por programação. Neste caso, deve utilizar o comando RELATE MANY


Notas:
  • Quando o comando RELATE MANY é aplicado a uma seleção vazia, o comando não é executado e a seleção para a tabela Muitos não muda.
  • Para que o comando funcione, os campos chave estrangeira (campos Muitos) devem estar indexados.

Por exemplo, o método a seguir realiza um loop para cada registro da tabela [Empresas]. Para cada empresa, aparece uma caixa de alerta. A caixa de alerta mostra o número de pessoas na empresa (o número de registros relacionados na tabela [Pessoas]), e o número de partes que fornecem (o número de registros na tabela [Partes] que estão relacionados). No exemplo, o argumento para o comando ALERT é impresso em varias linhas por claridade.

Note que é necessário o comando RELATE MANY, mesmo que as relações sejam automáticas.
 ALL RECORDS([Empresas]` Selecionar todos os registros na tabela
 ORDER BY([Empresas];[Empresas]Nome) ` Ordenar os registros em ordem alfabética
 For($i;1;Records in table([Empresas])) ` Loop uma vez para cada registro
    RELATE MANY([Empresas]Nome) ` Selecionar os registros relacionados
    ALERT("Company: "+[Empresas]Nome+Char(13)+"Pessoas na empresa: "
    +String(Records in selection([Personas]))+Char(13)+
    "Número de partes que são fornecidas: "+String(Records in selection([Partes])))
    NEXT RECORD([Empresas]` Ir ao seguinte registro
 End for



Ver também 

OLD RELATED MANY
RELATE ONE

 
PROPRIEDADES 

Produto: 4D
Tema: Relações
Número 262

O comando altera a seleção atualThis command can be run in preemptive processes

 
HISTÓRIA 

Criado por: < 4D v6

 
ARTICLE USAGE

Manual de linguagem 4D ( 4D v16)
Manual de linguagem 4D ( 4D v16.1)
Manual de linguagem 4D ( 4D v16.2)
Manual de linguagem 4D ( 4D v16.3)