MVC - Cadastro com 3 tabelas Modelo X

Muito boa tarde!

Estou aprendendo sobre MVC, e fiz um fonte no modelo X contando com 3 tabelas,

ML1 - Fabricante ML2 - Veiculos ML3 - Motorista

Queria que uma vez cadastrado um veiculo numa montadora e com um motorista, este não aparecesse para ser incluido em outra montadora.

Abaixo o trecho de código que relaciono estas tabelas.

Local oStruPai := FwFormStruct(1,cTabPai) Local oStruFilho := FwFormStruct(1,cTabFilho) Local oStruNeto := FwFormStruct(1,cTabNeto) Local aRelFilho := {} Local aRelNeto := {} Local oModel := Nil Local oModelML2 := Nil Local bPre := Nil Local bPos := Nil Local bCommit := Nil Local bCancel := Nil

oModel := MPFormModel():New("xMVC03M", bPre, bPos, bCommit, bCancel) oModel:AddFields("ML1MASTER", /cOwner/ , oStruPai) oModel:AddGrid("ML2DETAIL","ML1MASTER" , oStruFilho) oModel:AddGrid("ML3DETAIL","ML2DETAIL" , oStruNeto) oModel:SetPrimaryKey({})

//Relação Pai/Filho (ML1/ML2) oStruFilho:SetProperty("ML2_CODFAB", MODEL_FIELD_OBRIGAT, .F.) aAdd(aRelFilho, {"ML2_FILIAL","FWxFilial('ML2')"}) aAdd(aRelFilho, {"ML2_CODFAB", "ML1_CODFAB"}) oModel:SetRelation("ML2DETAIL",aRelFilho, ML2->((IndexKey(1))))

//Fazendo o filtro na grid, com o código do fabricante oModel:GetModel('ML2DETAIL'):SetLoadFilter(, "ML2_CODFAB ='" + GetSxeNum("ML1", "ML1_CODFAB") + "' " )

//Relação Filho/Neto (ML2/ML3) aAdd(aRelNeto, {"ML3_FILIAL", "FwXFilial('ML3')"}) aAdd(aRelNeto, {"ML3_CODVEI", "ML2_CODVEI"}) oModel:SetRelation("ML3DETAIL",aRelNeto, ML3->((IndexKey(1))))

//Definindo campos unicos da linha //oModel:GetModel("ML1MASTER"):SetUniqueLine({"ML1_CODFAB"}) oModel:GetModel("ML2DETAIL"):SetUniqueLine({"ML2_CODVEI"}) oModel:GetModel("ML3DETAIL"):SetUniqueLine({"ML3_CODMOT"})

compartilhar
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do TOTVS DevForum!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags mvc mvcmodelox mvcx advpl protheus ou faça a sua própria pergunta.