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:
Browse com Query
Versão:
12.1.27
Plataforma:
Microsoft
Complemento:
DB:
SQL Server
Complemento:
LinkedIn
Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário LEOSSANTOS LEOSSANTOS em 12/10/2020, 10:30 h
Local: SP  Registro: 28/08/2020  Postagens: 21
Montei um browse com query seguindo um exemplo que peguei no TDN, e criei uma tela MVC pra Incluir, Alterar e Visualizar.
Meu problema é quando clico por exemplo em visualizar, abre a tela MVC, quando fecho q volto para o browse, aparece umas linhas duplicadas que não da pra selecionar, se eu fizer uma pesquisa ou aplicar um filtro, ou simplesmente apertar as teclas Home ou End volta a apresentar os registro normalmente.
Como posso corrigir isso?

=========================================================
Codigo fonte:
---------------------------------------------------------
#Include "TOTVS.ch"
#Include ‘FwMvcDef.ch‘

User Function ZS0CadQry()
    Local aArea   := GetArea()
    Local oBrowse := FwLoadBrw("ZS0CadQry")
    
    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   := FWMarkBrowse():New()
    Local cAlias    := GetNextAlias()
    Local nContFlds := 0
    Local cQry      := ‘‘
    Local aFields   := {}
    Local aColumns := {}

    aAdd( aFields, {"ZS0_NRO",     "Numero",     5} )
    aAdd( aFields, {"ZS0_DATA",    "Data",      10} )
    aAdd( aFields, {"ZS0_CODSTA", "Cod.Status",10} )
    aAdd( aFields, {"ZS0_CODCON", "Cod.Con.", 10} )
    aAdd( aFields, {"ZS0_CODPOR", "Cod.Por.", 10} )
    aAdd( aFields, {"ZS1_NOME",    "Nome",      30} )
    aAdd( aFields, {"ZS0_PRIOR",   "Prior",      5} )

    For nContFlds := 1 To Len( aFields )
        AAdd( aColumns, FWBrwColumn():New() )
        aColumns[Len(aColumns)]:SetData( &("{ || " + aFields[nContFlds][1] + " }") )
        aColumns[Len(aColumns)]:SetTitle( aFields[nContFlds][2] )
        aColumns[Len(aColumns)]:SetSize( aFields[nContFlds][3] )
        aColumns[Len(aColumns)]:SetID( aFields[nContFlds][1] )
    Next nContFlds

    cTabZS0 := RetSqlName("ZS0")
    cTabZS1 := RetSqlName("ZS1")

    cQry := "SELECT" + CRLF
    cQry += "ZS0_MARK, ZS0_NRO, ZS0_DATA, ZS0_CODCON, ZS1_NOME, ZS0_CODSTA, ZS0_CODPOR, ZS0_PRIOR" + CRLF
    cQry +="FROM " + cTabZS0 + CRLF
    cQry += "INNER JOIN " + cTabZS1 + CRLF
    cQry += "ON " + cTabZS1 + ".ZS1_CODIGO = " + cTabZS0 + ".ZS0_CODCON" + CRLF
    cQry += "WHERE " + cTabZS0 + ".ZS0_FILIAL = ‘" + xFilial("ZS0") + "‘ " + CRLF
    cQry += "AND " + cTabZS0 + ".D_E_L_E_T_ = ‘‘ " + CRLF
    cQry += "ORDER BY " + cTabZS0 + ".ZS0_FILIAL, " + cTabZS0 + ".ZS0_PRIOR, " + cTabZS0 + ".ZS0_DATA"
    ChageQuery(cQry)

    oBrowse:SetColumns( aColumns )
    oBrowse:SetDataQuery()
    oBrowse:SetQuery( cQry )
    oBrowse:SetAlias( cAlias )
    oBrowse:SetDescription("Follow Up")
    oBrowse:SetDbfFilter(.T.)
    oBrowse:SetMenuDef(‘ZS0CadQry‘)
    oBrowse:SetFieldMark(‘ZS0_MARK‘)

Return oBrowse

Static Function MenuDef()
     Local aRotina := {}
     
    Add OPTION aRotina TITLE ‘Incluir‘    ACTION ‘VIEWDEF.ZS0CadQry‘ OPERATION 3 ACCESS 0
    Add OPTION aRotina TITLE ‘Alterar‘    ACTION ‘VIEWDEF.ZS0CadQry‘ OPERATION 4 ACCESS 0
    Add OPTION aRotina TITLE ‘Visualizar‘ ACTION ‘VIEWDEF.ZS0CadQry‘ OPERATION 2 ACCESS 0

Return aRotina

Static Function ModelDef()
    Local oModel      := MPFormModel():New("XZS0CadQry")
    Local oStrRecl      := FWFormStruct(1,"ZS0")
    Local oStrProd      := FWFormStruct(1,"ZS7")
    Local aRelation := {}

    oModel:AddFields(‘ModelRecl‘,,oStrRecl)
    oModel:AddFields(‘ModelProd‘,‘ModelRecl‘,oStrProd)

    oModel:SetPrimaryKey({‘ZS0_FILIAL‘,‘ZS0_NRO‘})

    aRelation := {}
    aAdd(aRelation,{‘ZS7_FILIAL‘,‘xFilial("ZS7")‘})
    aAdd(aRelation,{‘ZS7_NROREC‘,‘ZS0_NRO‘})
    oModel:SetRelation(‘ModelProd‘,aRelation,ZS7->(IndexKey(1)))
Return oModel

Static Function ViewDef()
    local oView      := FWFormView():New()
    Local oModel      := FWLoadModel("ZS0CadQry")
    Local oStrRecl      := FwFormStruct(2,"ZS0")
    Local oStrProd      := FwFormStruct(2,"ZS7")

    oView:SetModel(oModel)
    
    oView:AddField(‘ViewRecl‘,oStrRecl,‘ModelRecl‘)
    oView:AddGrid(‘ViewProd‘,oStrProd,‘ModelProd‘)

    oView:CreateHorizontalBox(‘BxRecl‘,60)
    oView:CreateHorizontalBox(‘BxProd‘,40)

    oView:SetOwnerView(‘ViewRecl‘,‘BxRecl‘)
    oView:SetOwnerView(‘ViewProd‘,‘BxProd‘)

Return oView


Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário CJ_CAMPOS CJ_CAMPOS em 12/10/2020, 12:12 h
Local: SP  Registro: 22/04/2020  Postagens: 61
A cada volta das funções é necessãrio um refresh das informações.

Bom Trabalho.

Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário LEOSSANTOS LEOSSANTOS em 12/10/2020, 15:36 h
Local: SP  Registro: 28/08/2020  Postagens: 21
Sou iniciante em ADVPL, até procurei um ponto pra colocar um refresh no browse mas não achei, em que ponto devo colocar o refresh?

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