Perguntas Atualizacao de Listbox
- Wanderson
- Autor do Tópico
- Desconectado
- Membro Júnior
Menos
Mais
- Postagens: 39
- Obrigados Recebidos: 0
4 anos 6 meses atrás #32845
por Wanderson
Atualizacao de Listbox foi criado 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)
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.
- ftvernier
- Desconectado
- Membro Platina
Menos
Mais
- Postagens: 386
- Obrigados Recebidos: 2
- admin
- Desconectado
- Administrador
Menos
Mais
- Postagens: 297
- Obrigados Recebidos: 21
4 anos 6 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.105 segundos