PERGUNTAS E RESPOSTAS
 
Bem Vindo, Visitante  Todos os Fórums
  ADVPL
Enviar para a impressoraImprimir  Enviar e-mail para um amigoEnviar Para um Amigo
Precisa estar Logado

Subject Assunto:
Filtro FWmBrowse com tabela temporária
Versão:
12.1.33
Plataforma:
Microsoft
Complemento:
DB:
SQL Server
Complemento:
LinkedIn
Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário LUSILVEI LUSILVEI em 27/06/2022, 14:14 h
Local: SP  Registro: 08/09/2011  Postagens: 3
Boa Tarde,
Criei uma tela utilizando FWmBrowse baseado em uma tabela temporária. Nesta tela, criei um botão para filtrar por dois campos que se encontram em tabelas distintas mas que já fazem parte do meu modelo, dados que tenho uma query que relaciona as tabelas.
Ao filtrar pelo item preenchido e clicar no botão alterar no registro desejado o sistema não considera o registro o browse atual e acaba editando o registro que está no browse anterior.

Além disso estou com um erro al clicar no botão Confirmar da tela que criei. Aparece que o alias da tabela temporária não existe.
Já olhei tanto para esse código tentando resolver que não consigo mais avançar.
Alguém conseguiria me ajudar?

Segue as duas funções criadas:
#INCLUDE ‘PROTHEUS.CH‘
#INCLUDE "TOTVS.CH"
#INCLUDE ‘FWMVCDEF.CH‘
#INCLUDE "RWMAKE.CH"
#INCLUDE ‘FWMBROWSE.CH‘


//-------------------------------------------------------------------
/*/{Protheus.doc} F070CAP
Exemplo de montagem da modelo e interface para uma estrutura
pai/filho em MVC

@author Luciana Silveira
@since 09/02/2022
@version P12
/*/
//-------------------------------------------------------------------
User Function F070CAP()
Local aArea   := GetArea()
Local oBrowse := FwLoadBrw("F070CAP")


    
    oBrowse:Activate()

    If "X" == "Y" // Apenas para retirar os warnings de compilação
        BrowseDef()
        MenuDef()
        ModelDef()
        ViewDef()
    EndIf

    RestArea(aArea)

Return


Static Function BrowseDef()
Local oBrowse   := FWMBrowse():New()
Local aColumns := {}
Private cFilter:= ‘‘

    

    oBrowse:SetColumns( aColumns )
    oBrowse:SetAlias( "ZYA" )
    oBrowse:SetDescription("Casos de CAP")
     oBrowse:SetProfileID( ‘1‘ )


Return oBrowse



Static Function MenuDef()
Local aRotina := {}


ADD OPTION aRotina Title ‘Incluir‘     Action ‘VIEWDEF.F070CAP‘ OPERATION 3 ACCESS 0
ADD OPTION aRotina Title ‘Alterar‘     Action ‘VIEWDEF.F070CAP‘ OPERATION 4 ACCESS 0
ADD OPTION aRotina Title ‘Filtros‘     Action ‘U_F070FILT()‘      OPERATION 4 ACCESS 0
ADD OPTION aRotina Title ‘Visualizar‘ Action ‘VIEWDEF.F070CAP‘ OPERATION 2 ACCESS 0
ADD OPTION aRotina Title ‘Excluir‘     Action ‘VIEWDEF.F070CAP‘ OPERATION 5 ACCESS 0



Return aRotina




//-------------------------------------------------------------------
Static Function ModelDef()
// Cria a estrutura a ser usada no Modelo de Dados
Local bVldPos      := {|| U_F70VALCAP()} //Validação se já existe CAP para o caso ao clicar no Confirmar
Local oModel      := MPFormModel():New(‘COMP0CAP‘, /*bPreValidacao*/, bVldPos, /*bCommit*/, /*bCancel*/ )
Local oStruZYA      := FWFormStruct( 1, ‘ZYA‘, /*bAvalCampo*/, /*lViewUsado*/ )
Local oStruZYB      := FWFormStruct( 1, ‘ZYB‘, /*bAvalCampo*/, /*lViewUsado*/ )

     

