Como encerrar um LoadGrid - MVC sem dicionário de dados

Olá Pessoal,

Estou com problema em uma validação, que encerra a função LoadGrid que carrega a Grid em uma tela MVC sem dicionário de dados.

basicamente se não achar o fornecedor quero que a tela não carregue:


Static Function loadGrid(oGridModel, lCopy)
    Local aLoad          := {}
    Local aPedido      := {}
    Local nX          := 1
    Local cOrigem     := SPACE(LEN(SC7->C7_ORIGEM))

    Local nLoja       := 0
    Local nPedido     := 0
    Local nItem       := 0
    Local cUnid       := ""
    Local cProduto    := ""
    Local cDesc       := ""
    Local dEmissao    := Date()
    Local dEntrega    := Date()

    Local cLoja    := '01'
    Local cProd    := '000005'

    Local oNFLPC  := Nil
    Local oPedido := Nil

    oNFLPC := NFLPurchaseOrderControl():New() //Classe Controle Pedido de Compra.

    If oNFLPC:loadPurchaseOrderForNFe(AllTrim(cFornece), cLoja, cProd) //- Verfica se existe fornecedor, se retornar falso apresenta o FWAlertWarning

        aPedido := oNFLPC:getItemPedido()         // Método retorna Array dos dados obtido na consulta.
        oPedido := NFLPurchaseOrderEntity():New() // Classe com os Campos Pedido de compra.

        For nX := 1 to len(aPedido)
            oPedido := aPedido[nX]

            nLoja       := oPedido:getLoja()
            nPedido        := oPedido:getPedido()
            nItem       := oPedido:getItem()
            cUnid       := oPedido:getUnid_Medida()
            cProduto    := oPedido:getProduto()
            cDesc       := oPedido:getDesc_Prod()
            dEmissao    := oPedido:getEmissao()
            dEntrega    := oPedido:getEntrega()

            aAdd(aLoad,{0,{;
                .F.,;             // [01] Check
            nLoja,;               // [02] Loja
            nPedido,;             // [03] Pedido
            nItem,;               // [04] Item
            cUnid,;               // [05] Unidade
            cProduto,;            // [06] Produto
            "               ",;   // [07] Produto x Forn
            cDesc,;               // [08] Descrição
            "",;                  // [09] Condição de Pagamento
            "",;                  // [10] Descrição
            0,;                   // [11] Saldo Total PC
            0,;                   // [12] Saldo Restante
            0,;                   // [13] Valor. Unit.
            STOD(dEmissao),;      // [14] Emissão
            STOD(dEntrega),;      // [15] Entrega
            cOrigem,;             // [16] Origem
            }})

        Next nX
    Else
        FWAlertWarning("Não existe pedido de compra para o fornecedor e produto que atenda a essa NF-e.","Atenção!")
        Return Nil
    EndIf

Return aLoad

Ao cair no Else apresenta o erro:

THREAD ERROR ([1880], eduar, AURORA) 26/01/2023 15:27:18 argument error in function Len() on LOAD(FWFORMGRIDMODEL.PRX) 06/10/2021 13:57:40 line : 5296

:warning: Atenção: Esta publicação foi transferida automaticamente do fórum antigo, mas os anexos não foram incluídos.

Eduarda pelo que entendi do seu fonte essa situação precisa ser verificada antes da carga, antes da ativação do modelo, eu uso aqui da seguinte forma:

oModel:SetVldActivate({ |oMod| PreVld( oMod ) })

Você pode criar esse objeto NFLPurchaseOrderControl() como variável privada, e deixá-lo instanciado após a validação, e quando for fazer o load utilizá-lo para alimentar os dados que você precisa.

Acredito que esta seja a melhor forma de fazer o que você precisa, cada necessidade no seu devido lugar, validação no início do processo, e carga dos dados somente para isso. Essa prática de manter cada fato no seu lugar ajuda a termos menos problemas nos códigos, colocar uma validação durante a carga pode gerar esse tipo de problema.

Obrigada Cirilo ajudou muito, utilizei o SetVldActivate com a validação assim meu LoadGrid fica somente com a carga dos Dados.