Tela de MVC com abas

Boa dia

Tenho uma tela em MVC com 3 tabelas, sendo: 1. PAI 2. FILHO (Com 2 abas) 3. NETO (Com 2 abas)

As abas da aba filho são diferenciadas pela data de vigência, ou seja, é uma aba dos dados vigentes e outra não vigentes. As abas neto funcionam da mesma forma, porém, vinculadas a filho por uma chave

Quando vou na ABA1-FILHO, as ABAS1 e 2 NETO correspondem a filho normalmente e funciona.

Quando vou na ABA2-FILHO, as ABAS1 e 2 NETO NÃO correspondem a filho e parece que a neto permanece ao cursor da ABA1-FILHO e não a ABA2.

Em anexo a tela para tentar entender um pouco

Alguém sabe como resolver?

Static Function ModelDef()
// Cria a estrutura a ser usada no Modelo de Dados
Local oStruZZO  := FWFormStruct( 1, 'ZZO', /*bAvalCampo*/, /*lViewUsado*/ )
Local oStruZD1  := FWFormStruct( 1, 'ZD1', /*bAvalCampo*/, /*lViewUsado*/ )
Local oStruZD2  := FWFormStruct( 1, 'ZD2', /*bAvalCampo*/, /*lViewUsado*/ )
Local oModel

// Cria o objeto do Modelo de Dados
oModel := MPFormModel():New( 'ACCSTA31M', /*bPreValidacao*/, /*bPosValidacao*/, /*bCommit*/, /*bCancel*/ )

// Adiciona ao modelo uma estrutura de formulário de edição por campo
oModel:AddFields( 'ZZOMASTER', /*cOwner*/, oStruZZO )

// Adiciona ao modelo uma estrutura de formulário de edição por grid
oModel:AddGrid( 'ZD1DETAIL_V'  , 'ZZOMASTER', oStruZD1, /*bLinePre*/, /*bLinePost*/, /*bPreVal*/, /*bPosVal*/, {|oGrid| LoadVigZD1(oGrid,1)}/*BLoad*/ )
oModel:AddGrid( 'ZD1DETAIL_A'  , 'ZZOMASTER', oStruZD1, /*bLinePre*/, /*bLinePost*/, /*bPreVal*/, /*bPosVal*/, {|oGrid| LoadVigZD1(oGrid,2)}/*BLoad*/ )

oModel:AddGrid( 'ZD2DETAIL_V' , 'ZD1DETAIL_V' /*cOwner*/, oStruZD2,/*bLinePre*/,/*bLinePost*/,/*bPre*/,/*bPost*/, {|oGrid| LoadVig(oGrid,1)} )
oModel:AddGrid( 'ZD2DETAIL_A' , 'ZD1DETAIL_A' /*cOwner*/, oStruZD2,/*bLinePre*/,/*bLinePost*/,/*bPre*/,/*bPost*/, {|oGrid| LoadVig(oGrid,2)} )

//Efetua a filtragem do Grid conforme regra repassada pela equipe de comissoes:
//********* ESTE METODO SOH IRA FUNCIONAR EM LIB MAIOR QUE 24/07/2013 **************
//oModel:GetModel( 'ZD2DETAIL_V' ):SetLoadFilter( NIL , " ( ZD2_VIGDE <= dDataBase .And. ZD2_VIGATE >= dDataBase) " , NIL )
//oModel:GetModel( 'ZD2DETAIL_A' ):SetLoadFilter( NIL , " ( dDataBase < ZD2_VIGDE .Or. dDataBase > ZD2_VIGATE ) " , NIL )

// Faz relaciomaneto entre os compomentes do model
If lFiltro
   oModel:SetRelation( 'ZD1DETAIL_V', { { 'ZD1_FILIAL', 'xFilial( "ZD1" )' },{ 'ZD1_AGN' , 'ZXO->ZXO_TIPAGN'  } ,  { 'ZD1_GRPINI' , 'ZZO_GRPINI'  } } , ZD1->( IndexKey( 1 ) )  )
   oModel:SetRelation( 'ZD1DETAIL_A', { { 'ZD1_FILIAL', 'xFilial( "ZD1" )' },{ 'ZD1_AGN' , 'ZXO->ZXO_TIPAGN'  } ,  { 'ZD1_GRPINI' , 'ZZO_GRPINI'  } } , ZD1->( IndexKey( 1 ) )  )
Else
   oModel:SetRelation( 'ZD1DETAIL_V', { { 'ZD1_FILIAL', 'xFilial( "ZD1" )' },   { 'ZD1_GRPINI' , 'ZZO_GRPINI'  } } , ZD1->( IndexKey( 2 ) )  )
   oModel:SetRelation( 'ZD1DETAIL_A', { { 'ZD1_FILIAL', 'xFilial( "ZD1" )' },   { 'ZD1_GRPINI' , 'ZZO_GRPINI'  } } , ZD1->( IndexKey( 2 ) )  )   
EndIf

oModel:SetRelation( 'ZD2DETAIL_V', { { 'ZD2_FILIAL', 'xFilial( "ZD2" )' }, { 'ZD2_AGN' , 'ZD1_AGN'  }, { 'ZD2_GC', 'ZD1_GRPINI' }, { 'ZD2_CODPAP', 'ZD1_CODPAP'}, {'ZD2_SEQ', 'ZD1_SEQ'}  } , ZD2->( IndexKey( 2 ) )  )
oModel:SetRelation( 'ZD2DETAIL_A', { { 'ZD2_FILIAL', 'xFilial( "ZD2" )' }, { 'ZD2_AGN' , 'ZD1_AGN'  }, { 'ZD2_GC', 'ZD1_GRPINI' }, { 'ZD2_CODPAP', 'ZD1_CODPAP'}, {'ZD2_SEQ', 'ZD1_SEQ'}  } , ZD2->( IndexKey( 2 ) )  )

// Adiciona a descricao do Modelo de Dados
oModel:SetDescription( 'Cadastro de Grupo de Comissão' )

// Adiciona a descricao do Componente do Modelo de Dados
oModel:GetModel( 'ZZOMASTER' ):SetDescription( 'Cabeçalho do Grupo de Comissão' )
oModel:GetModel( 'ZD1DETAIL_V' ):SetDescription( 'Grupos x Percentuais Vigentes'  )
oModel:GetModel( 'ZD1DETAIL_A' ):SetDescription( 'Grupos x Percentuais Antigos'  )
oModel:GetModel( 'ZD2DETAIL_V' ):SetDescription( 'Regras Vigentes'  )
oModel:GetModel( 'ZD2DETAIL_A' ):SetDescription( 'Regras Antigas'  )

//Retirar a obrigatoriedade das grades
oModel:GetModel( 'ZD1DETAIL_V' ):SetOptional( .T. )
oModel:GetModel( 'ZD1DETAIL_A' ):SetOptional( .T. )
oModel:GetModel( 'ZD2DETAIL_V' ):SetOptional( .T. )
oModel:GetModel( 'ZD2DETAIL_A' ):SetOptional( .T. )

oModel:SetPrimaryKey({'ZZO_FILIAL'},{'ZZO_GRPINI'})

// Nao Permite Incluir, Alterar ou Excluir linhas na formgrid
// Foi criado um parametro para o caso da necessidade de se alterar registros antigos.

Return oModel
  • Pode publicar seu ModelDef?

    Renan   17 de jul de 2017
  • Utilize a TAG Code

    Atila Augusto [moderador]   17 de jul de 2017
  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 SigaOAdvpl!

1 resposta

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