Perguntas Atualização do mBrowse por tempo
- Wanderson
- Autor do Tópico
- Desconectado
- Membro Júnior
Menos
Mais
- Postagens: 39
- Obrigados Recebidos: 0
3 anos 4 semanas atrás #33188
por Wanderson
Atualização do mBrowse por tempo foi criado por Wanderson
Bom dia Pessoal,
Tenho uma Mbrowse que está gerando um certo desconforto para o usuário, pois todo vez ele tem que fechar a tela e abrir novamente para que a tela seja atualizada.
Como faço para deixar isso de forma automatica exemplo a cada 5 segundos a tela se auto atualizar se que o usuário precisa fechar e abrir novamente.
Segue o fonte caso vocês possam me ajudar.
User Function MFAT001()
Local aCores := {}
Private aRotina := { { "Pesquisar" , "AxPesqui" , 0, 1, 0, .F.},; // Pesquisar
{ "Imprimir" , "U_MFAT001I()", 0, 3, 0, NIL},; // Impressao
{ "Legenda" , "U_MFAT001L()", 0, 5, 0, NIL} } // Legenda
PRIVATE cCadastro := "Impressao da Lista de Separação"
Private cOrcAnt := ""
Private nOrc
Private cCliOrc
aCores := {{'Empty(CJ_PEDIDO).and.Empty(CJ_PEDF2)', 'BR_AMARELO' },; //Orcamento nao Liberado
{'U_MFAT001CR()', 'BR_AZUL'},; //Bloqueio de Crédito
{'CJ_IMPOS==" "', 'ENABLE' },; //Orcamento nao impresso
{'CJ_IMPOS=="S"', 'DISABLE'}} //Orcamento ja impresso
//Filtra apenas os orçamentos que não foram impressos
dbSelectArea("SCJ")
SCJ->( DbGoTop() )
cIndexSCJ := CriaTrab(nil,.f.)
cKey :="CJ_FILIAL+CJ_NUM"
cFilter := "CJ_FILIAL = '" + xFilial("SCJ") + "' .And. "
cFilter += "CJ_STATUS <> 'A' .And. CJ_STATUS <> 'C' .And. "
cFilter += "CJ_IMPOS <> 'S'"
IndRegua("SCJ",cIndexSCJ,cKey,,cFilter,"Selecionando Registros...")//"Selecionando Registros..."
dbSetOrder(1)
DbGoTop()
// Atualizado por Wanderson Fernandes de Souza em 22/10/2021
// Teste de atualização do Browser automatico
MBrowse(06, 01, 22, 75, 'SCJ',,,,,, aCores,,,,,,,,, 2000, {|| o := GetMBrowse(), o:GoBottom(), o:GoTop(), o:Refresh() })
// Funcao desativada temporariamente para testar a atualização acima
//mBrowse( 6, 1, 22, 75, "SCJ", , , , , , aCores )
Return( .T. )
Tenho uma Mbrowse que está gerando um certo desconforto para o usuário, pois todo vez ele tem que fechar a tela e abrir novamente para que a tela seja atualizada.
Como faço para deixar isso de forma automatica exemplo a cada 5 segundos a tela se auto atualizar se que o usuário precisa fechar e abrir novamente.
Segue o fonte caso vocês possam me ajudar.
User Function MFAT001()
Local aCores := {}
Private aRotina := { { "Pesquisar" , "AxPesqui" , 0, 1, 0, .F.},; // Pesquisar
{ "Imprimir" , "U_MFAT001I()", 0, 3, 0, NIL},; // Impressao
{ "Legenda" , "U_MFAT001L()", 0, 5, 0, NIL} } // Legenda
PRIVATE cCadastro := "Impressao da Lista de Separação"
Private cOrcAnt := ""
Private nOrc
Private cCliOrc
aCores := {{'Empty(CJ_PEDIDO).and.Empty(CJ_PEDF2)', 'BR_AMARELO' },; //Orcamento nao Liberado
{'U_MFAT001CR()', 'BR_AZUL'},; //Bloqueio de Crédito
{'CJ_IMPOS==" "', 'ENABLE' },; //Orcamento nao impresso
{'CJ_IMPOS=="S"', 'DISABLE'}} //Orcamento ja impresso
//Filtra apenas os orçamentos que não foram impressos
dbSelectArea("SCJ")
SCJ->( DbGoTop() )
cIndexSCJ := CriaTrab(nil,.f.)
cKey :="CJ_FILIAL+CJ_NUM"
cFilter := "CJ_FILIAL = '" + xFilial("SCJ") + "' .And. "
cFilter += "CJ_STATUS <> 'A' .And. CJ_STATUS <> 'C' .And. "
cFilter += "CJ_IMPOS <> 'S'"
IndRegua("SCJ",cIndexSCJ,cKey,,cFilter,"Selecionando Registros...")//"Selecionando Registros..."
dbSetOrder(1)
DbGoTop()
// Atualizado por Wanderson Fernandes de Souza em 22/10/2021
// Teste de atualização do Browser automatico
MBrowse(06, 01, 22, 75, 'SCJ',,,,,, aCores,,,,,,,,, 2000, {|| o := GetMBrowse(), o:GoBottom(), o:GoTop(), o:Refresh() })
// Funcao desativada temporariamente para testar a atualização acima
//mBrowse( 6, 1, 22, 75, "SCJ", , , , , , aCores )
Return( .T. )
Por favor Acessar ou Registrar para participar da conversa.
- admin
- Desconectado
- Administrador
Menos
Mais
- Postagens: 297
- Obrigados Recebidos: 21
3 anos 4 semanas atrás - 3 anos 4 semanas atrás #33189
por admin
Respondido por admin no tópico Atualização do mBrowse por tempo
Cara pra solucionar o seu problema, o ideal é vc partir para um listbox, para montar a tela de tempos em tempos, abaixo segue um exemplo.
Objeto oTimer
Objeto oTimer
#INCLUDE "APWIZARD.CH"
#INCLUDE "FILEIO.CH"
#INCLUDE "APWEBSRV.CH"
#INCLUDE "PROTHEUS.CH"
#INCLUDE "rwmake.ch"
#INCLUDE "TOPCONN.CH"
#include "msgraphi.ch"
#INCLUDE "Ap5Mail.ch"
User Function MONNFSE()
Private aCabNfse := {'','RPS','Serie','Emissao','Cliente','NFse','Status Atual'}
Private cQueryCad := ''
Private oPedis
Private oDlgPeds
Private cEOL := "CHR(13)+CHR(10)"
cEOL := Trim(cEOL)
cEOL := &cEOL
Private oSinal1 := LoadBitmap(GetResources(),"BR_MARROM")
Private oSinal2 := LoadBitmap(GetResources(),"BR_VERMELHO")
Private oSinal3 := LoadBitmap(GetResources(),"BR_PRETO")
Private oSinal4 := LoadBitmap(GetResources(),"BR_AZUL")
Private oSinal5 := LoadBitmap(GetResources(),"BR_ROSA")
Private oSinal6 := LoadBitmap(GetResources(),"BR_CINZA")
Private oSinal7 := LoadBitmap(GetResources(),"BR_BRANCO")
Private oSinal8 := LoadBitmap(GetResources(),"BR_LARANJA")
Private oSinal9 := LoadBitmap(GetResources(),"BR_VERDE")
Private oOk := LoadBitmap(GetResources(),"LBTIK")
Private oNo := LoadBitmap(GetResources(),"LBNO")
Private oRecs
Private cRecs := ''
Private oCnf1,oCnf2,oCnf3,oCnf4,oCnf5
Private cCnf1:='',cCnf2:='',cCnf3:='',cCnf4:='',cCnf5:=''
Private cPerg := PadR("MONNFSE",10)
Private oRpsC
Private oRPSV
Private nRpsC := 0
Private nRpsV := 0
Private nTempo := 100
Private aNfse := {{'','','','','','',0,.f.,''}}
ValidaPerg()
If !Pergunte(cPerg,.t.)
Return
Endif
DEFINE MSDIALOG oDlgPeds TITLE "Monitor RPS´s Transmitidas - " + DtoC(dDataBase) FROM 000, 000 TO 550, 1000 COLORS 0, 16777215 PIXEL
@ 090,450 SAY "Canceladas:" SIZE 80,10
@ 100,450 SAY oRpsC VAR nRpsC Picture "@E 999,999" SIZE 70,15 OF oDlgPeds PIXEL
@ 110,450 SAY "Validadas:" SIZE 80,10
@ 120,450 SAY oRPSV VAR nRpsV Picture "@E 999,999" SIZE 70,15 OF oDlgPeds PIXEL
MsAguarde({|| aNfse := MontaQ(1,1) },"Aguarde...") //"Selecionando Registros..."
nTot := Len(aNfse)
@ 130,450 SAY "Total RPS´s:" SIZE 80,10
@ 140,450 SAY oTotal VAR nTot Picture "@E 999,999" SIZE 70,15 OF oDlgPeds PIXEL
@ 010,003 LISTBOX oPedis FIELDS HEADER "" SIZE 440,260 OF oDlgPeds PIXEL
oPedis:aColumns := aCabNfse
oPedis:aHeaders := oPedis:aColumns
oPedis:SetArray(aNfse)
oPedis:bLine:= {|| {Iif(!Empty(aNfse[oPedis:nAt,5]) .And. !aNfse[oPedis:nAt,8],oSinal9,Iif(aNfse[oPedis:nAt,8],oSinal2,oSinal3)),;
aNfse[oPedis:nAt,1],;
aNfse[oPedis:nAt,2],;
aNfse[oPedis:nAt,3],;
aNfse[oPedis:nAt,4],;
aNfse[oPedis:nAt,5],;
aNfse[oPedis:nAt,6]}}
oTimer := TTimer():New(nTempo, {|| aNfse := MontaQ(2,oPedis:nAt) }, oDlgPeds )
oTimer:Activate()
oPedis:nAt := 1
oPedis:refresh()
oDlgPeds:Refresh()
@ 030, 450 BUTTON "Consulta" SIZE 040,015 PIXEL OF oDlgPeds ACTION Processa( {|| ConsNfse(oPedis:nAt) }, "Comunicando WebService Aguarde..." ) OF oDlgPeds
@ 050, 450 BUTTON "Legenda" SIZE 040,015 PIXEL OF oDlgPeds ACTION legenda() OF oDlgPeds
@ 070, 450 Button "Sair" Size 040,015 PIXEL OF oDlgPeds Action {||oDlgPeds:End()} OF oDlgPeds
ACTIVATE MSDIALOG oDlgPeds CENTERED
Return .t.
Static Function MontaQ(nVez,nPos)
Local cSerieRps := '13'
_cQuery := " SELECT F2_DOC, F2_SERIE, F2_EMISSAO, F2_CLIENTE, F2_LOJA, F2_NFSEELE, F2_NFSESTA, R_E_C_N_O_ REG, D_E_L_E_T_ APAGA "
_cQuery += " FROM " + RetSqlName("SF2")+ " AS SF2 "
_cQuery += " WHERE SF2.F2_FILIAL = '" + xFilial("SF2") + "' "
_cQuery += " AND SF2.F2_EMISSAO >= '" + Dtos(mv_par01) + "' "
_cQuery += " AND SF2.F2_EMISSAO <= '" + Dtos(mv_par02) + "' "
_cQuery += " AND SF2.F2_DOC >= '" + mv_par03 + "' "
_cQuery += " AND SF2.F2_DOC <= '" + mv_par04 + "' "
_cQuery += " AND SF2.F2_SERIE = '" + mv_par05 + "' "
//_cQuery += " AND SF2.D_E_L_E_T_ = ' ' "
_cQuery += " AND SF2.F2_NFSEELE <> '' "
_cQuery += " AND SF2.F2_NFSESTA <> '' "
_cQuery += " AND SF2.F2_NFSECDV <> '' "
_cQuery += " ORDER BY F2_DOC "
_cQuery := ChangeQuery(_cQuery)
DbUseArea(.T.,"TOPCONN",TCGenQry(,,_cQuery),'TRAF2',.F.,.T.)
TcSetField('TRAF2','F2_EMISSAO','D')
TRAF2->(DbGoTop())
Count To nPeds
nRpsC := 0
nRpsV := 0
aNfse := {}
ProcRegua(nPeds)
DbSelectArea("TRAF2")
dbGoTop()
While TRAF2->(!Eof())
IncProc("NF: "+TRAF2->F2_DOC + Chr(13) + ' Validadas: ' + TransForm(nRpsV,"9999") + ' Canceladas: ' + TransForm(nRpsC,"9999") + " de: " + TransForm(nPeds,"9999"))
SA1->(dbSetOrder(1), dbSeek(xFilial("SA1")+TRAF2->F2_CLIENTE+TRAF2->F2_LOJA))
If !Empty(TRAF2->F2_NFSEELE) .And. Empty(TRAF2->APAGA)
nRpsV++
ElseIf !Empty(TRAF2->APAGA)
nRpsC++
Endif
AAdd(aNfse,{ TRAF2->F2_DOC,;
TRAF2->F2_SERIE,;
DtoC(TRAF2->F2_EMISSAO),;
Left(SA1->A1_NOME,40),;
TRAF2->F2_NFSEELE,;
TRAF2->F2_NFSESTA,;
TRAF2->REG,;
!Empty(TRAF2->APAGA),;
SA1->A1_CGC})
TRAF2->(dbSkip(1))
Enddo
If Empty(Len(aNfse))
aNfse := {{'','','','','','',0,.f.,''}}
Endif
TRAF2->(dbCloseArea())
If nVez <> 1
oPedis:SetArray(aNfse)
oPedis:bLine:= {|| {Iif(!Empty(aNfse[oPedis:nAt,5]) .And. !aNfse[oPedis:nAt,8],oSinal9,Iif(aNfse[oPedis:nAt,8],oSinal2,oSinal3)),;
aNfse[oPedis:nAt,1],;
aNfse[oPedis:nAt,2],;
aNfse[oPedis:nAt,3],;
aNfse[oPedis:nAt,4],;
aNfse[oPedis:nAt,5],;
aNfse[oPedis:nAt,6]}}
oPedis:nAt := Iif(nPos<=Len(aNfse),nPos,1)
oPedis:refresh()
oDlgPeds:Refresh()
Endif
nTempo := 8000
oRpsC:Refresh()
oRpsV:Refresh()
Return aNfse
******************************************
Static Function Legenda()
aCorDesc := {{'BR_VERMELHO','RPS Não Processado' },;
{'BR_VERDE' ,'RPS Validado Com Sucesso'},;
{'BR_PRETO' ,'RPS Apresenta Erro'}}
BrwLegenda( 'Legenda', 'Status', aCorDesc ) //"Legenda"###"Status"
Return
//------------------------------------------------------------------------
Static Function ValidaPerg()
Local aPerg := {}
Local i := 0
// aPerg[n,01] := SX1->X1_GRUPO
// aPerg[n,02] := SX1->X1_ORDEM
// aPerg[n,03] := SX1->X1_PERGUNT
// aPerg[n,04] := SX1->X1_VARIAVL
// aPerg[n,05] := SX1->X1_TIPO
// aPerg[n,06] := SX1->X1_TAMANHO
// aPerg[n,07] := SX1->X1_DECIMAL
// aPerg[n,08] := SX1->X1_PRESEL
// aPerg[n,09] := SX1->X1_GSC
// aPerg[n,10] := SX1->X1_VALID
// aPerg[n,11] := SX1->X1_VAR01
// aPerg[n,12] := SX1->X1_DEF01
// aPerg[n,13] := SX1->X1_DEF02
// aPerg[n,14] := SX1->X1_F3
AADD(aPerg, {cPerg, "01", "Emissao", "Mv_ch1", "D", 8, 0, 0, "G", "", "mv_par01", "", "", "", ""})
AADD(aPerg, {cPerg, "02", "Ate Emissao", "Mv_ch2", "D", 8, 0, 0, "G", "", "mv_par02", "", "", "", ""})
AADD(aPerg, {cPerg, "03", "Documento de", "Mv_ch3", "C", 09, 0, 0, "G", "", "mv_par03", "", "", "", ""})
AADD(aPerg, {cPerg, "04", "Documento Ate", "Mv_ch4", "C", 09, 0, 0, "G", "", "mv_par04", "", "", "", ""})
AADD(aPerg, {cPerg, "05", "Serie", "Mv_ch5", "C", 03, 0, 0, "G", "", "mv_par05", "", "", "", ""})
For i := 1 To Len(aPerg)
DbSelectArea("SX1")
DbSetOrder(1)
If ! DbSeek(cPerg + aPerg[i,2],.t.)
Reclock("SX1",.t.)
SX1->X1_GRUPO := cPerg
SX1->X1_ORDEM := aPerg[i,2]
SX1->X1_PERGUNT := aPerg[i,3]
SX1->X1_VARIAVL := aPerg[i,4]
SX1->X1_TIPO := aPerg[i,5]
SX1->X1_TAMANHO := aPerg[i,6]
SX1->X1_DECIMAL := aPerg[i,7]
SX1->X1_PRESEL := aPerg[i,8]
SX1->X1_GSC := aPerg[i,9]
SX1->X1_VALID := aPerg[i,10]
SX1->X1_VAR01 := aPerg[i,11]
SX1->X1_DEF01 := aPerg[i,12]
SX1->X1_DEF02 := aPerg[i,13]
SX1->X1_F3 := aPerg[i,14]
SX1->X1_DEF03 := aPerg[i,15]
EndIf
Next i
Return(.T.)
Ultima edição: 3 anos 4 semanas atrás por admin.
Por favor Acessar ou Registrar para participar da conversa.
- Wanderson
- Autor do Tópico
- Desconectado
- Membro Júnior
Menos
Mais
- Postagens: 39
- Obrigados Recebidos: 0
- admin
- Desconectado
- Administrador
Menos
Mais
- Postagens: 297
- Obrigados Recebidos: 21
3 anos 4 semanas atrás #33191
por admin
Respondido por admin no tópico Atualização do mBrowse por tempo
Só usar este exemplo brother que a cada 8 minutos senão me engano ele dá um refresh na tela e reprocessa a query e o listbox, qualquer dúvidas estamos ai ok.
Por favor Acessar ou Registrar para participar da conversa.
Tempo para a criação da página:0.093 segundos