Meu grid no mvc so esta com uma linha

Eu criei um grid no mvc porem ele so esta aparecendo uma linha quando eu faço a consulta com sql, mesmo a consulta retornando varios valores, queria saber como adiciono mais linhas nos grid filhos

User Function CPFIN51()
    Local aArea   := GetArea()
    Local cFunBkp := FunName()
    SetFunName("CPFIN51")

    Local aButtons      //Remover todos os botões da tela e deixar apenas "Fechar"                                                                                                    
    aButtons := {{.F.,Nil},{.F.,Nil},{.F.,Nil},{.F.,Nil},{.F.,Nil},{.F.,Nil},{.F.,"Salvar"},{.T.,"Fechar"},;
    {.F.,Nil},{.F.,Nil},{.F.,Nil},{.F.,Nil},{.F.,Nil},{.F.,Nil}}
    // Função para exibir diretamente o View, sem a necessidade do Browse 
    FWExecView(cTitulo, 'CPFIN51', MODEL_OPERATION_INSERT, , { || .T. }, , ,aButtons) 

    SetFunName(cFunBkp)
    RestArea(aArea)
Return Nil

/*---------------------------------------------------------------------*
 | Func:  MenuDef                                                      |
 | Desc:  Criação do menu MVC                                          |
 *---------------------------------------------------------------------*/


/*---------------------------------------------------------------------*
 | Func:  ModelDef                                                     |
 | Desc:  Criação do modelo de dados MVC                               |
 *---------------------------------------------------------------------*/

