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"})