× Linguagem de Programação ADVPL

Perguntas Ajuda com Markbrowse

Mais
9 anos 10 meses atrás #23290 por sidneyoa
Boa tarde pessoal,

Estou precisando de uma ajuda com uma tela feita em markbrowse, sou novo nisso e estou com dificuldade.

Preciso incluir um filtro e não estou sando como fazer, e uma outra coisa, eu preciso colocar um totalizador no rodapé e não sei fazer isso.

Se alguem puder ajudar eu agradeço.

Segue o codigo:

#INCLUDE "PROTHEUS.CH"
#INCLUDE "RWMAKE.CH"
#INCLUDE "TopConn.ch"
#INCLUDE "vKey.ch"
/*/
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÚÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄ¿±±
±±³Fun‡„o ³PICKSEL ³ Autor ³ ³ Data ³ 21.09.12 ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄ´±±
±±³Descri‡„o ³ ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´±±
±±³ Uso ³ ³±±
±±ÀÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
/*/
User Function CONSSE1()

Local cFilSE1 := ""
Local aCpoBrw
Local aCpoTmp
Local cArq
Local oGetDados
Private CPERG := "HLPSE1"
Private lInverte := .T.
Private cmarca := GetMark()
Private oMark
Private cPesq := Space(50)
Private lCheck1 := .t.
Private lCheck2 := .t.
Private lCheck3 := .t.
Private cCombo, cOrdem := " "
//Private aOrdem := {"DTEMISSAO","TITULO","CODIGO"}
Private aOrdem := {"Dt. Emissao","Titulo","Cod. Cli."}
Private cPESQUISA:= SPACE(200), oPesquisa
Private _aMarcados:={}
Private nValor := 0
Private oSayTotalD
Private oSayTotalS

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Monta Query ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

cQuery := " SELECT E1_EMISSAO, E1_NUM, E1_PARCELA, E1_CLIENTE, E1_LOJA, E1_NOMCLI, E1_VENCREA, E1_VALOR "
cQuery += " FROM SE1010 "
cQuery += " WHERE E1_VENCREA = '"+DTOS(dDataBase)+"' "
cQuery += " AND E1_NOMCLI like '%"+MV_PAR01+"%' "
cQuery += " AND D_E_L_E_T_ = ' ' "
cQuery += " AND E1_BAIXA = ' ' "


cQuery := ChangeQuery(cQuery)

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Fecha Alias se estiver em Uso ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
If Select("TRB") >0
dbSelectArea("TRB")
dbCloseArea()
Endif

If Select("TMP") >0
dbSelectArea("TMP")
dbCloseArea()
Endif


//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Monta Area de Trabalho executando a Query ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
TCQUERY cQuery New Alias "TRB"
dbSelectArea("TRB")

dbGoTop()

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Monta arquivo temporario ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

aCpoTmp:={}
aAdd(aCpoTmp,{"DtEmissao" ,"D",08,0})
aAdd(aCpoTmp,{"Titulo" ,"C",06,0})
aAdd(aCpoTmp,{"Parcela" ,"C",02,0})
aAdd(aCpoTmp,{"Codigo" ,"C",06,0})
aAdd(aCpoTmp,{"Loja" ,"C",02,0})
aAdd(aCpoTmp,{"Cliente" ,"C",30,0})
aAdd(aCpoTmp,{"DtVencReal" ,"D",08,0})
aAdd(aCpoTmp,{"nValor" ,"C",12,2})

cArq:=Criatrab(aCpoTmp,.T.)
dbUseArea(.t.,,cArq,"TMP")

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Alimenta arquivo temporario ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
dbSelectArea("TMP")

While !TRB->(EOF())
DbSelectArea("TMP")

RecLock("TMP",.t.)
TMP->DtEmissao := STOD(TRB->E1_EMISSAO)
TMP->Titulo := TRB->E1_NUM
TMP->Parcela := TRB->E1_PARCELA
TMP->Codigo := TRB->E1_CLIENTE
TMP->Loja := TRB->E1_LOJA
TMP->Cliente := TRB->E1_NOMCLI
TMP->DtVencReal := STOD(TRB->E1_VENCREA)
TMP->nValor := TRANSFORM(TRB->E1_VALOR, "@E 999,999.99")

