Grid não mostra os registros salvos ao Alterar/Visualizar

Olá pessoal,

Tenho um problema na minha tela MVC modelo X, onde tenho 4 grids... Acontece que quando vou salvar os registros ao (INCLUIR) os registros não aparecem quando vou visualizar.

Em (Alteração) também não....fazendo alguns testes, percebi que ele está salvando em cada grid um de cada vez. então ele salva na primeira grid, faço qualquer alteração na tela independente de qual grid, ele salva a segunda, e assim por diante. Toda vez que confirmo a alteração ele vai salvando as alterações ...

Alguém poderia me dizer se é algum problema no ModelDef, algo que cause esse erro em salvar registros em MVC.

/ REGRAS DE NEGÓCIO
Static Function ModelDef()
    // INSTANCIA O MODELO
    Local oModel := MPFormModel():New("ProAmbM",,,,)
    // INSTANCIA OS SUBMODELOS
    Local oStruZZG := FwFormStruct(1, "ZZG")//GRUPO CONTROLADORIA
    Local oStruZZH := FwFormStruct(1, "ZZH")//EMPRESA/FILIAL
    Local oStruZZI := FwFormStruct(1, "ZZI")//NCM
    Local oStruZZJ := FwFormStruct(1, "ZZJ")//CFOP
    Local oStruZZK := FwFormStruct(1, "ZZK")//CST
    Local oStruZZL := FwFormStruct(1, "ZZL")//TES
    //ARRAYS DOS GATILHOS CAMPOS DUPLICADA TES E ESTOQUE TES.
    //Local aAux := {}
    //Local aEst := {}


    // DEFINE SE OS SUBMODELOS SERÃO FIELD OU GRID
    oModel:AddFields("ZZGMASTER",  NIL,      oStruZZG)//GRUPO CONTROLADORIA
    oModel:AddGrid("ZZHDETAIL", "ZZGMASTER", oStruZZH)//EMPRESA/FILIAL
    oModel:AddGrid("ZZIDETAIL", "ZZHDETAIL", oStruZZI)//NCM
    oModel:AddGrid("ZZJDETAIL", "ZZIDETAIL", oStruZZJ)//CFOP
    oModel:AddGrid("ZZKDETAIL", "ZZJDETAIL", oStruZZK)//CST
    oModel:AddGrid("ZZLDETAIL", "ZZKDETAIL", oStruZZL)//TES

    //DEFINIÇÕES DOS CAMPOS
    oStruZZG:SetProperty('ZZG_GRUPO',  MODEL_FIELD_VALID,   FwBuildFeature(STRUCT_FEATURE_VALID,  'ExistChav("ZZG", M->ZZG_GRUPO)'))  //Validação de Campo, não deixa repetir Grupo Contro já cadastrado.

    oStruZZH:SetProperty('ZZH_CODEMP', MODEL_FIELD_VALID,   FwBuildFeature(STRUCT_FEATURE_VALID,  'u_zEMP()'))
    oStruZZI:SetProperty('ZZI_NCM',    MODEL_FIELD_VALID,   FwBuildFeature(STRUCT_FEATURE_VALID,  'u_zNCM()'))
    oStruZZJ:SetProperty('ZZJ_CFOP',   MODEL_FIELD_VALID,   FwBuildFeature(STRUCT_FEATURE_VALID,  'u_zCfop()'))
    oStruZZK:SetProperty('ZZK_CSTICM', MODEL_FIELD_VALID,   FwBuildFeature(STRUCT_FEATURE_VALID,  'u_zCst()'))
    oStruZZL:SetProperty('ZZL_TES',    MODEL_FIELD_VALID,   FwBuildFeature(STRUCT_FEATURE_VALID,  'u_zTES()'))
    oStruZZL:SetProperty('ZZL_CF',     MODEL_FIELD_VALID,   FwBuildFeature(STRUCT_FEATURE_VALID,  'u_zCfopT()'))

    //oStruZZL:SetProperty('ZZL_DESTES', MODEL_FIELD_INIT,   FwBuildFeature(STRUCT_FEATURE_INIPAD,  'U_iTST()'))//Ini Padrão

    //CAMPO CHECKBOX STATUS
    oStruZZH:AddField('STATUS','','STATUS','L',1,0,,,{},.F.,FWBuildFeature(STRUCT_FEATURE_INIPAD,".F."))
    oStruZZI:AddField('STATUS','','STATUS','L',1,0,,,{},.F.,FWBuildFeature(STRUCT_FEATURE_INIPAD,".F."))
    oStruZZJ:AddField('STATUS','','STATUS','L',1,0,,,{},.F.,FWBuildFeature(STRUCT_FEATURE_INIPAD,".F."))
    oStruZZK:AddField('STATUS','','STATUS','L',1,0,,,{},.F.,FWBuildFeature(STRUCT_FEATURE_INIPAD,".F."))
    oStruZZL:AddField('STATUS','','STATUS','L',1,0,,,{},.F.,FWBuildFeature(STRUCT_FEATURE_INIPAD,".F."))


    //ADICIONA CAMPOS DA TES, DUPLICADA E ESTOQUE.
    oStruZZL:AddField( 'X_DUP' , 'X_DUP' , 'X_DUP' , 'C' ,1,0,,,{},.F.,FWBuildFeature(STRUCT_FEATURE_INIPAD,'IIF(!INCLUI,POSICIONE("SF4",1,XFILIAL("SF4")+ZZL->ZZL_TES,"F4_DUPLIC"),"")'))//Ini Padrão

    oStruZZL:AddField( 'X_EST' , 'X_EST' , 'X_EST' , 'C' ,1,0,,,{},.F.,FWBuildFeature(STRUCT_FEATURE_INIPAD,'IIF(INCLUI,"",POSICIONE("SF4",1,FwXFilial("SF4")+ZZL->ZZL_TES,"F4_ESTOQUE"))'))//Ini Padrão

    //GATILHO DO CAMPO DUPLICADA TES.
    aAux := FwStruTrigger(;
                    'ZZL_TES' ,;                    //Campo Origem
                    'X_DUP' ,;                        //Campo Destino
                    'SF4->F4_DUPLIC',;                //Regra de Preenchimento
                    .T.,;                            //Irá Posicionar?
                    'SF4' ,;                        //Alias de Posicionamento
                    1,;                                //Índice de Posicionamento
                    'FwXFilial("SF4")+M->ZZL_TES',;    //Chave de Posicionamento
                    NIL,;                           //Condição para execução do gatilho
                   "003");                          //Sequência do gatilho

            oStruZZL:AddTrigger( ;
                aAux[1] , ; // [01] identificador (ID) do campo de origem
                aAux[2] , ; // [02] identificador (ID) do campo de destino
                aAux[3] , ; // [03] Bloco de código de validação da execução do gatilho
                aAux[4] )   // [04] Bloco de código de execução do gatilho

    //GATILHO DO CAMPO ESTOQUE TES.
    aEst := FwStruTrigger(;
                    'ZZL_TES' ,;                    //Campo Origem
                    'X_EST' ,;                        //Campo Destino
                    'SF4->F4_ESTOQUE',;                //Regra de Preenchimento
                    .T.,;                            //Irá Posicionar?
                    'SF4' ,;                        //Alias de Posicionamento
                    1,;                                //Índice de Posicionamento
                    'FwXFilial("SF4")+M->ZZL_TES',;    //Chave de Posicionamento
                    NIL,;                           //Condição para execução do gatilho
                   "004");                          //Sequência do gatilho

            oStruZZL:AddTrigger( ;
                aEst[1] , ; // [01] identificador (ID) do campo de origem
                aEst[2] , ; // [02] identificador (ID) do campo de destino
                aEst[3] , ; // [03] Bloco de código de validação da execução do gatilho
                aEst[4] )   // [04] Bloco de código de execução do gatilho        


    //DEFININDO A RELAÇÃO ENTRE OS MODELOS
    oModel:SetPrimaryKey({'ZZG_FILIAL','ZZG_GRUPO','ZZG_ESPECI'})//Setando Primary Key

    oModel:SetRelation("ZZHDETAIL",{{"ZZH_FILIAL", "FwXFilial('ZZH')"}, {"ZZH_GRUPO", "ZZG_GRUPO"},{"ZZH_ESPECI","ZZG_ESPECI"}}, ZZH->(IndexKey(1)))
    oModel:GetModel('ZZHDETAIL'):SetUniqueLine({'ZZH_FILIAL','ZZH_GRUPO','ZZH_ESPECI','ZZH_CODEMP','ZZH_CRPISC'})

    oModel:SetRelation("ZZIDETAIL",{{"ZZI_FILIAL", "FwXFilial('ZZI')"}, {"ZZI_GRUPO", "ZZH_GRUPO"},{"ZZI_ESPECI", "ZZH_ESPECI"},{"ZZI_CODEMP","ZZH_CODEMP"},{"ZZI_CRPISC","ZZH_CRPISC"}}, ZZI->(IndexKey(1)))
    oModel:GetModel('ZZIDETAIL'):SetUniqueLine({'ZZI_FILIAL','ZZI_GRUPO','ZZI_ESPECI','ZZI_CODEMP','ZZI_CRPISC','ZZI_NCM'})

    oModel:SetRelation("ZZJDETAIL",{{"ZZJ_FILIAL", "FwXFilial('ZZJ')"}, {"ZZJ_GRUPO", "ZZI_GRUPO"},{"ZZJ_ESPECI", "ZZI_ESPECI"},{"ZZJ_CODEMP","ZZI_CODEMP"},{"ZZJ_CRPISC","ZZI_CRPISC"},{"ZZJ_NCM","ZZI_NCM"}}, ZZJ->(IndexKey(1)))
    oModel:GetModel('ZZJDETAIL'):SetUniqueLine({'ZZJ_FILIAL','ZZJ_GRUPO','ZZJ_ESPECI','ZZJ_CODEMP','ZZJ_CRPISC','ZZJ_NCM','ZZJ_CFOP'})

    oModel:SetRelation("ZZKDETAIL",{{"ZZK_FILIAL", "FwXFilial('ZZK')"}, {"ZZK_GRUPO", "ZZJ_GRUPO"},{"ZZK_ESPECI", "ZZJ_ESPECI"},{"ZZK_CODEMP","ZZJ_CODEMP"},{"ZZK_CRPISC","ZZJ_CRPISC"},{"ZZK_NCM","ZZJ_NCM"},{"ZZK_CFOP","ZZJ_CFOP"}}, ZZK->(IndexKey(1)))
    oModel:GetModel('ZZKDETAIL'):SetUniqueLine({'ZZK_FILIAL','ZZK_GRUPO','ZZK_ESPECI','ZZK_CODEMP','ZZK_CRPISC','ZZK_NCM','ZZK_CFOP','ZZK_CSTICM'})

    oModel:SetRelation("ZZLDETAIL",{{"ZZL_FILIAL", "FwXFilial('ZZL')"}, {"ZZL_GRUPO", "ZZK_GRUPO"},{"ZZL_ESPECI", "ZZK_ESPECI"},{"ZZL_CODEMP","ZZK_CODEMP"},{"ZZL_CRPISC","ZZK_CRPISC"},{"ZZL_NCM","ZZK_NCM"},{"ZZL_CFOP","ZZK_CFOP"},{"ZZL_CSTICM","ZZK_CSTICM"}}, ZZL->(IndexKey(1)))
    oModel:GetModel('ZZLDETAIL'):SetUniqueLine({'ZZL_FILIAL','ZZL_GRUPO','ZZL_ESPECI','ZZL_CODEMP','ZZL_CRPISC','ZZL_NCM','ZZL_CFOP','ZZL_CSTICM','ZZL_TES'})

    //DESCRIÇÃO DO MODELO
    oModel:SetDescription("Controle de Produtos")

    //DESCRIÇÃO DOS SUBMODELOS
    oModel:GetModel("ZZGMASTER"):SetDescription("Grupo de Controladoria")
    oModel:GetModel("ZZHDETAIL"):SetDescription("Empresa/Filial")
    oModel:GetModel("ZZIDETAIL"):SetDescription("NCM")
    oModel:GetModel("ZZJDETAIL"):SetDescription("CFOP")
    oModel:GetModel("ZZKDETAIL"):SetDescription("CST")
    oModel:GetModel("ZZLDETAIL"):SetDescription("TES")

Return (oModel)

incluir.jpg

alterar.jpg

compartilhar
  • Eduarda, me desculpe, mas não compreendi bem, você consegue colocar umas imagens demostrando, o código fonte, algo assim, por favor.

    Daniel Mendes   09 de Jun de 2022
  • Olá Daniel. editei e coloquei as imagens...acredito que ele não salva as informações das tabelas de uma vez.. parece que ele entra em uma tabela faz a gravação e depois vai para a seguinte. por que se eu alterar incluindo registros nas grids que faltam, ele salva porem uma por vez.

    Eduarda Menezes   10 de Jun de 2022
  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 TOTVS DevForum!

1 resposta

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