Versão atual:

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

Versão (1):

Ver a versão formatada

Meu grid no mvc so esta com uma linha

Comentário

new question