Perguntas Atualizacao de Listbox

Mais
3 anos 11 meses atrás #32845 por Wanderson
Bom dia Pessoal,

Estou precisando da ajuda de voces para resolver um problema de listbox, quando incluo,altero ou excluo, a rotina deveria atualizar o listbox, mas isto nao esta acontecendo, alguém poderia me ajudar

Segue abaixo o fonte.



#Define CLR_RGB_VERMELHO RGB(255,000,000) //Cor Vermelha em RGB

User Function VSPFATOE()

Local aButtons := {}
Local oOK := LoadBitmap(GetResources(),'br_verde')
Local oNO := LoadBitmap(GetResources(),'br_vermelho')
Local oBitmap1 := LoadBitmap(GetResources(),'br_verde')
Local oBitmap2 := LoadBitmap(GetResources(),'br_vermelho')
Private oPanel1
Private cVerde := "BR_VERDE"
Private cVerm := "BR_VERMELHO"
Private cLaran := "BR_LARANJA"
Private cCodProd := Space(15)
Private cCodGeme := Space(3)
Private cNomePro := Space(50)
Private cCodGAnt := Space(3)
Private cBloqPro := Space(1)
Private cBuscaG :=Space(3)

Private oSButton1
Private oSButton2
Private _aReceb :={}
Private _aPed :={}
Private aBrowse :={}

static oDlg

oFont3:= TFont():New( "Arial",,030,,.T.,,.T.,,,.f. )
oFont2:= TFont():New( "Arial",,100,,.T.,,.T.,,,.f. )
oFont1:= TFont():New( "Arial",,015,,.T.,,.T.,,,.f. )

oTFont := TFont():New('Courier new',,16,.T.)

DEFINE MSDIALOG oDlg TITLE "PRODUTOS GÊMEOS" FROM 000, 000 TO 600, 1500 COLORS 0, 16777215 PIXEL

@ 035, 011 SAY oSay5 PROMPT "Dados do Produto " SIZE 150, 020 OF oDlg FONT oFont3 color CLR_BLUE PIXEL

@ 060, 009 SAY oSay1 PROMPT "Produto" SIZE 025, 007 Font oFont1 OF oDlg COLORS 0, 16777215 PIXEL
@ 060, 125 SAY oSay2 PROMPT "Descricao" SIZE 035, 007 Font oFont1 OF oDlg COLORS 0, 16777215 PIXEL

@ 076, 000 GROUP oGroup3 TO 077, 1500 OF oDlg COLOR 0, 16777215 PIXEL

@ 080, 011 SAY oSay5 PROMPT "Produto Gêmeo" SIZE 150, 020 OF oDlg FONT oFont3 color CLR_BLUE PIXEL
@ 105, 008 SAY oSay3 PROMPT "Cod.Gemeo" SIZE 037, 007 Font oFont1 OF oDlg COLORS 0, 16777215 PIXEL

@ 060, 044 MSGET oCodProd Var cCodProd SIZE 060, 010 OF oDlg When .F. F3 "SB1" VALID PESQPRO(cCodProd) COLORS 0, 16777215 PIXEL
@ 060, 164 MSGET oNomePro VAR cNomePro SIZE 231, 010 OF oDlg When .F. COLORS 0, 16777215 PIXEL
@ 104, 042 MSGET oCodGeme Var cCodGeme SIZE 060, 010 OF oDlg When .F. /*Valid SLVNCM(cCodProd,cCodGeme,cCodGAnt)*/ COLORS 0, 16777215 PIXEL

@ 104, 200 MSGET oBuscaG Var cBuscaG SIZE 060, 010 OF oDlg When .T. Valid BscDados(cBuscaG) COLORS 0, 16777215 PIXEL

// Vetor com elementos do Browse

oBrowse := TCBrowse():New( 127 , 05, 670, 156,, {'COD.PRODUTO','DESCRICAO DO PRODUTO ', 'COD.GEMEO','STATUS PRODUTO'},{20,100,50,100,20,100}, oDlg,,,,,{||},,,,,,,.F.,,.T.,,.F.,,, )

// Seta vetor para a browse
oBrowse:SetArray(aBrowse)

// Monta a linha a ser exibina no Browse
oBrowse:bLine := {||{ aBrowse[oBrowse:nAt,01],;
aBrowse[oBrowse:nAt,02],;
aBrowse[oBrowse:nAt,03],;
IIF (aBrowse[oBrowse:nAt,04]=='2',oOk,IIF(aBrowse[oBrowse:nAt,04]==' ',oOk,oNo))} }

