Versão atual:

SetPrimaryKey em MVC

Boa tarde!

Estou com uma dúvida quanto ao método SetPrimaryKey usado pela classe FwFormModel

Caso eu criar um formulário onde a tabela não possua X2_UNICO e informe a chave primária por esse método, o sistema não acata e continua permitindo o usuário informar cadastros duplicados.

Segue exemplo da definição do modelo:

Static Function ModelDef
Local oModel    := Nil
Local oStruct   := FwFormStruct(1, 'ZAB')

    oModel := MpFormModel():New('TMSA01MVC',/*PreValid*/,/*Valid*/,/*Commit*/)

    oModel:AddFields('ModelMaster',, oStruct)
    oModel:SetPrimaryKey({'ZAB_FILIAL', 'ZAB_ANOMES'})    
    oModel:GetModel('ModelMaster'):SetDescription('Custo de Frete e Logístico')

    oModel:SetDescription('Cadastro de Frete e Custo Logístico')

Return(oModel)

Sei que é possível definir uma validação para o campo ZAB_MESANO para que o campo faça essa validação, mas fiquei com dúvida quanto ao funcionamento desse método.

Alguém saberia me explicar por quê deu errado?


Cenário 1:

oModel:SetPrimaryKey({'ZAB_FILIAL', 'ZAB_ANOMES'})
SX2->X2_UNICO = ''

Sistema permite a inclusão de registros duplicados.

Cenário 2:

oModel:SetPrimaryKey({'ZAB_FILIAL', 'ZAB_ANOMES'})
SX2->X2_UNICO = 'ZAB_FILIAL+ZAB_ANOMES'

Sistema NÃO permite a inclusão de registros duplicados, gerando o error log: Cannot insert duplicate key row in object 'dbo.ZAB010' with unique index 'ZAB010_UNQ'. The duplicate key value is ( , 201910, 0)


Na documentação está descrito da seguinte maneira: Se a tabela do submodelo for um metadado e possuir chave primária informada no SX2, não é necessário fazer uso desse método pois o MVC irá considerar o que está declarado no SX2.

Minha dúvida é: Se a origem for metadado, a chave primária sempre irá considerar o campo X2_UNICO e irá ignorar esse método ou só irá considerar o campo X2_UNICO se o mesmo estiver preenchido?

Pois com base nesse teste, o sistema está considerando o campo X2_UNICO sempre, independente se está preenchido ou não. Ignorando o conteúdo do método.

Grato pela atenção.

Versões (2):

Ver a versão formatada

SetPrimaryKey em MVC

Comentário

new question