// Cria o objeto do Modelo de Dados
//oModel := MPFormModel():New( ‘COMP0CAP‘, /*bPreValidacao*/, bVldPos, /*bCommit*/, /*bCancel*/ )


// Adiciona ao modelo uma estrutura de formulário de edição por campo
oModel:AddFields( ‘ZYAMASTER‘, /*cOwner*/, oStruZYA )

// Adiciona ao modelo uma estrutura de formulário de edição por grid
oModel:AddGrid( ‘ZYBDETAIL‘, ‘ZYAMASTER‘ , oStruZYB, /*bLinePre*/, /*bLinePost*/, /*bPreVal*/, /*bPosVal*/, /*BLoad*/ )


// Faz relaciomaneto entre os compomentes do model
oModel:SetRelation( ‘ZYBDETAIL‘, { { ‘ZYB_CODCAP‘, ‘ZYA_COD‘ } }, ZYB->( IndexKey( 1 ) ) )


/*
//Agora fazendo o filtro na grid, conforme data inicial e final fornecida pelo usuário em um ParamBox / Pergunte
oModel:GetModel(‘ZZEDETAIL‘):SetLoadFilter(, "ZYA BETWEEN ‘" + dToS(dDataIni) + "‘ AND ‘" + dToS(dDataFin) + "‘ " )
*/


// Liga o controle de nao repeticao de linha
oModel:GetModel( ‘ZYBDETAIL‘ ):SetUniqueLine( { ‘ZYB_COD‘ } )



// Adiciona a descricao do Modelo de Dados
oModel:SetDescription( ‘Modelo de CAP‘ )

//Define a chave primaria utilizada pelo modelo
oModel:SetPrimaryKey({‘ZYA_FILIAL‘, ‘ZYA_COD‘})
     
// Adiciona a descricao do Componente do Modelo de Dados
oModel:GetModel( ‘ZYAMASTER‘ ):SetDescription( ‘Cadastro de CAP‘ )
oModel:GetModel( ‘ZYBDETAIL‘ ):SetDescription( ‘Casos CAP‘ )

Return oModel


//-------------------------------------------------------------------
Static Function ViewDef()
// Cria um objeto de Modelo de Dados baseado no ModelDef do fonte informado
Local oStruZYA     := FWFormStruct( 2, ‘ZYA‘ )
Local oStruZYB     := FWFormStruct( 2, ‘ZYB‘ )
Local oModel     := FWLoadModel( ‘F070CAP‘ )
Local oView
Private lRet     := .T.



// Cria o objeto de View
oView := FWFormView():New()

// Define qual o Modelo de dados será utilizado
oView:SetModel( oModel )

//Adiciona no nosso View um controle do tipo FormFields(antiga enchoice)
oView:AddField( ‘VIEW_ZYA‘, oStruZYA, ‘ZYAMASTER‘ )

//Adiciona no nosso View um controle do tipo FormGrid(antiga newgetdados)
oView:AddGrid( ‘VIEW_ZYB‘, oStruZYB, ‘ZYBDETAIL‘ )

// Criar um "box" horizontal para receber algum elemento da view
oView:CreateHorizontalBox( ‘SUPERIOR‘, 60 )
oView:CreateHorizontalBox( ‘INFERIOR‘, 40 )

// Relaciona o ID da View com o "box" para exibicao
oView:SetOwnerView( ‘VIEW_ZYA‘, ‘SUPERIOR‘ )
oView:SetOwnerView( ‘VIEW_ZYB‘, ‘INFERIOR‘ )

// Define campos que terao Auto Incremento
oView:AddIncrementField( ‘VIEW_ZYB‘, ‘ZYB_COD‘ )


// Liga a identificacao do componente
oView:EnableTitleView(‘VIEW_ZYB‘,‘Casos CAP‘)


Return oView



//FUNÇÃO PARA VALIDAR SE JÁ EXISTE CAP ATIVO PARA O CASO INFORMADO

User Function F70VALCAP()

Local cCap               := ‘‘
Local cCAPAtu          := ‘‘
Local cStatus          := ‘‘
Local nCount          := 0
Local lRet               := .T.
Local oModelCap      := FWModelActive()
Local nOperation      := oModelCap:GetOperation()
Local cQuery          := ‘‘
//Local aAreaCap        := GetArea()

