Relacionamentos e chave primária no MVC
Distingue a identidade do modelo da ligação entre seus submodelos.
Visão geral
SetPrimaryKey define a identidade do primeiro FormField; não recebe uma chave por grid. Quando SX2 já declara a chave, o framework pode aproveitá-la. SetRelation define como carregar e atualizar a ligação do detalhe com seu proprietário, incluindo a expressão de ordenação do detalhe. Use xFilial da tabela filha, pois compartilhamento do mestre e do detalhe pode diferir. O exemplo é configuração não invocada de ZZ1/ZZ2 hipotéticas, cujos campos e índices precisam existir no dicionário. Configure antes de Activate e teste inclusão, alteração, cópia e exclusão. (Fontes: refs. 1–2.)
Exemplo comentado
#Include "Protheus.ch"
User Function Ed615()
// Modelo ZZ1/ZZ2 ja definido e ainda nao ativado; blocos nao invocados.
Local bChave := {|oModelo| oModelo:SetPrimaryKey({"ZZ1_FILIAL","ZZ1_COD"})}
Local bRelacao := {|oModelo| oModelo:SetRelation("ZZ2DETAIL", ;
{{"ZZ2_FILIAL",'xFilial("ZZ2")'}, {"ZZ2_COD","ZZ1_COD"}}, ;
"ZZ2_FILIAL+ZZ2_COD+ZZ2_ITEM")}
ConOut(ValType(bChave)+ValType(bRelacao))
Return NilCria dois blocos, BB; não cria tabelas nem configura um modelo real. Em revisão: exemplo editorial não compilado nem executado em Protheus. Conferir includes, release, RDD e contexto antes de homologar.
- Confirme IDs, expressões, tipos, duplicidades e integridade. Não use a chave do mestre como se fosse a ordem inteira do detalhe.
- Em revisão: exemplo editorial não compilado nem executado em Protheus. Conferir includes, release, RDD e contexto antes de homologar.

Comentários
Ainda não há comentários aprovados.
Entre com Google ou Microsoft para comentar.