TMP->(MsUnlock())

DbSelectArea("TRB")
TRB->(dbSkip())

End

_cArq1 := CriaTrab(NIL,.F.)
_cChave1 := "TMP->DTEMISSAO
IndRegua("TMP",_cArq1,_cChave1,,,"Selecionando Regs...")

_cArq2 := CriaTrab(NIL,.F.)
_cChave2 := "TMP->TITULO"
IndRegua("TMP",_cArq2,_cChave2,,,"Selecionando Regs...")

_cArq3 := CriaTrab(NIL,.F.)
_cChave3 := "TMP->CODIGO"

IndRegua("TMP",_cArq3,_cChave3,,,"Selecionando Regs...")


dbClearIndex()
dbSetIndex(_cArq1+OrdBagExt())
dbSetIndex(_cArq2+OrdBagExt())
dbSetIndex(_cArq3+OrdBagExt())


TRB->(dbCloseArea())

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Array com definicoes dos campos do browse ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

aCpoBrw:={}
aAdd(aCpoBrw,{"DtEmissao" ,"" ,"Dt. Emissao" , ,"08","0"})
aAdd(aCpoBrw,{"Titulo" ,"" ,"Titulo" ,"@!" ,"06","0"})
aAdd(aCpoBrw,{"Parcela" ,"" ,"Parcela" ,"@!" ,"02","0"})
aAdd(aCpoBrw,{"Codigo" ,"" ,"Codigo" ,"@!" ,"06","0"})
aAdd(aCpoBrw,{"Loja" ,"" ,"Loja" ,"@!" ,"02","0"})
aAdd(aCpoBrw,{"Cliente" ,"" ,"Cliente" ,"@!" ,"30","0"})
aAdd(aCpoBrw,{"DtVencReal" ,"" ,"Dt. VencReal" , ,"08","0"})
aAdd(aCpoBrw,{"nValor" ,"" ,"Valor" ,"@E" ,"12","2"})

@ 000,000 TO 650,935 DIALOG oDlgLib TITLE " VISUALIZACAO DO CONTAS A RECEBER " //850,1135650,935

oMark:=MsSelect():New("TMP","OK","",aCpoBRW,@lInverte,@cMarca,{035,005,280,465},,,,,)//{015,005,400,630,565}
oMark:oBrowse:lHasMark := .T.
oMark:oBrowse:lCanAllMark:=.T.
//oMark:SetFilterDefault(cFilSE2)
//oMark:oBrowse:AddFilter(cTitle,xCondition)

@ 003,006 To 034,315 Title OemToAnsi("Contas a Receber")
@ 016,007 Say "Ordem: "
@ 016,025 ComboBox cOrdem ITEMS aOrdem SIZE 60,50 Object oOrdem
@ 016,085 Get cPESQUISA Size 200,10 Object oPesquisa
oOrdem:bChange := {|| FORDENA(CORDEM),oMark:oBrowse:Refresh(.T.)}

@ 016,350 Button "Pesquisar" Size 50,13 Action Procura(CORDEM)
@ 300,360 Button "Filtro" Size 50,13 Action U_HLPSE1() Object oBtnRet
//@ 300,360 Button "Rel. CP" Size 50,13 Action U_CP() Object oBtnREL
//@ 300,310 Button "Sair" Size 50,13 Action IIF(PREPSAIR(),Close(oDlgLIb),"") Object oBtnInv
@ 300,410 Button "Sair" Size 50,13 Action Close(oDlgLIb) Object oBtnInv

dbSelectArea("TMP")
dbGoTop()

oMark:oBrowse:Refresh()

ACTIVATE DIALOG oDlgLib CENTERED

TMP->(dbCloseArea())

FERASE(cArq+OrdBagext())
FERASE(cArq)


Return