cStatus := oModelCap:GetValue(‘ZYAMASTER‘,‘ZYA_STATUS‘)

     If (nOperation == MODEL_OPERATION_INSERT .OR. nOperation == MODEL_OPERATION_UPDATE ) .AND. cStatus == ‘1‘

          cCaso := oModelCap:GetValue(‘ZYBDETAIL‘,‘ZYB_CCASO‘ )

               cQuery := "SELECT ZYA_COD, ZYA_STATUS, ZYB_CCASO, ZYB.R_E_C_N_O_ "
               cQuery += " FROM " + RetSqlName("ZYA") + " ZYA "
               cQuery += " INNER JOIN " + RetSqlName("ZYB") + " ZYB ON ZYA_COD = ZYB_CODCAP AND ZYB.D_E_L_E_T_ = ‘‘ "
               cQuery += " WHERE ZYA.D_E_L_E_T_ = ‘‘ AND ZYA_STATUS = ‘1‘ AND ZYB_CCASO = ‘" + cCaso + "‘"
               cQuery := ChangeQuery( cQuery )

               If Select( "QRYCAP" ) > 0
                    QRYCAP->( dbCloseArea() )
               Endif

               DbUseArea(.T., "TOPCONN", TcGenQry( , , cQuery ), "QRYCAP", .T., .T.)

               QRYCAP->( dbGoTop() )
               QRYCAP->( dbEval( { || nCount++ } ) )
               QRYCAP->( dbGoTop() )


               cCap     := QRYCAP->ZYA_COD
               cCAPAtu     := M->ZYA_COD

                    If nCount >= 1 .AND. QRYCAP->ZYA_COD <> cCAPAtu
                    /*     ZYB->(RecLock("ZYB",.F.))
                         ZYB->(DbDelete())
                         ZYB->(MsUnLock())
                         */
                         If nOperation == MODEL_OPERATION_INSERT
                              Help( ,, ‘CAP já cadastrado‘,, "O Caso informado encontra-se ativo no CAP " + cCap, 1, 0 )
                              lRet := .F.
                         //oModelCap:SetInsertMessage(‘CAP já cadastrado‘, "O Caso informado encontra-se ativo no CAP " + cCap )
                         Else
                         //Personaliza as mensagens ao inserir, atualizar e deletar registros
                              Help( ,, ‘CAP já cadastrado‘,, "O Caso informado encontra-se ativo no CAP " + cCap, 1, 0 )
                              lRet := .F.
                         
                              //oModelCap:SetUpdateMessage(‘CAP já cadastrado‘, "O Caso informado encontra-se ativo no CAP " + cCap )
                         Endif
                    Endif
               //     RestArea(aAreaCap)
     Endif
     
Return lRet



//Valida se o caso informado pertence ao Grupo da ZYAMASTER
User Function F070CASO(cCaso, cGrupo)

Local lRet     := .T.

DbSelectArea("NVE")
DbSetOrder(3)

If NVE->( dbSeek( XFilial("NVE") + cCaso ) )
     If NVE->NVE_CGRPCL <> cGrupo     
          lRet := .F.
          Help(NIL, NIL, "Caso Incorreto", NIL, "O Caso informado não confere com o Grupo escolhido", 1, 0, NIL, NIL, NIL, NIL, NIL, {"Preencha ou selecione o caso correto para prosseguir"})
     Endif
Endif


Return lRet


User Function F70SIGSOC(cCaso)

Local cPart      := ‘‘
Local cSoc          := ‘‘


IF !INCLUI

     DbSelectArea(‘NVE‘)
     DbSetOrder(3)

     If NVE->( dbSeek( XFilial(‘NVE‘) + cCaso + ‘1‘ ) )
          
          cPart          := NVE->NVE_CPART1
          cSoc          := IIF(!EMPTY(cCaso),POSICIONE(‘RD0‘,1,XFILIAL(‘RD0‘)+cPart,‘RD0_SIGLA‘),‘‘)

     Endif

Endif
Return cSoc





