Notifications
Clear all

Pesquisa em Database

5 Posts
2 Usuários
0 Reactions
1,347 Visualizações
(@arthurdiegoo)
Posts: 99
Estimable 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?

 
Postado : 20/03/2012 6:59 pm
(@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

 
Postado : 20/03/2012 7:21 pm
(@arthurdiegoo)
Posts: 99
Estimable 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

 
Postado : 20/03/2012 7:26 pm
(@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

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

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

Muitíssimo obrigado!

 
Postado : 30/03/2012 10:34 pm