// Evento de clique no cabeçalho da browse
oBrowse:bHeaderClick := {|o, nCol| alert('bHeaderClick') }

// Evento de duplo click na celula
oBrowse:bLDblClick := {|| ATUACPO()}

Aadd( aButtons, {"HISTORIC", {|| IncFATOE()} , "Incluir ", "Incluir" , {|| .T.}} )
Aadd( aButtons, {"HISTORIC", {|| lAlCest(cCodProd,cCodGeme,cCodGant) } , "Alterar ", "Alterar" , {|| .T.}} )
Aadd( aButtons, {"HISTORIC", {|| lExCampos(cCodProd,cCodGeme,cCodGAnt)} , "Excluir ", "Excluir" , {|| .T.}} )

@ 285,155 Say "Produto Ativo" SIZE 100, 007 Font oFont1 OF oDlg COLORS 0, 16777215 PIXEL
@ 285,255 Say "Produto Bloqueado" SIZE 100, 007 Font oFont1 OF oDlg COLORS 0, 16777215 PIXEL

@ 285,145 BITMAP oBitmap1 SIZE 008, 008 OF oDlg FILENAME cVerde NOBORDER SCROLL ADJUST PIXEL
@ 285,245 BITMAP oBitmap2 SIZE 008, 008 OF oDlg FILENAME cVerm NOBORDER SCROLL ADJUST PIXEL


BscDados()

If Empty(cCodProd)

cNomePro:=Space(50)

Endif

//ACTIVATE MSDIALOG oDlg CENTERED
ACTIVATE MSDIALOG oDlg ON INIT (EnchoiceBar(oDlg,{||lOk:=.T.,oDlg:End()},{||oDlg:End()},,@aButtons))

Return

Static Function IncFATOE()

@ 060, 044 MSGET oCodProd Var cCodProd SIZE 060, 010 OF oDlg When .T. F3 "SB1" VALID PESQPRO(cCodProd) COLORS 0, 16777215 PIXEL
@ 060, 164 MSGET oNomePro VAR cNomePro SIZE 231, 010 OF oDlg When .T. COLORS 0, 16777215 PIXEL
@ 104, 042 MSGET oCodGeme Var cCodGeme SIZE 060, 010 OF oDlg When .T. Valid SLVNCM(cCodProd,cCodGeme,cCodGAnt) COLORS 0, 16777215 PIXEL

RETURN



// Busca Dados na Tabela fora do Protheus para alimentar o Grid
Static Function BscDados(cBuscaG)

If Empty(cBuscaG)

cQuery := " SELECT "
cQuery += " * "
cQuery += " FROM "
cQuery += " PRODXGEMEO"
else
cQuery := " SELECT "
cQuery += " * "
cQuery += " FROM "
cQuery += " PRODXGEMEO"
cQuery += " Where "
cQuery += " GEMEO='"+ cBuscaG +"'"

Endif

TCQuery cQuery New Alias "TMPGEMEOG"
Count To nTotal
dbSelectArea("TMPGEMEOG")
dbGoTop()
oBrowse:Reset()

While TMPGEMEOG->(!EOF())

cNomePro:=Posicione("SB1",1,XFILIAL("SB1")+TMPGEMEOG->PRODUTO,"B1_DESC")
cBloqProd:=Posicione("SB1",1,XFILIAL("SB1")+TMPGEMEOG->PRODUTO,"B1_MSBLQL")

aadd(aBrowse,{TMPGEMEOG->PRODUTO,cNomePro,TMPGEMEOG->GEMEO,cBloqProd})

TMPGEMEOG->(dbSkip())

Enddo

oBrowse:Refresh()
oDlg:Refresh()
TMPGEMEOG->(dbClosearea())
oDlg:Refresh()

Return

// Rotina para exclusão com uma pergunta antes de excluir o registro
Static Function lExCampos(cCodProd,cCodGeme)

If MsgNoYes("Deseja Realmente Excluir o Registro: "+ CRLF + CRLF+;
"Produto : " + cCodProd+" - "+cNomePro + CRLF +;
"Gemeo....................: " + cCodGeme ,"AVISO DE EXCLUSÃO")=.T.

cQuery := " DELETE "
cQuery += " FROM "
cQuery += " PRODXGEMEO"
cQuery += " WHERE"
cQuery += " PRODUTO='" +cCodProd + "'"
cQuery +=" AND GEMEO ='" +cCodGeme + "'"
TcSqlExec( cQuery )

