Notifications
Clear all

Pesquisa em Database

5 Posts
2 Usuários
0 Reactions
1,361 Visualizações
arthurdiegoo
(@arthurdiegoo)
Posts: 99
Trusted Member
Topic starter
 

Lá vem o chato do arthur perguntar denovo, mais realmente estou aprendendo ainda, e não domino os conhecimentos necessários para alguns comandos.

O meu problema é o seguinte:

Em meu projeto, possuo 3 bancos de dados no momento. Um deles está cadastrado os clientes da minha empresa, em outro, os pré-orçamentos, e por fim, em outro, os orçamentos finalizados.

Para finalizar o orçamento estou utilizando uma planilha visual, que é preenchida com os dados do orçamento, e será enviada para o e-mail do cliente.

Meu problema é o seguinte:

Ao começar o orçamento, é solicitado o nome do cliente, que é obtido através de uma combobox com rowsource na database de clientes registrados ( fiz isso para integrar o sistema, e torná-lo mais fácil de ser utilizado ).

O orçamento prossegue e passa para outro formulário, porém o e-mail do mesmo, se mantém na database, e não foi solicitado em primeira estância.

Minha dúvida é a seguinte, neste último formulário, quero colocar uma textbox oculta ( não visível ), onde haverá o retorno do e-mail desse mesmo cliente, através de uma busca na database, porém queria que este e-mai fosse retornado ao entrar nesse último formulário.
Gostaria de saber qual comando posso usar para retornar o valor de outra coluna na mesma linha do cadastro.

Caso seja necessário, em minha database o nome do cliente está na coluna B da minha Plan ( Clientes, dentro desse mesmo workbook ) e o e-mail na coluna H.

Alguma alternativa? ou tenho que solicitar o e-mail ao operador, ao preencher o orçamento?

Atenciosamente,

Arthur Andrade
Seja Cordial, trate os outros membros com respeito!

Caso sua dúvida tenha sido resolvida, clique no botão verde no canto direito superior da sua tela, marcando como [RESOLVIDO]
Agradeça quem te ajudou! Clique na mãozinha!

 
Postado : 20/03/2012 6:59 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

arthur, no Forum "Biblioteca" anexei um arquivo com uma function bem simples de ser adaptada a qualquer tipo de pesquisa, é só ajustar a sua necessidade, de uma olhada.

Biblioteca
Function Pesquisar InputBox e TextBox
viewtopic.php?f=21&t=2877&hilit=ProcuraRefId

[]s

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 20/03/2012 7:21 pm
arthurdiegoo
(@arthurdiegoo)
Posts: 99
Trusted Member
Topic starter
 

Mauro, justamente a sua function que eu estou utilizando, mas eu ainda não entendi muito direito.

Como iria procurar um valor já fornecido, julguei ( espero que correto ) que o Sub Pesquisar() não era necessário.

Chamando a Função ProcuraRefId diretamente, eu iria configurar

Dim wsDados As Worksheet
Set wsDados = Worksheets("Dados")

para

Dim wsDados As Worksheet
Set wsDados = Worksheets("Clientes")

Certo?

Então agora vem minha dúvida, como eu digo para o comando procurar o nome ( na coluna B ) e retornar o e-mail ( na coluna H )

Desculpa, sei que pode ser bem simples, mas como sou relativamente cru em VBA, estou realmente quebrando minha cabeça

Atenciosamente,

Arthur Andrade
Seja Cordial, trate os outros membros com respeito!

Caso sua dúvida tenha sido resolvida, clique no botão verde no canto direito superior da sua tela, marcando como [RESOLVIDO]
Agradeça quem te ajudou! Clique na mãozinha!

 
Postado : 20/03/2012 7:26 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Neste caso, o ajuste é só nas referencias as Colunas na Function :

Para pesquisar na Coluna B
sCol = 2 'Pesquisa na Coluna 2 = Col B

E retornar o valor da Coluna H
.Cells(iLin, 8).Value 'Retorna o Valor da Coluna 8 = H

Public Function ProcuraRefId(ByVal RefId As String) As String
    Dim iLin As Long
    Dim sCol As Long
    
    sLocaliza = False

    Dim wsDados As Worksheet
    Set wsDados = Worksheets("Clientes")
    
    iLin = 2 'Inicia a pesquisa na Linha 2
    sCol = 2 'Pesquisa na Coluna 2  - Col B
    
    With wsDados
    
        Do While Not IsEmpty(.Cells(iLin, sCol))

            If .Cells(iLin, sCol).Value = RefId Then
             
                sLocaliza = True 'Verdadeiro se encontrado
               
                MsgBox .Cells(iLin, 8).Value  'Retorna o Valor da Coluna 8 - H
                sCel = .Cells(iLin, 8).Value
                
                Exit Do 'Sai do Loop se encontrar
            
            End If
            
            'Incrementa a linha
            iLin = iLin + 1
            
        Loop
        
    End With

End Function

[]s

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 20/03/2012 8:14 pm
arthurdiegoo
(@arthurdiegoo)
Posts: 99
Trusted Member
Topic starter
 

Grande Mauro, ótima dica, resolveu meu problema direto!

Muitíssimo obrigado!

Atenciosamente,

Arthur Andrade
Seja Cordial, trate os outros membros com respeito!

Caso sua dúvida tenha sido resolvida, clique no botão verde no canto direito superior da sua tela, marcando como [RESOLVIDO]
Agradeça quem te ajudou! Clique na mãozinha!

 
Postado : 30/03/2012 10:34 pm