|
Bem Vindo, Visitante
|
Todos os Fórums
ADVPL
|
Imprimir
Enviar Para um Amigo Precisa estar Logado
|
|
|
Assunto: |
Browse com Query |
|
Versão: |
12.1.27 |
|
Plataforma: |
Microsoft |
Complemento: |
|
|
DB: |
SQL Server |
Complemento: |
|
|
|
|
|
Mensagem do
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
|
|
|
Mensagem do
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. |
|
|
Mensagem do
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
|
|