MsgInfo("Registro Excluido com Sucesso!!!","Exclusão de Registro")
else
MsgInfo("Exslusão Abortada!!!")
Endif
oBrowse:Reset()
oBrowse:Refresh()
oDlg:Refresh()
Return

// Salva o Registro na tabela
Static Function SLVNCM(cCodProd,cCodGeme,cCodGAnt)


If Empty(cCodGAnt)

cQuery := " SELECT "
cQuery += " * "
cQuery += " FROM "
cQuery += " PRODXGEMEO"

TCQuery cQuery New Alias "TMPGEMEO"

If TMPGEMEO->PRODUTO = cCodProd .and. TMPGEMEO->GEMEO = cCodGeme

MsgInfo("Dados já existente, vafor verificar!!!","Inclusão Abortada")

else
cIns := " INSERT INTO PRODXGEMEO VALUES('"+cCodProd+"','"+cCodGeme+"')" "
TcSqlExec( cIns )
MSGINFO( "Registro Gravado com Sucesso!!!", "Novo Registro")
cCodProd:=Space(15)
cCodGeme:=Space(3)
cNomePro:=Space(50)
TMPGEMEO->(dbClosearea())
Endif
Else


cQuery := " SELECT "
cQuery += " * "
cQuery += " FROM "
cQuery += " PRODXGEMEO"
cQuery+= " WHERE "
cQuery+= " PRODUTO ='" + cCodProd + "'"
cQuery+= " AND GEMEO ='" + cCodGeme + "'"
TCQuery cQuery New Alias "TMPGEMEO"

If TMPGEMEO->PRODUTO == cCodProd .AND. TMPGEMEO->GEMEO == cCodGeme

ApMsgInfo("Código já cadastrado, Verifique!!!","Código Existente")
TMPGEMEO->(dbCloseArea())

Return
Else
cUpdate:= " UPDATE "
cUpdate+= " PRODXGEMEO "
cUpdate+= " SET GEMEO = '"+cCodGeme + "'"
cUpdate+= " WHERE "
cUpdate+= " PRODUTO ='" + cCodProd + "'"
cUpdate+= " AND GEMEO ='" + cCodGeme + "'"

TCSQLExec(cUpdate)
oCodGeme:Refresh()
oDlg:Refresh()
ApMsgInfo("Codigo Gêmeo alterado com Sucesso!!!", "Alteração de Código")
Endif
Endif
oBrowse:Refresh()
oDlg:Refresh()
RETURN

// Pesquisa dados do Produto
Static Function PESQPRO(cCodProd)

DBSelectArea("SB1")
dbSetOrder(1)
dbSeek(xFilial("SB1")+cCodProd)
cNomePro:=SB1->B1_DESC
oNomePro:Refresh()
oDlg:Refresh()

Return

// Atualiza Header
Static Function ATUACPO()

cCodProd :=aBrowse[oBrowse:nAt,1]
cCodGeme :=aBrowse[oBrowse:nAt,3]
cCodGAnt :=aBrowse[oBrowse:nAt,3]
cNomePro :=Posicione("SB1",1,XFILIAL("SB1")+aBrowse[oBrowse:nAt,1],"B1_DESC")

oNomePro:Refresh()
oCodProd:Refresh()
oCodGeme:Refresh()
oDlg:Refresh()

RETURN

&& Rotina para Alteração
Static Function lAlCest(cCodProd,cCodGeme,cCodGAnt)

@ 060, 044 MSGET oCodProd Var cCodProd SIZE 060, 010 OF oDlg When .F. F3 "SB1" VALID PESQPRO(cCodProd) COLORS 0, 16777215 PIXEL
@ 060, 164 MSGET oNomePro VAR cNomePro SIZE 231, 010 OF oDlg When .F. COLORS 0, 16777215 PIXEL
@ 104, 042 MSGET oCodGeme Var cCodGeme SIZE 060, 010 OF oDlg When .T. Valid AltFATOE(cCodProd,cCodGeme,cCodGAnt) COLORS 0, 16777215 PIXEL
oDlg:Refresh()
oBrowse:Disable()

RETURN

Static Function AltFATOE(cCodProd,cCodGeme)

cUpdate:= " UPDATE "
cUpdate+= " PRODXGEMEO "
cUpdate+= " SET GEMEO = '"+cCodGeme + "'"
cUpdate+= " WHERE "
cUpdate+= " PRODUTO ='" + cCodProd + "'"
cUpdate+= " AND GEMEO ='" + cCodGeme + "'"