User Function F70SIGEXE(cCaso)

Local cPart2     := ‘‘
Local cExe          := ‘‘

IF !INCLUI


     DbSelectArea(‘NVE‘)
     DbSetOrder(3)
     
     If NVE->( dbSeek( XFilial(‘NVE‘) + cCaso +"1" ) )
          
          cPart2          := NVE->NVE_CPART2
          cExe          := IIF(!EMPTY(cCaso),POSICIONE(‘RD0‘,1,XFILIAL(‘RD0‘)+cPart2,‘RD0_SIGLA‘),‘‘)
     Endif

Endif

Return cExe


//-------------------------------------------------------------------
/*/{Protheus.doc} F070FILT
Filtros por Caso e Redator

@author Luciana Silveira
@since 28/04/2022
@version P12
/*/
//-------------------------------------------------------------------


User Function F070FILT()

Local oDlg
Local cCaso     := space(TamSX3(‘NVE_NUMCAS‘)[1])
Local cRed     := space(TamSX3(‘ZB1_CODIGO‘)[1])



DEFINE MSDIALOG oDlg TITLE "Filtros" FROM 0,0 TO 200,350 PIXEL //"Filtrosî"

@ 005,005 Say "Filtrar por:" Size 030,015 PIXEL OF oDlg
@ 021,010 Say "Caso:" Size 030,015 PIXEL OF oDlg
@ 021,030 MSGET cCaso PICTURE "@!" F3 "NVE" SIZE 40,06 OF oDlg PIXEL

@ 021,090 Say "Faturista:" Size 030,015 PIXEL OF oDlg
@ 021,120 MSGET cRed PICTURE "@!" F3 "ZB1" SIZE 40,06 OF oDlg PIXEL

@ 050, 070 Button ‘Confirmar‘      Size 037, 012 Of oDlg Action U_F070BRW(cCaso, cRed) PIXEL
@ 050, 120 Button ‘Sair‘           Size 037, 012 Pixel Of oDlg Action oDlg:End()

ACTIVATE MSDIALOG oDlg CENTERED

Return (cCaso, CRed)



#INCLUDE ‘PROTHEUS.CH‘
#INCLUDE "TOTVS.CH"
#INCLUDE ‘FWMVCDEF.CH‘
#INCLUDE "RWMAKE.CH"
#INCLUDE ‘FWMBROWSE.CH‘

User Function F070BRW(cCaso, cRed)

     Local cArqBrw, cIndice1
     Local i

     Local aArea   := GetArea()
     Private oBrFilt := FwLoadBrw("F070BRW")
    Private aRotina     := MenuDef()
     Private cCadastro      := "Filtro de Casos"
     Private aCmpBrw     := {}, aSeek := {}, aDados := {}, aValores := {}



    If "X" == "Y" // Apenas para retirar os warnings de compilação
        //BrowseDef()
        MenuDef()
        ModelDef()
        ViewDef()
    EndIf

     oBrFilt:Activate()
     
     If !Empty(cArqBrw)
          Ferase(cArqBrw+GetDBExtension())
          Ferase(cArqBrw+OrdBagExt())
          cArqBrw := ""
          TRB->(DbCloseArea())
          delTabTmp(‘TRB‘)
         dbClearAll()
     Endif

    RestArea(aArea)

     //Array contendo os campos da tabela temporária
     
     AAdd(aCmpBrw,{"ZYA_STATUS"      , "C" , 01 , 0})
     AAdd(aCmpBrw,{"ZYA_COD"      , "C" , 06 , 0})
