Notifications
Clear all

Usar o mesmo form de pesquisa em outros forms

9 Posts
3 Usuários
0 Reactions
1,885 Visualizações
(@tcserrilho)
Posts: 5
Active Member
Topic starter
 

Olá,

Estou desenvolvendo um sistema de ordens de serviço em VBA utilizando o Excel
Nele, atualmente tenho forms para cadastro de os, clientes, editar os e editar cliente
Também fiz um form para fazer pesquisa de clientes, e de ordens de serviço.

A minha dúvida é a seguinte: no meu form de cadastro de ordem de serviço tenho um botão que abre uma janela que busca os clientes cadastrados, para isso fiz um form de pesquisa que exibe os clientes em um listview e quando eu clico duas vezes no cliente desejado ele retorna as informações para o form de cadastro da ordem de serviço.

Ex:
Quando clico duas vezes no listview do form de pesquisa, ele manda as informações do form PESQUISA_CLIENTE par o form CAD_OS2
FORM_CAD_OS2.TXT_COD_CLIENTE = sheets("bd_cliente").Range("A" & I) 'codigo do cliente
FORM_CAD_OS2.TXT_NOME_CLIENTE = sheets("bd_cliente").Range("B" & I) 'nome do cliente

Porém, utilizo essa mesma pesquisa no form para editar clientes, e tive que criar também a mesma tela de busca de clientes novamente, para que ela possa retornar as informações para o meu form de edição de clientes.

Gostaria de saber se não tem alguma forma diferente de retornar a o resultado da pesquisa somente para o form que chamou a pesquisa

Conto com a ajuda de vocês!

 
Postado : 22/01/2014 12:57 am
(@depoisteconto)
Posts: 183
Reputable Member
 

Depois você podia montar um esqueminha igual ao seu programa, assim fica mais fácil ajudar.

Primeiro pense: O que diferencia uma pesquisa da outra?

Segundo: Teste essa diferença quando der o duploclick, então o sistema saberá do que está tratando e mandará as informações para o lugar correto.

Se tiver um exemplo tem como melhorar essa explicação, mas por enquanto estamos genéricos. :mrgreen:

At

 
Postado : 22/01/2014 10:00 am
(@tcserrilho)
Posts: 5
Active Member
Topic starter
 

Vou tentar exemplificar melhor.

Eu tenho um form onde faço o cadastro das ordens de serviço, um dos campos do form que preciso preencher é o código do cliente e nome do cliente, ai eu tenho um botão abre o form pesquisa_cliente para localiza o cliente e me retornar as informações. O trecho abaixo chama o form PESQ_CLIENTE.

Private Sub BT_LOCALIZA_CLIENTE_Click()
    
    FORM_PESQ_CLIENTE.Show

End Sub

A seguir, vem a parte que interessa do código do form PESQ_CLIENTE

Private Sub ListView1_DblClick()
    
    If ListView1.ListItems.Count > 0 Then
        FORM_CAD_OS2.TXT_COD_CLIENTE.Text = ListView1.SelectedItem
        FORM_CAD_OS2.TXT_NOME.Text = ListView1.SelectedItem.ListSubItems.Item(1).Text
    End If

    Unload FORM_PESQ_CLIENTE

End Sub

Como pode ser visto, eu só posso usar essa pesquisa para um form específico.
Uma forma seria eu controlar (por alguma variável) que identifique de qual form partiu a chamada para a pesquisa mas não sei como fazer isso.
Uso essa mesma rotina de pesquisa para outros forms, e tive que fazer um form de pesquisa para cada um deles.

 
Postado : 22/01/2014 2:43 pm
(@depoisteconto)
Posts: 183
Reputable Member
 

Segue outra sugestão:

At

 
Postado : 22/01/2014 2:57 pm
(@tcserrilho)
Posts: 5
Active Member
Topic starter
 

Desculpe, mas não compreendi direito o que você quis dizer com a imagem. Dá-se a entender que no form de pesquisa teria tipo um combobox onde o usuário teria que escolher para qual forme deseja enviar os resultados da pesquisa. Se for isso mesmo acho que se torna inviável, pois o usuário terá que se preocupar em qual janela ele está e ficar mudando.

 
Postado : 22/01/2014 3:13 pm
(@depoisteconto)
Posts: 183
Reputable Member
 

O desenho era pra te fazer pensar mais. :mrgreen:

Veja bem, para usar apenas um form como pesquisa, esse form precisa saber de onde foi chamado. Ok.

Que tal então se, você armazenar a propriedade name ou caption do userform em algum lugar? Eu sugiro que seja numa Label por exemplo.

No código que vai fazer a pesquisa precisa testar inicialmente essa Label.

If Me.Label = "Cadastro de OS" then

faça isso...

else

faça isso...

End If

Se ainda não tiver entendido, monte os useforms, textbox, combobox (se tiver) listviews, enfim, do jeito que desejar e mande pra gente codificar.

At

 
Postado : 22/01/2014 5:57 pm
(@tcserrilho)
Posts: 5
Active Member
Topic starter
 

Assim como todos que postam suas dúvidas tem que explicar detalhadamente o que quer para que todos possam entender, acho que quem posta uma solução/dica também tem que explicar melhor o que está querendo dizer, pois nem sempre "uma imagem vale mais que mil palavras". Agora com a nova explicação entendi o que você quer dizer e com isso acho que pode sim resolver o meu problema. Vou testar aqui e ver se vai dar certo

Obrigado e assim que testar marco como resolvido.

 
Postado : 22/01/2014 6:21 pm
(@depoisteconto)
Posts: 183
Reputable Member
 

Assim como todos que postam suas dúvidas tem que explicar detalhadamente o que quer para que todos possam entender, acho que quem posta uma solução/dica também tem que explicar melhor o que está querendo dizer, pois nem sempre "uma imagem vale mais que mil palavras". Agora com a nova explicação entendi o que você quer dizer e com isso acho que pode sim resolver o meu problema. Vou testar aqui e ver se vai dar certo

Obrigado e assim que testar marco como resolvido.

Tem uma missão importante por traz da explicação menos didática e mais provocativa.

Me lembro que quando começei aprender VBA um usuário sempre me ajudava, mas era só com dicas, raramente me entrega algum modelo pronto.

Eu aprendo todos os dias e quebrar a cabeça faz parte. Claro, quando puder facilitar, faça-o, mas o resultado do difícil também é bastante gratificante.

Precisando volte sempre, em algumas situações terás o modelo pronto, em outras (principalmente se for comigo :mrgreen: ) vamos pensar juntos ;) .

At

 
Postado : 23/01/2014 5:46 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Caso seja necessário reabrir o tópico, o autor poderá enviar uma MP para um dos moderadores solicitando o desbloqueio.

 
Postado : 23/01/2014 6:33 am