TCSQLExec(cUpdate)

ApMsgInfo("Codigo Gêmeo alterado com Sucesso!!!", "Alteração de Código")

oBrowse:Reset()
oBrowse:Refresh()
oBrowse:Enable()
cCodGeme:=Space(3)
cCodGAnt:=Space(3)
oCodGeme:Refresh()
oDlg:Refresh()
RETURN(cCodGeme)

Por favor Acessar ou Registrar para participar da conversa.

Mais
3 anos 11 meses atrás #32848 por ftvernier
Respondido por ftvernier no tópico Atualizacao de Listbox
Boa Tarde,

Já tentou usar o TListbox?

tdn.totvs.com/display/tec/TListBox

Abraços.

Por favor Acessar ou Registrar para participar da conversa.

Mais
3 anos 11 meses atrás #32860 por admin
Respondido por admin no tópico Atualizacao de Listbox
sEGUE UM EXEMPLO DE LIST BOX COM ATUALIZAÇÃO, AONDE FILTRO NOME DE VENDEDOR. E RODO A QUERY E DOU REFRESH.

#Include "RWMAKE.CH"
#Include "TOPCONN.CH"
#Include "Protheus.Ch"
#Include "VKEY.Ch"

#DEFINE VEN_LEG		001
#DEFINE VEN_MAR		002
#DEFINE VEN_VEN		003
#DEFINE VEN_NOM		004

/*
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±
±±ºPrograma  ³ SelVen  ºAutor ³Luiz Alberto         º Data ³  Fev/2020   º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºDesc.     ³ Tela Selecao de Vendedores                               º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºDATA      ³ ANALISTA ³  MOTIVO                                         º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±º          ³          ³                                                 º±±
±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
*/
User Function SelVen(lRet,cCodGer,cCodSup,cCodVen)
Local aArea := GetArea()
Local cCampo := ReadVar()
Local nI                
Local oSay1 
Local oGet1

PRIVATE oDlgGer
Private    oOk		 := LoadBitmap(GetResources(),"LBTIK")
Private    oNo  	 := LoadBitmap(GetResources(),"LBNO")
Private  oSinalNo    := LoadBitmap(GetResources(),"BR_VERMELHO")
Private  oSinalOk    := LoadBitmap(GetResources(),"BR_VERDE")
Private aVendedores := {{oNo,'2','',''}}
Private oBotaoCnf            
Private cFiltro		 := Space(40)
                                                    
DEFINE MSDIALOG oDlgGer TITLE "Seleção Vendedores "+Iif(!Empty(cCodGer),' - Gerente: ' + cCodGer + ' - ' + AllTrim(Posicione("SA3",1,xFilial("SA3")+cCodGer,"A3_NREDUZ")),'')+Iif(!Empty(cCodSup),' - Supervisor: ' + cCodSup + ' - ' + AllTrim(Posicione("SA3",1,xFilial("SA3")+cCodSup,"A3_NREDUZ")),'') FROM 000, 000  TO 350, 720 COLORS 0, 16777215 PIXEL Style DS_MODALFRAME 
oDlgGer:lEscClose := .F. //Não permite sair ao usuario se precionar o ESC

    @ 020, 005 LISTBOX oVendedores Fields HEADER '','',"Código",'Nome' SIZE 340, 130 OF oDlgGer PIXEL //ColSizes 50,50

	oVendedores:bLDblClick := {||DblClick(oVendedores:nAt)}

	fFiltro(@aVendedores,cFiltro)
	
	nOpc := 0
	
    @ 006, 005 SAY oSay1 PROMPT "Filtrar:" SIZE 027, 008 OF oDlgGer COLORS CLR_RED,CLR_WHITE PIXEL
    @ 005, 030 MSGET oGet1 VAR cFiltro Picture "@!" Valid((fFiltro(@aVendedores,cFiltro), oVendedores:Refresh())) SIZE 150, 010 OF oDlgGer COLORS 0, 16777215 PIXEL

  	@ 160, 005 BUTTON oBotaoCnf PROMPT "&Confirma" 			ACTION (Close(oDlgGer),nOpc:=1) SIZE 080, 010 OF oDlgGer PIXEL