//     AAdd(aCmpBrw,{"ZYA_DESC"      , "C" , 50 , 0})
     AAdd(aCmpBrw,{"ZYA_CGRPCL"      , "C" , 06 , 0})
     AAdd(aCmpBrw,{"ACY_DESCRI"      , "C" , 50 , 0})     
     AAdd(aCmpBrw,{"ZYA_CODRED"      , "C" , 06 , 0})
     AAdd(aCmpBrw,{"ZYB_CCASO"      , "C" , 06 , 0})
     

     

     //Criar tabela temporária
     cArqBrw   := CriaTrab(aCmpBrw,.T.)
     
     //Definir indices da tabela
     cIndice1 := Alltrim(CriaTrab(,.F.))


     cIndice1 := Left(cIndice1,5)+Right(cIndice1,2)+"A"
     

     If File(cIndice1+OrdBagExt())
          FErase(cIndice1+OrdBagExt())
     EndIf

     //Criar e abrir a tabela
     If Select("TRB") > 0
          dbCloseArea()
     Endif
     dbUseArea(.T.,,cArqBrw,"TRB",Nil,.F.)
     
     /*Criar indice*/
     IndRegua("TRB", cIndice1, "ZYA_COD"     ,,, "Indice CAP...")
     
     dbClearIndex()
     dbSetIndex(cIndice1+OrdBagExt())

     
     /*popular a tabela*/

     cTabZYA := RetSqlName("ZYA")
    cTabZYB := RetSqlName("ZYB")
     cTabACY := RetSqlName("ACY")


    //cQry += "ZYA_STATUS, ZYA_COD, ZYA_DESC, ZYA_CGRPCL, ACY_DESCRI, ZYA_CODRED, ZYB_CCASO " + CRLF
    cQry := "SELECT " + CRLF
    cQry += "ZYA_STATUS, ZYA_COD, ZYA_CGRPCL, ACY_DESCRI, ZYA_CODRED, ZYB_CCASO " + CRLF
     cQry += " FROM " + cTabZYA + CRLF
    cQry += " INNER JOIN " + cTabZYB + CRLF
    cQry += " ON " + cTabZYB + ".ZYB_CODCAP = " + cTabZYA + ".ZYA_COD" + CRLF
     cQry += " AND " + cTabZYB + ".D_E_L_E_T_ = ‘‘ " + CRLF
    cQry += " INNER JOIN " + cTabACY + CRLF
    cQry += " ON " + cTabACY + ".ACY_GRPVEN = " + cTabZYA + ".ZYA_CGRPCL" + CRLF
     cQry += " AND " + cTabACY + ".D_E_L_E_T_ = ‘‘ " + CRLF
    cQry += " WHERE " + cTabZYA + ".ZYA_FILIAL = ‘" + xFilial("ZYA") + "‘" + CRLF
    cQry += " AND " + cTabZYA + ".D_E_L_E_T_ = ‘‘ " + CRLF
     
     If !Empty (cCaso) .AND. !Empty(cRed)
          cFilter += " AND ZYB_CCASO =‘"+cCaso+"‘ AND ZYA_CODRED =‘"+cRed+"‘"

     ElseIf !Empty (cCaso)
          cFilter := " AND ZYB_CCASO =‘"+cCaso+"‘"
     ElseIf !Empty(cRed)
          cFilter := " AND ZYA_CODRED =‘"+cRed+"‘"
     Endif
     cQry := cQry+cFilter



     ChangeQuery(cQry)

     If Select("TMP") > 0
          dbSelectArea("TMP")
          dbCloseArea()
     Endif

     DbUseArea(.T., "TOPCONN", TcGenQry( , , cQry ), "TMP", .T., .T.)


     While !TMP->(Eof())

          i++
          If RecLock("TRB",.t.)
               TRB->ZYA_STATUS := TMP->ZYA_STATUS
               TRB->ZYA_COD    := TMP->ZYA_COD
          //     TRB->ZYA_DESC   := TMP->ZYA_DESC
               TRB->ZYA_CGRPCL := TMP->ZYA_CGRPCL
               TRB->ACY_DESCRI := TMP->ACY_DESCRI               
               TRB->ZYA_CODRED := TMP->ZYA_CODRED
               TRB->ZYB_CCASO := TMP->ZYB_CCASO
               
               MsUnLock()
          Endif

          TMP->(DbSkip())

          EndDo

     dbSelectArea("TRB")