Static Function ModelDef()
    Local oModel     := Nil
    //Local oStTmpPai     := FWFormStruct(1, 'SF2')
    Local oStTmpPai     := FWFormModelStruct():New()
    Local oStTmpZZ5      := FWFormStruct(1, 'ZZ5')
    Local oStTmpSF2      := FWFormStruct(1, 'SF2')
    Local oStTmpSD2      := FWFormStruct(1, 'SD2')
    Local oStTmpSFT      := FWFormStruct(1, 'SFT')
    Local oStTmpSF3      := FWFormStruct(1, 'SF3')
    Local oStTmpSE1      := FWFormStruct(1, 'SE1')
    Local oStTmpSE5      := FWFormStruct(1, 'SE5')





    // Criando as tabelas temporarias 
    //oStTmpPai:AddTable('SF2', {'F2_FILIAL','F2_DOC', 'F2_SERIE', 'F2_EMISSAO'}, "Cabecalho SF2")

    oStTmpPai:AddField(;
        "Filial",;                                                                                  // [01]  C   Titulo do campo
        "Filial",;                                                                                  // [02]  C   ToolTip do campo
        "F2FILIAL",;                                                                               // [03]  C   Id do Field
        "C",;                                                                                       // [04]  C   Tipo do campo
        TamSX3("F2_FILIAL")[1],;                                                                    // [05]  N   Tamanho do campo
        0,;                                                                                         // [06]  N   Decimal do campo
        Nil,;                                                                                       // [07]  B   Code-block de validação do campo
        Nil,;                                                                                       // [08]  B   Code-block de validação When do campo
        {},;                                                                                        // [09]  A   Lista de valores permitido do campo
        .F.,;                                                                                       // [10]  L   Indica se o campo tem preenchimento obrigatório
            ,;   // [11]  B   Code-block de inicializacao do campo
        .T.,;                                                                                       // [12]  L   Indica se trata-se de um campo chave
        .F.,;                                                                                       // [13]  L   Indica se o campo pode receber valor em uma operação de update.
        .T.) 

    oStTmpPai:AddField(;
        "Nota Fiscal",;                                                                                  // [01]  C   Titulo do campo
        "Nota Fiscal",;                                                                                  // [02]  C   ToolTip do campo
        "F2_DOC",;                                                                               // [03]  C   Id do Field
        "C",;                                                                                       // [04]  C   Tipo do campo
        TamSX3("F2_DOC")[1],;                                                                    // [05]  N   Tamanho do campo
        0,;                                                                                         // [06]  N   Decimal do campo
        Nil,;                                                                                       // [07]  B   Code-block de validação do campo
        Nil,;                                                                                       // [08]  B   Code-block de validação When do campo
        {},;                                                                                        // [09]  A   Lista de valores permitido do campo
        .F.,;                                                                                       // [10]  L   Indica se o campo tem preenchimento obrigatório
        ,;   // [11]  B   Code-block de inicializacao do campo
        .T.,;                                                                                       // [12]  L   Indica se trata-se de um campo chave
        .F.,;                                                                                       // [13]  L   Indica se o campo pode receber valor em uma operação de update.
        .F.)                                                                                        // [14]  L   Indica se o campo é virtual

    oStTmpPai:AddField(;
        "Serie",;                                                                                  // [01]  C   Titulo do campo
        "Serie",;                                                                                  // [02]  C   ToolTip do campo
        "F2_SERIE",;                                                                               // [03]  C   Id do Field
        "C",;                                                                                       // [04]  C   Tipo do campo
        TamSX3("F2_SERIE")[1],;                                                                    // [05]  N   Tamanho do campo
        0,;                                                                                         // [06]  N   Decimal do campo
        Nil,;                                                                                       // [07]  B   Code-block de validação do campo
        Nil,;                                                                                       // [08]  B   Code-block de validação When do campo
        {},;                                                                                        // [09]  A   Lista de valores permitido do campo
        .F.,;                                                                                       // [10]  L   Indica se o campo tem preenchimento obrigatório
        ,;   // [11]  B   Code-block de inicializacao do campo
        .T.,;                                                                                       // [12]  L   Indica se trata-se de um campo chave
        .F.,;                                                                                       // [13]  L   Indica se o campo pode receber valor em uma operação de update.
        .F.)                                                                                        // [14]  L   Indica se o campo é virtual

    oStTmpPai:AddField(;
        "DT Emissao",;                                                                                  // [01]  C   Titulo do campo
        "DT Emissao",;                                                                                  // [02]  C   ToolTip do campo
        "F2_EMISSAO",;                                                                               // [03]  C   Id do Field
        "D",;                                                                                       // [04]  C   Tipo do campo
        TamSX3("F2_EMISSAO")[1],;                                                                    // [05]  N   Tamanho do campo
        0,;                                                                                         // [06]  N   Decimal do campo
        Nil,;                                                                                       // [07]  B   Code-block de validação do campo
        Nil,;                                                                                       // [08]  B   Code-block de validação When do campo
        {},;                                                                                        // [09]  A   Lista de valores permitido do campo
        .F.,;                                                                                       // [10]  L   Indica se o campo tem preenchimento obrigatório
        ,;   // [11]  B   Code-block de inicializacao do campo
        .T.,;                                                                                       // [12]  L   Indica se trata-se de um campo chave
        .F.,;                                                                                       // [13]  L   Indica se o campo pode receber valor em uma operação de update.
        .F.)                                                                                        // [14]  L   Indica se o campo é virtual

    oStTmpPai:AddField( ;
        "Carregar" , ;                               // [01] Titulo do campo
        "Carregar", ;                               // [02] ToolTip do campo
        'BOTAO', ;                                   // [03] Id do Field
        'BT', ;                                       // [04] Tipo do campo
        1, ;                                           // [05] Tamanho do campo
        0, ;                                        // [06] Decimal do campo
        { |oMdl| CP001( oMdl ), .T. }  )            // [07] Code-block de validação do campo


    oStTmpSF2:AddField(;
        "NEXTSER",;                                                                                  // [01]  C   Titulo do campo
        "NEXTSER",;                                                                                  // [02]  C   ToolTip do campo
        "F2_NEXTSER",;                                                                               // [03]  C   Id do Field
        "C",;                                                                                       // [04]  C   Tipo do campo
        TamSX3("F2_NEXTSER")[1],;                                                                    // [05]  N   Tamanho do campo
        0,;                                                                                         // [06]  N   Decimal do campo
        Nil,;                                                                                       // [07]  B   Code-block de validação do campo
        Nil,;                                                                                       // [08]  B   Code-block de validação When do campo
        {},;                                                                                        // [09]  A   Lista de valores permitido do campo
        .F.,;                                                                                       // [10]  L   Indica se o campo tem preenchimento obrigatório
        ,;   // [11]  B   Code-block de inicializacao do campo
        .T.,;                                                                                       // [12]  L   Indica se trata-se de um campo chave
        .F.,;                                                                                       // [13]  L   Indica se o campo pode receber valor em uma operação de update.
        .F.)                                                                                        // [14]  L   Indica se o campo é virtual




    //Criando o modelo
    oModel := MPFormModel():New('CPFIN51M')
    oModel:AddFields('SF2_MASTER', /*cOwner*/, oStTmpPai)

    //Criando as grids dos filhos
    oModel:AddGrid('FILHO_ZZ5', 'SF2_MASTER', oStTmpZZ5)
    oModel:AddGrid('FILHO_SF2', 'SF2_MASTER', oStTmpSF2)
    oModel:AddGrid('FILHO_SD2', 'SF2_MASTER', oStTmpSD2)
    oModel:AddGrid('FILHO_SFT', 'SF2_MASTER', oStTmpSFT)
    oModel:AddGrid('FILHO_SF3', 'SF2_MASTER', oStTmpSF3)
    oModel:AddGrid('FILHO_SE1', 'SF2_MASTER', oStTmpSE1)
    oModel:AddGrid('FILHO_SE5', 'SF2_MASTER', oStTmpSE5)



    //Criando os relacionamentos dos pais e filhos
    //aAdd(aRelFilho1, {'F2_DOC', 'F2_DOC'})
    //aAdd(aRelFilho1, {'F2_SERIE',  'F2_SERIE'})

    //aAdd(aRelFilho2, {'D2_DOC', 'F2_DOC'})
    //aAdd(aRelFilho2, {'D2_SERIE',  'F2_SERIE'})





    //Criando o relacionamento do Filho 1
    //oModel:SetRelation('FILHO_ZZ5', aRelFilho1, SF2->(IndexKey(1)))
    //oModel:GetModel('FILHO_ZZ5'):SetUniqueLine({"F2_DOC"})

    //Criando o relacionamento do Filho 2
    //oModel:SetRelation('FILHO_SF2', aRelFilho2, SD2->(IndexKey(1)))
    //oModel:GetModel('FILHO_SF2'):SetUniqueLine({"D2_SERIE"})

    //oModel:SetRelation('FILHO_SD2', aRelFilho3, SFT->(IndexKey(1)))
    //oModel:GetModel('FILHO_SD2'):SetUniqueLine({"FT_SERIE"})

    //oModel:SetRelation( 'FILHODETAIL', { { 'F2_FILIAL', 'xFilial( "SF2" )' }, { 'F2_DOC', 'F2_DOC' } }, SF2->( IndexKey( 1 ) ) )



    //Finaliznado a criação do Model
    oModel:SetPrimaryKey({})
    oModel:SetDescription("Grupo de Produtos - com Abas")
    oModel:GetModel('SF2_MASTER'):SetDescription('Modelo Grupo')
    oModel:GetModel('FILHO_ZZ5'):SetDescription('ZZ5')
    oModel:GetModel('FILHO_SF2'):SetDescription('SF2')
    oModel:GetModel('FILHO_SD2'):SetDescription('SD2')
    oModel:GetModel('FILHO_SFT'):SetDescription('SFT')
    oModel:GetModel('FILHO_SF3'):SetDescription('SF3')
    oModel:GetModel('FILHO_SE1'):SetDescription('SE1')
    oModel:GetModel('FILHO_SE5'):SetDescription('SE5')