//  	@ 160, 105 BUTTON oBotaoCan PROMPT "&Cancelar" 			ACTION (Close(oDlgGer),nOpc:=0) SIZE 080, 010 OF oDlgGer PIXEL

	oBotaoCnf:Disable() 
	oGet1:SetFocus()

	ACTIVATE MSDIALOG oDlgGer CENTERED //ON INIT EnchoiceBar(oRcp,{||If(oGet:Tud_oOk(),_nOpca:=1,_nOpca:=0)},{||oRcp:End()})

	If nOpc == 1
		cCodVen := ''
		For nI := 1 To Len(aVendedores)
			If aVendedores[nI,VEN_MAR] == '1'
				cCodVen := aVendedores[nI,VEN_VEN]
				
				If !Empty(cCodVen)
					SA3->(dbSetOrder(1), dbSeek(xFilial("SA3")+cCodVen))
				Endif
				                                                        
				lRet := .T.
				Exit
			Endif
		Next 
	Else
		cCodVen := '' 
		lRet := .F.
	Endif

RestArea(aArea)
Return lRet

/*
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÚÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄ¿±±
±±³Funcao    ³ DblClick³ Autor ³ Luiz Alberto        ³ Data ³ 06/12/11 ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄ´±±
±±³Descricao ³ Funcao Responsavel pelo Double Click Tela Rotas ³±±
±±³          |                                             ³±±
±±ÀÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
*/
Static Function dblClick(nPos)
Local aArea := GetArea()
Local nI

If aVendedores[nPos,VEN_MAR]=="1"
	aVendedores[nPos,VEN_MAR]:="2"
	oBotaoCnf:Disable()
Else

	aVendedores[nPos,VEN_MAR]:="1"
	oBotaoCnf:Enable()
	For nI := 1 To Len(aVendedores)
		If nI <> nPos
			aVendedores[nI,VEN_MAR] := '2'
		Endif
	Next
Endif 
oVendedores:Refresh()
oDlgGer:Refresh()
Return .t.

Static Function fFiltro(aVetor,cFiltro)

cQuery := 	 " SELECT DISTINCT A3_COD " 
cQuery +=	 " FROM " + RetSqlName("SA3") + " A3 (NOLOCK) "
cQuery +=	 " WHERE D_E_L_E_T_ = '' "
If !Empty(cCodGer)
	cQuery +=	 " AND A3_XGEREN = '" + cCodGer + "' "
Endif
If !Empty(cCodSup)
	cQuery +=	 " AND A3_XSUPER = '" + cCodSup + "' "
Endif                         
If !Empty(cFiltro)
	cQuery +=	 " AND A3_NOME LIKE '%" + AllTrim(cFiltro) + "%' "
Endif

TCQUERY cQuery NEW ALIAS "CHKVEN"
			
Count To nReg

CHKVEN->(dbGoTop())

aVen := {}

ProcRegua(nReg)
While CHKVEN->(!Eof())
	IncProc("Processando Vendedores...")
	
	If !Empty(CHKVEN->A3_COD) .And. SA3->(dbSetOrder(1), dbSeek(xFilial("SA3")+CHKVEN->A3_COD))
		nAchou := Ascan(aVen,{|x| x[1]==SA3->A3_COD})
		If Empty(nAchou)
			AAdd(aVen,{SA3->A3_COD,SA3->A3_NOME})
		Endif
	Endif
		
	CHKVEN->(dbSkip(1))
Enddo              

aSort(aVen,,,{|x,y|,x[2] < y[2]})

CHKVEN->(dbCloseArea())

aVendedores := {}
If cTipVen$'A*G*S'
	AAdd(aVendedores,{oNo,;
					'2',;
					'',;
					'Todos'})
Endif

ProcRegua(nReg)
For nVen := 1 To Len(aVen)
	IncProc("Aguarde Localizando Vendedores")
		
	AAdd(aVendedores,{oNo,;
					'2',;
					aVen[nVen,1],;
					aVen[nVen,2]})

Next nGer
	
If Empty(Len(aVendedores))
	MsgAlert("Atenção Filtro Sem Dados !")
	aVendedores := {{oNo,'2','',''}}
Endif

oVendedores:SetArray(aVendedores)
oVendedores:bLine := {|| {	Iif(aVendedores[oVendedores:nAt,VEN_MAR]=="1",oSinalOk,oSinalNo),;
    							Iif(aVendedores[oVendedores:nAt,VEN_MAR]=="1",oOk,oNo),;
        						aVendedores[oVendedores:nAt,VEN_VEN],;
      							aVendedores[oVendedores:nAt,VEN_NOM]}}

oVendedores:nAt := 1
oVendedores:Refresh()
Return .T.

Por favor Acessar ou Registrar para participar da conversa.

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