- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- Filtro na MsNewGetDados
×
Linguagem de Programação ADVPL
Perguntas Filtro na MsNewGetDados
- vwavelino
- Autor do Tópico
- Desconectado
- Membro Iniciado
Menos
Mais
- Postagens: 6
- Obrigados Recebidos: 0
11 anos 9 meses atrás #10589
por vwavelino
Filtro na MsNewGetDados foi criado por vwavelino
Pessoal, estou montando uma tela para alteração em uma tabela customizada (ZLM) utilizando MsNewGetDados. Carrego a tabela ZLM no aCols e mostro na Grid. Até aí tudo funcionando! O usuário consegue alterar os dados tranquilamente.
Mas dois detalhes estão me deixando com mais cabelos brancos, rs, e acredito que sejam coisas bobas de resolver. rsrs
1 - Qualquer alteração efetuada é gravada na tabela, independentemente de pressionar o botão OK ou CANCELAR.
2 - Preciso inserir um botão de filtro, para que o usuário escolha quais registros quer ver na GRID. consegui inserir o botão na enchoice mas não sei como implementar o filtro e atualizar a grid.
Alguém poderia dar um HELP???
Muito obrigado!
Mas dois detalhes estão me deixando com mais cabelos brancos, rs, e acredito que sejam coisas bobas de resolver. rsrs
1 - Qualquer alteração efetuada é gravada na tabela, independentemente de pressionar o botão OK ou CANCELAR.
2 - Preciso inserir um botão de filtro, para que o usuário escolha quais registros quer ver na GRID. consegui inserir o botão na enchoice mas não sei como implementar o filtro e atualizar a grid.
Alguém poderia dar um HELP???
Muito obrigado!
Por favor Acessar ou Registrar para participar da conversa.
- lalberto
- Desconectado
- Administrador
Menos
Mais
- Postagens: 3676
- Obrigados Recebidos: 6
11 anos 9 meses atrás #10608
por lalberto
Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br
Respondido por lalberto no tópico Filtro na MsNewGetDados
Vitor boa noite e seja bem vindo ao master advpl, faz o seguinte compacta e anexa seu fonte ao topico, vou dar uma analisada ok.
Abraços.
Abraços.
Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br
Por favor Acessar ou Registrar para participar da conversa.
- vwavelino
- Autor do Tópico
- Desconectado
- Membro Iniciado
Menos
Mais
- Postagens: 6
- Obrigados Recebidos: 0
11 anos 9 meses atrás #10620
por vwavelino
Respondido por vwavelino no tópico Filtro na MsNewGetDados
Opa Luiz, muito obrigado por responder. Mas, depois de muita "luta", acabei achando a solução para ambos os problemas. De qualquer forma, valeu pela disposição em ajudar.
Abraço.
Abraço.
Por favor Acessar ou Registrar para participar da conversa.
- lalberto
- Desconectado
- Administrador
Menos
Mais
- Postagens: 3676
- Obrigados Recebidos: 6
11 anos 9 meses atrás #10621
por lalberto
Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br
Respondido por lalberto no tópico Filtro na MsNewGetDados
Vitor sei que é abusar, mas poderia detalhar como chegou a solução, pois alguns membros poderão ter o mesmo problema no futuro e assim criamos um grande banco de conhecimento ok.
Obrigado.
Obrigado.
Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br
Por favor Acessar ou Registrar para participar da conversa.
- vwavelino
- Autor do Tópico
- Desconectado
- Membro Iniciado
Menos
Mais
- Postagens: 6
- Obrigados Recebidos: 0
11 anos 9 meses atrás #10668
por vwavelino
Respondido por vwavelino no tópico Filtro na MsNewGetDados
Claro Luiz, abuso nenhum, pelo contrário, é um prazer poder colaborar.
Segue:
1 - Qualquer alteração efetuada é gravada na tabela, independentemente de pressionar o botão OK ou CANCELAR.
Resolvi da seguinte forma: bastou incluir a variável 'lOK' no bloco de código do botão OK e ao sair verifico o conteúdo desta variável.
...
oDlg:bInit := {|| EnchoiceBar(oDlg, {||oDlg:End(),lOk:=.T.}, {||oDlg:End()},,aButtons)}
...
If lOK
grava()
EndIf
Return
2 - ..como implementar o filtro e atualizar a grid.
Ficou da seguinte forma: utilizei a função padrão de filtro do protheus na minha tabela e joguei para 'aCols2', após isso, chamo a função para 'clonar' o novo acols para o acols da grid e dou um Refresh na grid. É isso.
Espero que tenha ficado claro e que possa ser útil para quem precisar. Abs
... // inclusão do botal Filtro na enchoice
aAdd( aButtons, { "Filtro", {|| u_fFilZLM(),u_atual()}, "Filtrar", "Filtrar" } )
...
// FILTRO
User Function fFilZLM()
Static cFiltroRet := ""
lFiltro := .T.
cFiltroRet := BuildExpr("ZLM",,cFiltroRet)
EndFilBrw("ZLM",aIndexZLM)
aIndexZLM := {}
bFiltraBrw := {|| FilBrowse("ZLM",@aIndexZLM,@cFiltroRet) }
Eval(bFiltraBrw)
dbGoTop()
aCols2:={}
dbSelectArea("ZLM")
dbSetOrder(1)
dbGoTop()
dbSeek(xFilial("ZLM") + dTos(DDATABASE))
While !EOF() .And. ZLM->ZLM_DATA == DDATABASE
_dData := ZLM->ZLM_DATA
_cNome := Posicione("SA1",1,xFilial("SA1")+ZLM->ZLM_CLI+ZLM->ZLM_LOJA,"A1_NREDUZ")
_cLinha := Posicione("SG2",1,xFilial("SG2")+ZLM->ZLM_PROD,"G2_RECURSO")
aAdd(aCols2,{_cLinha,ZLM->ZLM_PROD,ZLM->ZLM_CLI,ZLM->ZLM_LOJA,_cNome,;
ZLM->ZLM_QTDD0,;
ZLM->ZLM_QTDD1,;
ZLM->ZLM_QTDD2,;
ZLM->ZLM_QTDD3,;
ZLM->ZLM_QTDD4,;
ZLM->ZLM_QTDD5,;
ZLM->ZLM_QTDD6,;
ZLM->ZLM_QTDD7,.F.})
dbSkip()
EndDo
Return Nil
// Atualiza GRID após filtro
User Function atual()
If lFiltro
oGetD:aCols := aclone (aCols2)
oGetD:nAt = 1
oGetD:oBrowse:Refresh()
oGetD:Show ()
EndIf
Segue:
1 - Qualquer alteração efetuada é gravada na tabela, independentemente de pressionar o botão OK ou CANCELAR.
Resolvi da seguinte forma: bastou incluir a variável 'lOK' no bloco de código do botão OK e ao sair verifico o conteúdo desta variável.
...
oDlg:bInit := {|| EnchoiceBar(oDlg, {||oDlg:End(),lOk:=.T.}, {||oDlg:End()},,aButtons)}
...
If lOK
grava()
EndIf
Return
2 - ..como implementar o filtro e atualizar a grid.
Ficou da seguinte forma: utilizei a função padrão de filtro do protheus na minha tabela e joguei para 'aCols2', após isso, chamo a função para 'clonar' o novo acols para o acols da grid e dou um Refresh na grid. É isso.
Espero que tenha ficado claro e que possa ser útil para quem precisar. Abs
... // inclusão do botal Filtro na enchoice
aAdd( aButtons, { "Filtro", {|| u_fFilZLM(),u_atual()}, "Filtrar", "Filtrar" } )
...
// FILTRO
User Function fFilZLM()
Static cFiltroRet := ""
lFiltro := .T.
cFiltroRet := BuildExpr("ZLM",,cFiltroRet)
EndFilBrw("ZLM",aIndexZLM)
aIndexZLM := {}
bFiltraBrw := {|| FilBrowse("ZLM",@aIndexZLM,@cFiltroRet) }
Eval(bFiltraBrw)
dbGoTop()
aCols2:={}
dbSelectArea("ZLM")
dbSetOrder(1)
dbGoTop()
dbSeek(xFilial("ZLM") + dTos(DDATABASE))
While !EOF() .And. ZLM->ZLM_DATA == DDATABASE
_dData := ZLM->ZLM_DATA
_cNome := Posicione("SA1",1,xFilial("SA1")+ZLM->ZLM_CLI+ZLM->ZLM_LOJA,"A1_NREDUZ")
_cLinha := Posicione("SG2",1,xFilial("SG2")+ZLM->ZLM_PROD,"G2_RECURSO")
aAdd(aCols2,{_cLinha,ZLM->ZLM_PROD,ZLM->ZLM_CLI,ZLM->ZLM_LOJA,_cNome,;
ZLM->ZLM_QTDD0,;
ZLM->ZLM_QTDD1,;
ZLM->ZLM_QTDD2,;
ZLM->ZLM_QTDD3,;
ZLM->ZLM_QTDD4,;
ZLM->ZLM_QTDD5,;
ZLM->ZLM_QTDD6,;
ZLM->ZLM_QTDD7,.F.})
dbSkip()
EndDo
Return Nil
// Atualiza GRID após filtro
User Function atual()
If lFiltro
oGetD:aCols := aclone (aCols2)
oGetD:nAt = 1
oGetD:oBrowse:Refresh()
oGetD:Show ()
EndIf
Por favor Acessar ou Registrar para participar da conversa.
- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- Filtro na MsNewGetDados
Tempo para a criação da página:0.090 segundos