Return oModel

/*---------------------------------------------------------------------*
 | Func:  ViewDef                                                      |
 | Desc:  Criação da visão MVC                                         |
 *---------------------------------------------------------------------*/

Static Function ViewDef()
    Local oView      := Nil
    Local oModel     := FWLoadModel('CPFIN51')
    Local oStTmpPai  := FWFormViewStruct():New()
    Local oStTmpZZ5  := FWFormStruct(2, 'ZZ5')
    Local oStTmpSF2  := FWFormStruct(2, 'SF2')
    Local oStTmpSD2  := FWFormStruct(2, 'SD2')
    Local oStTmpSFT  := FWFormStruct(2, 'SFT')
    Local oStTmpSF3  := FWFormStruct(2, 'SF3')
    Local oStTmpSE1  := FWFormStruct(2, 'SE1')
    Local oStTmpSE5  := FWFormStruct(2, 'SE5')




    oStTmpPai:AddField(;
        "F2FILIAL",;                // [01]  C   Nome do Campo
        "01",;                      // [02]  C   Ordem
        "Filial",;                  // [03]  C   Titulo do campo
        X3Descric('F2FILIAL'),;    // [04]  C   Descricao do campo
        Nil,;                       // [05]  A   Array com Help
        "C",;                       // [06]  C   Tipo do campo
        X3Picture("F2FILIAL"),;    // [07]  C   Picture
        Nil,;                       // [08]  B   Bloco de PictTre Var
        Nil,;                       // [09]  C   Consulta F3
        ( .T.),;     // [10]  L   Indica se o campo é alteravel  //( .T., .F.),;     
        Nil,;                       // [11]  C   Pasta do campo
        Nil,;                       // [12]  C   Agrupamento do campo
        Nil,;                       // [13]  A   Lista de valores permitido do campo (Combo)
        Nil,;                       // [14]  N   Tamanho maximo da maior opção do combo
        Nil,;                       // [15]  C   Inicializador de Browse
        .T.,;                       // [16]  L   Indica se o campo é virtual
        Nil,;                       // [17]  C   Picture Variavel
        Nil)                        // [18]  L   Indica pulo de linha após o campo

     oStTmpPai:AddField(;
        "F2_DOC",;                // [01]  C   Nome do Campo
        "02",;                      // [02]  C   Ordem
        "Nota Fiscal",;                  // [03]  C   Titulo do campo
        X3Descric('F2_DOC'),;    // [04]  C   Descricao do campo
        Nil,;                       // [05]  A   Array com Help
        "C",;                       // [06]  C   Tipo do campo
        X3Picture("F2_DOC"),;    // [07]  C   Picture
        Nil,;                       // [08]  B   Bloco de PictTre Var
        Nil,;                       // [09]  C   Consulta F3
        ( .T.),;     // [10]  L   Indica se o campo é alteravel
        Nil,;                       // [11]  C   Pasta do campo
        Nil,;                       // [12]  C   Agrupamento do campo
        Nil,;                       // [13]  A   Lista de valores permitido do campo (Combo)
        Nil,;                       // [14]  N   Tamanho maximo da maior opção do combo
        Nil,;                       // [15]  C   Inicializador de Browse
        Nil,;                       // [16]  L   Indica se o campo é virtual
        Nil,;                       // [17]  C   Picture Variavel
        Nil)                        // [18]  L   Indica pulo de linha após o campo

     oStTmpPai:AddField(;
        "F2_SERIE",;                // [01]  C   Nome do Campo
        "03",;                      // [02]  C   Ordem
        "Serie",;                  // [03]  C   Titulo do campo
        X3Descric('F2_SERIE'),;    // [04]  C   Descricao do campo
        Nil,;                       // [05]  A   Array com Help
        "C",;                       // [06]  C   Tipo do campo
        X3Picture("F2_SERIE"),;    // [07]  C   Picture
        Nil,;                       // [08]  B   Bloco de PictTre Var
        Nil,;                       // [09]  C   Consulta F3
        ( .T. ),;     // [10]  L   Indica se o campo é alteravel
        Nil,;                       // [11]  C   Pasta do campo
        Nil,;                       // [12]  C   Agrupamento do campo
        Nil,;                       // [13]  A   Lista de valores permitido do campo (Combo)
        Nil,;                       // [14]  N   Tamanho maximo da maior opção do combo
        Nil,;                       // [15]  C   Inicializador de Browse
        Nil,;                       // [16]  L   Indica se o campo é virtual
        Nil,;                       // [17]  C   Picture Variavel
        Nil)                        // [18]  L   Indica pulo de linha após o campo

    oStTmpPai:AddField(;
        "F2_EMISSAO",;                // [01]  C   Nome do Campo
        "04",;                      // [02]  C   Ordem
        "Data Emissão",;                  // [03]  C   Titulo do campo
        X3Descric('F2_EMISSAO'),;    // [04]  C   Descricao do campo
        Nil,;                       // [05]  A   Array com Help
        "D",;                       // [06]  C   Tipo do campo
        X3Picture("F2_EMISSAO"),;    // [07]  C   Picture
        Nil,;                       // [08]  B   Bloco de PictTre Var
        Nil,;                       // [09]  C   Consulta F3
        ( .T.),;     // [10]  L   Indica se o campo é alteravel
        Nil,;                       // [11]  C   Pasta do campo
        Nil,;                       // [12]  C   Agrupamento do campo
        Nil,;                       // [13]  A   Lista de valores permitido do campo (Combo)
        Nil,;                       // [14]  N   Tamanho maximo da maior opção do combo
        Nil,;                       // [15]  C   Inicializador de Browse
        Nil,;                       // [16]  L   Indica se o campo é virtual
        Nil,;                       // [17]  C   Picture Variavel
        Nil)                        // [18]  L   Indica pulo de linha após o campo    

    oStTmpPai:AddField( ;
        'BOTAO'          , ;             // [01] Campo
        "5"             , ;              // [02] Ordem
        "Carregar"       , ;             // [03] Titulo
        "Carregar"       , ;             // [04] Descricao
        NIL              , ;             // [05] Help
        'BT'             )               // [06] Tipo do campo   COMBO, Get ou CHECK




     oStTmpSF2:AddField(;
        "F2_NEXTSER",;                // [01]  C   Nome do Campo
        "XX",;                      // [02]  C   Ordem
        "NEXTSER",;                  // [03]  C   Titulo do campo
        X3Descric('F2_NEXTSER'),;    // [04]  C   Descricao do campo
        Nil,;                       // [05]  A   Array com Help
        "D",;                       // [06]  C   Tipo do campo
        X3Picture("F2_NEXTSER"),;    // [07]  C   Picture
        Nil,;                       // [08]  B   Bloco de PictTre Var
        Nil,;                       // [09]  C   Consulta F3
        ( .T.),;     // [10]  L   Indica se o campo é alteravel
        Nil,;                       // [11]  C   Pasta do campo
        Nil,;                       // [12]  C   Agrupamento do campo
        Nil,;                       // [13]  A   Lista de valores permitido do campo (Combo)
        Nil,;                       // [14]  N   Tamanho maximo da maior opção do combo
        Nil,;                       // [15]  C   Inicializador de Browse
        Nil,;                       // [16]  L   Indica se o campo é virtual
        Nil,;                       // [17]  C   Picture Variavel
        Nil)                        // [18]  L   Indica pulo de linha após o campo    



    //Criando a View
    oView := FWFormView():New()
    oView:SetModel(oModel)

    //Adicionando os campos do cabeçalho
    oView:AddField('VIEW_SF2', oStTmpPai, 'SF2_MASTER')

    //Setando o dimensionamento de tamanho
    oView:CreateHorizontalBox('SUPERIOR', 30)
    oView:CreateHorizontalBox('INFERIOR', 70)

    //Criando a folder dos produtos (filhos)
    oView:CreateFolder('PASTA_FILHOS', 'INFERIOR')
    oView:AddSheet('PASTA_FILHOS', 'ABA_FILHO01', "ZZ5")
    oView:AddSheet('PASTA_FILHOS', 'ABA_FILHO02', "SF1 / SF2")
    oView:AddSheet('PASTA_FILHOS', 'ABA_FILHO03', "SD1 / SD2 ")
    oView:AddSheet('PASTA_FILHOS', 'ABA_FILHO04', "SFT ")

    oView:AddSheet('PASTA_FILHOS', 'ABA_FILHO05', "SF3")
    oView:AddSheet('PASTA_FILHOS', 'ABA_FILHO06', "SE1 / SE1")
    oView:AddSheet('PASTA_FILHOS', 'ABA_FILHO07', "SE5")
    oView:AddSheet('PASTA_FILHOS', 'ABA_FILHO08', "SPED050")
    oView:AddSheet('PASTA_FILHOS', 'ABA_FILHO09', "SPED054")

    //Grids dos filhos
    oView:AddGrid('VIEW_FILHO1', oStTmpZZ5, 'FILHO_ZZ5')
    oView:AddGrid('VIEW_FILHO2', oStTmpSF2, 'FILHO_SF2')
    oView:AddGrid('VIEW_FILHO3', oStTmpSD2, 'FILHO_SD2')
    oView:AddGrid('VIEW_FILHO4', oStTmpSFT, 'FILHO_SFT')

    oView:AddGrid('VIEW_FILHO5', oStTmpSF3, 'FILHO_SF3')
    oView:AddGrid('VIEW_FILHO6', oStTmpSE1, 'FILHO_SE1')
    oView:AddGrid('VIEW_FILHO7', oStTmpSE5, 'FILHO_SE5')
    //oView:AddGrid('VIEW_FILHO8', oStTmpPai, 'FILHO_ZZ5')
    //oView:AddGrid('VIEW_FILHO9', oStTmpPai, 'FILHO_ZZ5')



    //Criando os vinculos onde serão mostrado os dados
    oView:CreateHorizontalBox('ITENS_FILHO01', 100,,, 'PASTA_FILHOS', 'ABA_FILHO01' )
    oView:CreateHorizontalBox('ITENS_FILHO02', 100,,, 'PASTA_FILHOS', 'ABA_FILHO02' )
    oView:CreateHorizontalBox('ITENS_FILHO03', 100,,, 'PASTA_FILHOS', 'ABA_FILHO03' )

    oView:CreateHorizontalBox('ITENS_FILHO04', 100,,, 'PASTA_FILHOS', 'ABA_FILHO04' )
    oView:CreateHorizontalBox('ITENS_FILHO05', 100,,, 'PASTA_FILHOS', 'ABA_FILHO05' )
    oView:CreateHorizontalBox('ITENS_FILHO06', 100,,, 'PASTA_FILHOS', 'ABA_FILHO06' )
    oView:CreateHorizontalBox('ITENS_FILHO07', 100,,, 'PASTA_FILHOS', 'ABA_FILHO07' )
    oView:CreateHorizontalBox('ITENS_FILHO08', 100,,, 'PASTA_FILHOS', 'ABA_FILHO08' )

    oView:CreateHorizontalBox('ITENS_FILHO09', 100,,, 'PASTA_FILHOS', 'ABA_FILHO09')


    //Amarrando a view com as box
    oView:SetOwnerView('VIEW_SF2',    'SUPERIOR')
    oView:SetOwnerView('VIEW_FILHO1', 'ITENS_FILHO01')
    oView:SetOwnerView('VIEW_FILHO2', 'ITENS_FILHO02')
    oView:SetOwnerView('VIEW_FILHO3', 'ITENS_FILHO03')

    oView:SetOwnerView('VIEW_FILHO4', 'ITENS_FILHO04')
    oView:SetOwnerView('VIEW_FILHO5', 'ITENS_FILHO05')
    oView:SetOwnerView('VIEW_FILHO6', 'ITENS_FILHO06')
    oView:SetOwnerView('VIEW_FILHO7', 'ITENS_FILHO07')

    oView:AddUserButton( 'Modificar ZZ5', 'CLIPS', { || CP003() } )

    //oView:SetOwnerView('VIEW_FILHO7', 'ITENS_FILHO07')
    //oView:SetOwnerView('VIEW_FILHO8', 'ITENS_FILHO08')

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


Return oView
compartilhar
  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 mvc grid advpl ou faça a sua própria pergunta.