none
Como abrir os meus formulários listados em uma ListBox do access? RRS feed

  • Pergunta

  • Boa tarde prezados colegas.

    Eu tenho uma pequena aplicação feita em Access,  no formulário principal do sistema coloquei uma Caixa de Listagem (ListBox) com todos os nomes dos formulários, quero cada nome corresponda a um formulário no sistema,  e quando este nome for clicado na listbox por duplo clik ele abre o formulário correspondente.

    alguém me ajuda a fazer isto?

    Obrigado a todos que me poderem ajudar a solucionar a situação.


    Daniel Rosa Iniciante de programação em vb.net, linq sql e Sql server

    quarta-feira, 14 de outubro de 2015 12:46

Respostas

  • Olá Daniel

    Primeiro você deve acessar a folha de propriedades do listbox (Apertando F4 ou botão direito-> proriedadades).

    Na guia 'evento', quando você clicar no evento 'ao clicar duas vezes', aparecerá um botão com reticências, clique nesse botão e depois selecione o construtor de código.

    Você será levado ao editor do visual basic e aparecerá o código conforme abaixo:

    Private Sub Lista0_DblClick(Cancel As Integer)
    
    End Sub

    Dentro desse bloco de código você irá utilizar o método para abertura de formulários 'docmd.openform', cuja referência você encontra no link abaixo:

    https://msdn.microsoft.com/pt-br/library/office/ff820845.aspx

    Um dos argumentos do método 'docmd.openform' é o nome do formulário que você deseja abrir. O nome do formulário estará representado pelo elemento ativo na listbox, que é acessado através da propriedade listindex, cuja referência você encontra abaixo

    https://msdn.microsoft.com/pt-br/library/office/aa196331(v=office.11).aspx

    Não se esqueça de popular a listbox com o nome exato dos formulários

    Vai ficar algo parecido com isto:

    Private Sub Lista0_DblClick(Cancel As Integer)
    
    DoCmd.OpenForm Lista0.ListIndex
    
    End Sub

    Espero que ajude !

    • Sugerido como Resposta André Santo quarta-feira, 14 de outubro de 2015 13:46
    • Marcado como Resposta danielbeneditorosa quarta-feira, 14 de outubro de 2015 13:59
    quarta-feira, 14 de outubro de 2015 13:45
  • Bom dia, 

    O listindex retorna a posição do valor selecionado.

    Então na verdade, para recuperar o valor daquela posição você deve usar a propriedade list, que tem dois parametros, linha e coluna

    ficaria por exemplo

    lista0.list(lista0.listindex, 0)

    onde lista0.listindex é a posição do valor selecionado, exemplo , 0 ou 1, e o 0 é a coluna 0

    sexta-feira, 16 de outubro de 2015 11:07
  • Seu listbox só tem uma coluna ?

    De um Msgbox em lista2,list(lista2.listindex, 0) e me diga se apareceu o nome do formulário 

    sexta-feira, 16 de outubro de 2015 12:44
  • é um comando que você escreve na programação

    Msgbox lista2,list(lista2.listindex, 0)

    Antes da instrução de abrir o formulário.

    sexta-feira, 16 de outubro de 2015 13:25
  • Oi Daniel, pode hospedar no One Drive e poste aqui o link que dou uma olhada.
    segunda-feira, 19 de outubro de 2015 12:54
  • Daniel, 

    Mandei o bd corrigido no seu email.

    Na verdade no access utiliza-se ITEMDATA ao invés de LIST.

    Só uma observação, alguns dos seus formulários não correspondem ao nome que você carregou na listbox, então não vai funcionar até você equalizar as duas nomenclaturas.

    Abs

    segunda-feira, 19 de outubro de 2015 14:24
  • Acho uma boa idéia..

    Testa e veja se dá certo !

    Abs

    segunda-feira, 19 de outubro de 2015 15:25