//     TRB->(DbGoTop())

     //Campos que irão compor o combo de pesquisa na tela principal
     Aadd(aSeek,{"ID"   , {{"","C",06,0, "ZYA_COD"   ,"@!"}}, 1, .T. } )

     
     oBrFilt := FWmBrowse():New()
     oBrFilt:SetAlias( "TRB" )
     oBrFilt:SetDescription( cCadastro )
     oBrFilt:SetMenuDef( ‘F070BRW‘ )
     
     
     //Legenda da grade, é obrigatório carregar antes de montar as colunas
     oBrFilt:AddLegend("ZYA_STATUS==‘1‘","GREEN"      ,"Ativo")
     oBrFilt:AddLegend("ZYA_STATUS==‘2‘","RED"           ,"Encerrado")
     
     oBrFilt:SetSeek(.T.,aSeek)
     oBrFilt:SetTemporary(.T.)
     oBrFilt:SetLocate()
     oBrFilt:SetUseFilter(.T.)
     oBrFilt:SetDBFFilter(.T.)
     If !Empty(cFilter)
          oBrFilt:SetFilterDefault( "TRB" ) //Exemplo de como inserir um filtro padrão &gt;&gt;&gt; "TR_ST == ‘A‘"
     Else
          oBrFilt:SetFilterDefault( "" )
     Endif
     oBrFilt:SetFieldFilter(aCmpBrw)
     oBrFilt:DisableDetails()



     //Detalhes das colunas que serão exibidas
     
     oBrFilt:SetColumns(MontaColunas("ZYA_COD"          ,"CAP"               ,01,"@!",0,006,0))
     //oBrFilt:SetColumns(MontaColunas("ZYA_DESC"          ,"Descr. CAP"     ,02,"@!",1,050,0))
     oBrFilt:SetColumns(MontaColunas("ZYA_CGRPCL"     ,"Grupo"          ,03,"@!",1,006,0))
     oBrFilt:SetColumns(MontaColunas("ACY_DESCRI"     ,"Grupo"          ,04,"@!",1,050,0))
     oBrFilt:SetColumns(MontaColunas("ZYA_CODRED"     ,"Redator"          ,05,"@!",1,006,0))
     oBrFilt:SetColumns(MontaColunas("ZYB_CCASO"          ,"Caso"               ,06,"@!",1,006,0))
     

     /*oBrFilt:Activate()
     //RestArea(aAreaFilt)
     
     If !Empty(cArqBrw)
          Ferase(cArqBrw+GetDBExtension())
          Ferase(cArqBrw+OrdBagExt())
          cArqBrw := ""
          TRB->(DbCloseArea())
          delTabTmp(‘TRB‘)
         dbClearAll()
     Endif
    */     
return

Static Function MontaColunas(cCampo,cTitulo,nArrData,cPicture,nAlign,nSize,nDecimal)
     Local aColumn
     Local bData      := {||}
     Default nAlign      := 1
     Default nSize      := 20
     Default nDecimal:= 0
     Default nArrData:= 0
     
     
     
     If nArrData > 0
          bData := &("{||" + cCampo +"}") //&amp;("{||oBrowse:DataArray[oBrowse:At(),"+STR(nArrData)+"]}")
     EndIf
     

     aColumn := {cTitulo,bData,,cPicture,nAlign,nSize,nDecimal,.F.,{||.T.},.F.,{||.T.},NIL,{||.T.},.F.,.F.,{}}
Return {aColumn}




Return oBrFilt


Static Function MenuDef()
Local aRotina := {}


ADD OPTION aRotina Title ‘Incluir‘     Action ‘VIEWDEF.F070BRW‘ OPERATION 3 ACCESS 0
ADD OPTION aRotina Title ‘Alterar‘     Action ‘VIEWDEF.F070BRW‘ OPERATION 4 ACCESS 0
ADD OPTION aRotina Title ‘Visualizar‘ Action ‘VIEWDEF.F070BRW‘ OPERATION 2 ACCESS 0
ADD OPTION aRotina Title ‘Excluir‘     Action ‘VIEWDEF.F070BRW‘ OPERATION 5 ACCESS 0



Return aRotina



//-------------------------------------------------------------------
Static Function ModelDef()
// Cria a estrutura a ser usada no Modelo de Dados



//Local oModelBRW := oModel:GetModel( ‘ZYBDETAIL‘ )

Local oModelBRW:= MPFormModel():New(‘BRWCAP‘, /*bPreValidacao*/, /*bVldPos*/, /*bCommit*/, /*bCancel*/ )