/*
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±
±±ºPrograma ³PREPSAIR ºAutor ³ º Data ³ 21/09/12 º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºDesc. ³ Funcao que Prepara o Mark Browser para Sair º±±
±±º ³ º±±
±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
*/
/*
Static Function PREPSAIR()

Local cRet
Local aArea := GetArea()

DBSELECTAREA("SE2")
DBSETORDER(1)

WHILE !EMPTY(SC5->C5_MARK)
RECLOCK("SC5")
SC5->C5_MARK:= " "
SC5->(MSUNLOCK())
SC5->(DBSKIP())
ENDDO

Return .T.

*/
/*
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±
±±ºPrograma ³ PROCURA ºAutor ³ º Data ³ 21/09/12 º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºDesc. ³ Pesquisa Informações no Browse de acordo com a º±±
±±º ³ Ordem selecionada º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºUso ³ º±±
±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
*/
Static Function Procura(cOrdem)

DbSelectArea("TMP")
DbSetOrder(Ascan(aOrdem,cOrdem))
DbGoTop()
DbSeek(Alltrim(cPesquisa),.T.)
oMark:oBrowse:Refresh(.T.)
Return


/*
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±
±±ºPrograma ³ fOrdena ºAutor ³ º Data ³ 21/09/12 º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºDesc. ³ Funcao executada na saida do campo Ordem, para ordenar o º±±
±±º ³ browse º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºUso ³ º±±
±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
*/

Static Function fOrdena(cORDEM)

_nReg:=Recno()
cPesquisa:=Space(200)
oPesquisa:Refresh()

_aMarcados:={}
DbSelectArea("TMP")
TMP->(DbGoTop())

IF CORDEM == 'DTEMISSAO'
While TMP->(!EOF())
AADD(_aMarcados,{TMP->DTEMISSAO})
TMP->(DbSkip())
End
ELSEIF CORDEM == 'TITULO'
While TMP->(!EOF())
AADD(_aMarcados,{TMP->TITULO})
TMP->(DbSkip())
End
ELSEIF CORDEM == 'CODIGO'
While TMP->(!EOF())
AADD(_aMarcados,{TMP->CODIGO})
TMP->(DbSkip())
End
Endif

DbSelectArea("TMP")
DbSetOrder(Ascan(aOrdem,cOrdem))
DbGoTo(_nReg) //Mantendo no mesmo registro que estava posicionado anteriormente
oMark:oBrowse:Refresh(.T.)

Return

//
User Function HLPSE1()

Local i:= 1
Local j:= 1

_sAlias := Alias()

DbSelectArea("SX1")
DbSetOrder(1)

//cPerg := PADR(cPerg,3)

//PutSx1(cPerg, "01","Nome do Arquivo:","","","mv_ch1","C",15,0,0,"G","","","","","MV_PAR01","","","","","","","","","","","","","","","","")
PutSx1(cPerg, "01","Cliente: ","","","mv_ch1","C",10,0,0,"G","","","","","MV_PAR01","","","","","","","","","","","","","","","","")
PutSx1(cPerg, "02","Vencimento Real De?:","","","mv_ch2","D",08,0,0,"G","","","","","MV_PAR02","","","","","","","","","","","","","","","","")
PutSx1(cPerg, "03","Vencimento Real Ate?:","","","mv_ch3","D",08,0,0,"G","","","","","MV_PAR03","","","","","","","","","","","","","","","","")


Return()

Por favor Acessar ou Registrar para participar da conversa.

Mais
9 anos 10 meses atrás #23309 por kanaamlrr
Respondido por kanaamlrr no tópico Ajuda com Markbrowse
Esse filtro é parâmetro de entrada digitado pelo usuário ou um filtro padrão para não aparecer uma informação específica?

Se for informação específica, basta adicionar a cláusula em sua Query, caso contrário, você pode adicionar mais um item no seu Pergunte (que consta no final do seu fonte) e adicionar a cláusula na sua query da forma que já está o MV_PAR01.

Quanto ao totalizador, no trecho de código onde você está preenchendo o arquivo temporário, você pode usar uma variável para ir acumulando os valores, depois é só adicionar um campo para exibir na tela.

Abraço!

Por favor Acessar ou Registrar para participar da conversa.

Tempo para a criação da página:0.105 segundos
Joomla templates by a4joomla