Versão atual:

Errorlog com MVC utilizando as tabelas SC5 e SC6

Estou tentando criar um MVC das tabelas SC6 e SC5.

Consigo visualizar os registros no browse, mas quando chamo as funções para alterar ou visualizar algum pedido, recebo um errorlog com a seguinte mensagem: "invalid field name in Alias SC6->C6_CODINF"

Já usei o mesmo código, trocando apenas as tabelas (SF2 e SD2 por exemplo) e funcionou.

Tentei rodar o código em uma outra base e também recebi o mesmo errorlog.

Segue o código que estou utilizando.

#include 'protheus.ch'
#include 'FWMVCDEF.CH'

user function ZMVCSC5()
    //Declarando o browse
    Local oBrowse

    //Setando o browe e apontando para SC5
    oBrowse := FWMBrowse():New()
    oBrowse:SetAlias('SC5')

    //Ativando o browse
    oBrowse:Activate()
return NIL

/*--------------------------------------------------------------------------------------*
| Func:    MenuDef                                                                            |
| Desc:                                                                                    |
*--------------------------------------------------------------------------------------*/
Static Function MenuDef()
    Local aRotina := {}

    aAdd( aRotina, { 'Visualizar'    , 'VIEWDEF.ZMVCSC5', 0, 2, 0, NIL } )     
    aAdd( aRotina, { 'Alterar'       , 'VIEWDEF.ZMVCSC5', 0, 4, 0, NIL } ) 
    aAdd( aRotina, { 'Excluir'         , 'VIEWDEF.ZMVCSC5', 0, 5, 0, NIL } )
    aAdd( aRotina, { 'Imprimir'     , 'VIEWDEF.ZMVCSC5', 0, 8, 0, NIL } )
    aAdd( aRotina, { 'Copiar'         , 'VIEWDEF.ZMVCSC5', 0, 9, 0, NIL } )     
    aAdd( aRotina, { 'Pesquisar'     , 'VIEWDEF.ZMVCSC5', 0, 1, 0, NIL } )    
    aAdd( aRotina, { 'Legenda'       , 'VIEWDEF.ZMVCSC5', 0, 10, 0, NIL } )    

Return aRotina

/*--------------------------------------------------------------------------------------*
| Func:    ModelDef                                                                        |
| Desc:                                                                                    |
*--------------------------------------------------------------------------------------*/

Static Function ModelDef()        
    Local oModel := Nil

    //Estutura da tabela pai a ser utilizada no model -> cabeçalho SC5
    Local oStrSC5 := FWFormStruct(1,"SC5")

    //Estrutura da tabela filha a ser utilizada no model -> linhas SC6
    Local oStrSC6 := FWFormStruct(1,"SC6")

    oModel := MPFormModel():New("MD_PVS") 

    oModel:addFields('SC5MASTER',,oStrSC5)            

    //Adiciona o grid
    oModel:addGrid('SC6DETAIL','SC5MASTER',oStrSC6)        

    //Definindo o relacionamento das linhas com o cabeçalho
    oModel:SetRelation( 'SC6DETAIL', {{'C6_FILIAL', 'xFilial( "SC6" )' }, {'C6_NUM', 'C5_NUM'}} , SC6->(IndexKey(16)))

    //Definindo a chave primária do modelo
    oModel:SetPrimaryKey( { "C5_FILIAL", "C5_NUM" } )

    //Definindo a descrição do modelo de dados
    oModel:SetDescription( "Pedidos de venda" )

    //Definindo a descrição do componente SC5 -> cabeçalho
    oModel:GetModel( "SC5MASTER" ):SetDescription( 'Cabeçalho PV' )    

    //Definindo a descrição do componente SC6 -> linhas
    oModel:GetModel("SC6DETAIL"):SetDescription( "Linhas PV" )

    //Não permite a inserção de uma nova linha no grid, nem a remoção de uma linha existente
    oModel:GetModel("SC6DETAIL"):SetNoInsertLine(.T.)

    //Não permite a inserção de uma nova linha no grid, nem a remoção de uma linha existente
    oModel:GetModel("SC6DETAIL"):SetNoDeleteLine(.T.)

    //Não permite a edição de itens no grid
    oModel:GetModel("SC6DETAIL"):SetNoUpdateLine(.T.)

Return oModel

Static Function ViewDef()
    Local oModel := ModelDef()

    //Definindo a estrutura que será exibida na view para a tabela SC5
    Local oStSC5 := FWFormStruct(2, "SC5",{|cCampo| Alltrim(cCampo)$'C5_NUM'}) 

    //Definindo a estrutura que será exibida na view para a tabela SC6
    Local oStrSC6 := FWFormStruct(2, "SC6",{|cCampo| Alltrim(cCampo)$'C6_PRODUTO'})

    //Definindo a view
    Local oView := Nil

    oView := FWFormView():New()

    //Setando o modelo que será utilizado na view
    oView:SetModel(oModel)        

    //Vinculando o FwFormStruct a view
    oView:AddField("VIEW_SC5", oStSC5, "SC5MASTER")

    //Vinculando o FwFormStruct a view
    oView:AddGrid('VIEW_SC6' , oStrSC6,'SC6DETAIL')

    //Definindo caixa horizontal superior
    oView:CreateHorizontalBox("SUPERIOR",40)

    //Definindo caixa horizontal inferior
    oView:CreateHorizontalBox("INFERIOR",60)

    //Vinculando a view do cabeçalho a caixa superior
    oView:SetOwnerView("VIEW_SC5","SUPERIOR")

    //Vinculando a view com grid a parte inferior
    oView:SetOwnerView("VIEW_SC6","INFERIOR")

    //Definindo o título
    oView:EnableTitleView('VIEW_SC5', 'Ajusta PV')

    oView:SetCloseOnOk({||.T.})    

Return oView

Versões (4):

Ver a versão formatada

Errorlog com MVC utilizando as tabelas SC5 e SC6

  • criado 10 de Aug de 2021

Comentário

new question