Local oZYA      := FWFormStruct( 1, ‘ZYA‘, /*bAvalCampo*/, /*lViewUsado*/ )
Local oZYB      := FWFormStruct( 1, ‘ZYB‘, /*bAvalCampo*/, /*lViewUsado*/ )

     

// Cria o objeto do Modelo de Dados
//oModel := MPFormModel():New( ‘COMP0CAP‘, /*bPreValidacao*/, bVldPos, /*bCommit*/, /*bCancel*/ )


// Adiciona ao modelo uma estrutura de formulário de edição por campo
oModelBRW:AddFields( ‘ZYAMASTER‘, /*cOwner*/, oZYA )

// Adiciona ao modelo uma estrutura de formulário de edição por grid
oModelBRW:AddGrid( ‘ZYBDETAIL‘, ‘ZYAMASTER‘ , oZYB, /*bLinePre*/, /*bLinePost*/, /*bPreVal*/, /*bPosVal*/, /*BLoad*/ )


// Faz relaciomaneto entre os compomentes do model
oModelBRW:SetRelation( ‘ZYBDETAIL‘, { { ‘ZYB_CODCAP‘, ‘ZYA_COD‘ } }, ZYB->( IndexKey( 1 ) ) )


// Liga o controle de nao repeticao de linha
oModelBRW:GetModel( ‘ZYBDETAIL‘ ):SetUniqueLine( { ‘ZYB_COD‘ } )



// Adiciona a descricao do Modelo de Dados
oModelBRW:SetDescription( ‘Filtro CAP‘ )

//Define a chave primaria utilizada pelo modelo
oModelBRW:SetPrimaryKey({‘ZYA_FILIAL‘, ‘ZYA_COD‘})
     
// Adiciona a descricao do Componente do Modelo de Dados
oModelBRW:GetModel( ‘ZYAMASTER‘ ):SetDescription( ‘Cabeçalho‘ )
oModelBRW:GetModel( ‘ZYBDETAIL‘ ):SetDescription( ‘Detalhe‘ )

Return oModelBRW



//-------------------------------------------------------------------
Static Function ViewDef()
// Cria um objeto de Modelo de Dados baseado no ModelDef do fonte informado
Local oZYA     := FWFormStruct( 2, ‘ZYA‘ )
Local oZYB     := FWFormStruct( 2, ‘ZYB‘ )
Local oModel     := FWLoadModel( ‘F070BRW‘ )
Local oView
Private lRet     := .T.



// Cria o objeto de View
oView := FWFormView():New()

// Define qual o Modelo de dados será utilizado
oView:SetModel( oModel )

//Adiciona no nosso View um controle do tipo FormFields(antiga enchoice)
oView:AddField( ‘VIEW_ZYA‘, oZYA, ‘ZYAMASTER‘ )

//Adiciona no nosso View um controle do tipo FormGrid(antiga newgetdados)
oView:AddGrid( ‘VIEW_ZYB‘, oZYB, ‘ZYBDETAIL‘ )

// Criar um "box" horizontal para receber algum elemento da view
oView:CreateHorizontalBox( ‘SUPERIOR‘, 60 )
oView:CreateHorizontalBox( ‘INFERIOR‘, 40 )

// Relaciona o ID da View com o "box" para exibicao
oView:SetOwnerView( ‘VIEW_ZYA‘, ‘SUPERIOR‘ )
oView:SetOwnerView( ‘VIEW_ZYB‘, ‘INFERIOR‘ )

// Define campos que terao Auto Incremento
oView:AddIncrementField( ‘VIEW_ZYB‘, ‘ZYB_COD‘ )


// Liga a identificacao do componente
oView:EnableTitleView(‘VIEW_ZYB‘,‘Casos CAP‘)


Return oView







Luciana Martins Silveira

Para postar no Fórum você precisa efetuar o seu login ou se registrar

 Mudar para Fórum

 

 

 
 
   
Pagina Principal Shopping PROTHEUS Tire suas duvidas Vagas Microsiga em todo Brasil Aprofunde seus conhecimentos Noticias Online Fale Conosco Pagina Principal