Todas as Respostas

  • Olá Daniel

    Primeiro você deve acessar a folha de propriedades do listbox (Apertando F4 ou botão direito-> proriedadades).

    Na guia 'evento', quando você clicar no evento 'ao clicar duas vezes', aparecerá um botão com reticências, clique nesse botão e depois selecione o construtor de código.

    Você será levado ao editor do visual basic e aparecerá o código conforme abaixo:

    Private Sub Lista0_DblClick(Cancel As Integer)
    
    End Sub

    Dentro desse bloco de código você irá utilizar o método para abertura de formulários 'docmd.openform', cuja referência você encontra no link abaixo:

    https://msdn.microsoft.com/pt-br/library/office/ff820845.aspx

    Um dos argumentos do método 'docmd.openform' é o nome do formulário que você deseja abrir. O nome do formulário estará representado pelo elemento ativo na listbox, que é acessado através da propriedade listindex, cuja referência você encontra abaixo

    https://msdn.microsoft.com/pt-br/library/office/aa196331(v=office.11).aspx

    Não se esqueça de popular a listbox com o nome exato dos formulários

    Vai ficar algo parecido com isto:

    Private Sub Lista0_DblClick(Cancel As Integer)
    
    DoCmd.OpenForm Lista0.ListIndex
    
    End Sub

    Espero que ajude !

    • Sugerido como Resposta André Santo quarta-feira, 14 de outubro de 2015 13:46
    • Marcado como Resposta danielbeneditorosa quarta-feira, 14 de outubro de 2015 13:59
    quarta-feira, 14 de outubro de 2015 13:45
  • Boa tarde André Santo,

    Muito obrigado pela resposta, vou testar e ja te confirmo se fucnionou.

    Obrigado mais uma vez..


    Daniel Rosa Iniciante de programação em vb.net, linq sql e Sql server

    quarta-feira, 14 de outubro de 2015 14:01
  • Ola André!

    fiz exactamente como descreveste os passos, mas ao executar ele da uma mensagem de erro

    Private Sub Lista0_DblClick(Cancel As Integer)
    DoCmd.OpenForm Lista0.ListIndex
    End Sub

    mas ao executar da uma mensagem de erro: o nome de formulario '0' esta mal escrito ou refere-se a um formulario que não existe.

    como faço para contornar isto? onde devo corrigir esta informação?

    Obrigado


    Daniel Rosa Iniciante de programação em vb.net, linq sql e Sql server

    sexta-feira, 16 de outubro de 2015 08:03
  • Bom dia, 

    O listindex retorna a posição do valor selecionado.

    Então na verdade, para recuperar o valor daquela posição você deve usar a propriedade list, que tem dois parametros, linha e coluna

    ficaria por exemplo

    lista0.list(lista0.listindex, 0)

    onde lista0.listindex é a posição do valor selecionado, exemplo , 0 ou 1, e o 0 é a coluna 0

    sexta-feira, 16 de outubro de 2015 11:07
  • Boa tarde André!

    Obrigado pela resposta, mas continua não funcionando, fiz assim, mas da erro:

    Private Sub Lista2_DblClick(Cancel As Integer)
    DoCmd.OpenForm Lista2.List(Lista2.ListIndex, 0)
    End Sub

    da este erro: Method or data member not foud

    não sei porque!

    obrigado


    Daniel Rosa Iniciante de programação em vb.net, linq sql e Sql server

    sexta-feira, 16 de outubro de 2015 11:41
  • Seu listbox só tem uma coluna ?

    De um Msgbox em lista2,list(lista2.listindex, 0) e me diga se apareceu o nome do formulário 

    sexta-feira, 16 de outubro de 2015 12:44
  • Sim so tem uma coluna, que forma a lista dos formulários.

    como faço para dar um MsgBox?


    Daniel Rosa Iniciante de programação em vb.net, linq sql e Sql server

    sexta-feira, 16 de outubro de 2015 13:02
  • é um comando que você escreve na programação

    Msgbox lista2,list(lista2.listindex, 0)

    Antes da instrução de abrir o formulário.

    sexta-feira, 16 de outubro de 2015 13:25
  • Continua o erro,

    erro: Sub or Function not defined

    Private Sub Lista4_DblClick(Cancel As Integer)
    MsgBox Lista4, list(Lista4.ListIndex, 0)
    'DoCmd.OpenForm Lista4.ListIndex
    End Sub


    Daniel Rosa Iniciante de programação em vb.net, linq sql e Sql server

    sexta-feira, 16 de outubro de 2015 13:56
  • Olá André, Bom dia!

    Desculpa, fiquei sem internet por isso não voltei, mas não funcionou, tentei todas as possibilidades e não consegui.

    Posso te enviar o arquivo por email e dares uma olhada? pode ser que tenha alguma coisa que eu esteja a fazer errado sem perceber, é um arquivo access.

    o meu email é danielbeneditorosa@hotmail.com

    Obrigado..


    Daniel Rosa Iniciante de programação em vb.net, linq sql e Sql server

    segunda-feira, 19 de outubro de 2015 08:35
  • Oi Daniel, pode hospedar no One Drive e poste aqui o link que dou uma olhada.
    segunda-feira, 19 de outubro de 2015 12:54
  • Boa tarde e Obrigado André santo,

    Segue o Link da partilha: 

    https://onedrive.live.com/redir?resid=6B07412E4CBE11E4!306&authkey=!AMGidQjNN3VmwW8&ithint=file%2caccdb

    Tem um formulário com o nome formulário principal, e é nele que vou chamar os demais formulários.

    qualquer duvida to aqui, fico atento ao seu sinal, e também quero que o formulário principal seja o primeiro a ser aberto..


    Daniel Rosa Iniciante de programação em vb.net, linq sql e Sql server

    segunda-feira, 19 de outubro de 2015 13:41
  • Daniel, 

    Mandei o bd corrigido no seu email.

    Na verdade no access utiliza-se ITEMDATA ao invés de LIST.

    Só uma observação, alguns dos seus formulários não correspondem ao nome que você carregou na listbox, então não vai funcionar até você equalizar as duas nomenclaturas.

    Abs

    segunda-feira, 19 de outubro de 2015 14:24
  • Obrigado André,

    Recebi o arquivo que enviaste.

    Obrigado pela observação, na verdade vou alterar, vou criar uma tabela e nela cadastrar todos os formulários, e popular o listbox com os formulários cadastrados na tabela formulários.

    pode ser?

    Vou testar o sistema assim que chegar em casa daqui 2h.


    Daniel Rosa Iniciante de programação em vb.net, linq sql e Sql server

    segunda-feira, 19 de outubro de 2015 14:42
  • Acho uma boa idéia..

    Testa e veja se dá certo !

    Abs

    segunda-feira, 19 de outubro de 2015 15:25
  • Olá André!

    Muito obrigado, ficou resolvido e funcionou, muito obrigado.

    Depois posto o código para também poder ajudar outras pessoas que tiverem o mesmo problema.

    Mais uma vez, obrigado.


    Daniel Rosa Iniciante de programação em vb.net, linq sql e Sql server

    terça-feira, 20 de outubro de 2015 11:55
  • Bom dia André .

    para aqueles que tiverem o mesmo problema, o meu ficou resolvido da seguinte maneira:

    DoCmd.OpenForm ListaFormularios1.ItemData(ListaFormularios1.ListIndex)

    este é o código final, fornecido pelo Andre e eu adaptei, funcionou perfeitamente.

    mais uma vez muito obrigado André e ao Forum


    Daniel Rosa Iniciante de programação em vb.net, linq sql e Sql server

    sábado, 24 de outubro de 2015 09:52