PERGUNTAS E RESPOSTAS
 
Bem Vindo, Visitante  Todos os Fórums
  ADVPL
Enviar para a impressoraImprimir  Enviar e-mail para um amigoEnviar Para um Amigo
Precisa estar Logado

Subject Assunto:
Atualizacao de Listbox
Versão:
12.1.25
Plataforma:
Microsoft
Complemento:
DB:
SQL Server
Complemento:
LinkedIn
Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário WANDERSONW WANDERSONW em 08/05/2020, 11:11 h
Local: SP  Registro: 01/07/2015  Postagens: 166
Bom dia Pessoal,

Estou precisando da ajuda de voces para atualizar um listbox, quando incluo/altero ou excluo ou pesquiso, em um objeto, ele devera pela logica atualizar o Listbox mas, isto nao esta acontecendo, alguem pode me ajudar.

Segue 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)


Para postar no Fórum você precisa efetuar o seu login ou se registrar

 Mudar para Fórum

 

 

 
 
   
Pagina Principal Shopping PROTHEUS Tire suas duvidas Vagas Microsiga em todo Brasil Aprofunde seus conhecimentos Noticias Online Fale Conosco Pagina Principal