Imprimi Página | Fechar janela |
Browse com Query Impresso de: Helpfacil - Portal do conhecimento Nome do Forum: ADVPL Descrição do Forum: Dúvidas sobre a programação em ADVPL URL:http://www.helpfacil.com.br/display_topic_threads.asp?ForumID=1&TopicID=43422 Data da Impressão: terça-feira, 23 de abril de 2024 at 22:21 Topico: Browse com Query Postado por: LEOSSANTOS Assunto: Browse com Query Data Postagem: segunda-feira, 12 de outubro de 2020 at 10:30 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 Respostas: Postado Por: CJ_CAMPOS Data Postagem: segunda-feira, 12 de outubro de 2020 at 12:12 A cada volta das funções é necessãrio um refresh das informações. Bom Trabalho. Postado Por: LEOSSANTOS Data Postagem: segunda-feira, 12 de outubro de 2020 at 15:36 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? |
Imprimir Página | Fechar Janela |