Setvaleu - tabela temporaria

Boa tarde tenho um codigo MVC que usa tabela temporaria buscando informações da sys_company, mas esta apresentando erro ao clicar no botão incluir

argumento #2 , parâmetro lForce erro, previsto L->C on FWFORMGRIDMODEL:SETVALUE(FWFORMGRIDMODEL.PRX) 27/06/2024 17:13:40 line : 2272

o trecho do codigo do setvalue é

If Len(aEmpresas) > 0
// Cria um modelo de dados temporário
oDataModel := oModel:GetModel(‘SBMDETAIL’)
If oDataModel != Nil
For nI := 1 To Len(aEmpresas)
oDataModel:SetValue( ‘SBMDETAIL’,‘M0_CODFIL’, aEmpresas[nI][1])
//oDataModel:SetValue( ‘SBMDETAIL’,‘M0_NOMECOM’, aEmpresas[nI][2])
//oDataModel:SetValue( ‘SBMDETAIL’,‘M0_ENDENT’, aEmpresas[nI][3])
Next
EndIf
EndIf

@tiagocarvalho882 o erro é porque você já está no submodelo, então o método é direto sem passar o modelo como parâmetro:

oDataModel:SetValue('M0_CODFIL’, aEmpresas[nI][1])

Outra coisa o laço deve precisar adicionar novas linhas, do jeito que está montado está apenas sobrescrevendo o mesmo registro com as diferentes empresas. Usa o método AddLine() para adicionar uma nova linha para depois disso preenchê-la.

1 curtida

@cirilorocha , obrigado pela ajuda , mas já tentei passar sem o submodelo , mas apresenta o erro seuinte:

erro no parâmetroFWFormModel: Ative a classe (Activate) antes de utilizar este método on FWFORMMODEL:SETVALUE(FWFORMMODEL. PRX)

Você precisa ativar um modelo MVC antes de realizar alterações nos dados, para isso, você deve especificar o tipo de operação que está fazendo (inclusão - MODEL_OPERATION_INSERT, alteração - MODEL_OPERATION_UPDATE ou exclusão - MODEL_OPERATION_DELETE) e chamar o método Activate.

Exemplo:

oModel:SetOperation(MODEL_OPERATION_UPDATE) // alteração

If(oModel:Activate()) // Ativa o modelo

    If Len(aEmpresas) > 0

        // Cria um modelo de dados temporário
        oDataModel := oModel:GetModel(‘SBMDETAIL’)

        If oDataModel != Nil

            For nI := 1 To Len(aEmpresas)

                oDataModel:SetValue(‘M0_CODFIL’, aEmpresas[nI][1])

            Next nI

        EndIf

    EndIf

EndIf