Notifications
Clear all

Busca por Codigo ou Nome

7 Posts
3 Usuários
0 Reactions
1,608 Visualizações
(@jean-sammy)
Posts: 30
Eminent Member
Topic starter
 

Olá Pessoal,

Estou querendo realizar personalizar a busca de cadastro no meu sistema, quero fazer uma busca tanto pelo código do Paciente como pelo Nome atualmente ele ta pesquisando apenas pelo código e quando tento fazer a busca pelo nome os dados retornado não ficam no campo correto Ex: o Nome fica no Campo Código, o CPF fica no Campo Nome e assim sucessivamente. Quando eu faço a busca pleo código ai ficam cada um em seu devido campo, mais nao quero que seja feito a busca do pelo Código e sim pelos 2.... so que não estou raciocinando direito para fazer isso..Abaixo segue o código que está dentro do Botão Pesquisar e em anexo enviei a foto de como fica a pesquisa pelo Nome.

With Worksheets("Banco de Dados").Range("A:A,B:B") ' aqui é selecionado a planilha 1
Set c = .Find(txtNomePesquisa.Value, LookIn:=xlValues, LookAt:=xlPart) 'aqui é onde será digitado o nome do paciente
If Not c Is Nothing Then
c.Activate
txtCodigo.Text = c.Offset
txtNome.Text = c.Offset(0, 1)
txtCpf.Text = c.Offset(0, 2)
txtRg.Text = c.Offset(0, 3)
txtEmissao.Text = c.Offset(0, 4)
txtNascimento.Text = c.Offset(0, 5)
txtEnd.Text = c.Offset(0, 6)
txtBairro.Text = c.Offset(0, 7)
txtMunicipio.Text = c.Offset(0, 8)
cboEstado.Text = c.Offset(0, 9)
cboEstadoCivil.Text = c.Offset(0, 10)
txtPai.Text = c.Offset(0, 11)
txtMae.Text = c.Offset(0, 12)
txtProfissao.Text = c.Offset(0, 13)

If c.Offset(0, 14) = "Masculino" Then
optMasc.Value = True
Else
optFem.Value = True
End If

txtProvidencia.Text = c.Offset(0, 15)
txtDataObito.Text = c.Offset(0, 16)
txtCausaObito.Text = c.Offset(0, 17)
txtData1.Text = c.Offset(0, 18)
txtDescri1.Text = c.Offset(0, 19)
txtData2.Text = c.Offset(0, 20)
txtDescri2.Text = c.Offset(0, 21)
txtData3.Text = c.Offset(0, 22)
txtDescri3.Text = c.Offset(0, 23)
txtData4.Text = c.Offset(0, 24)
txtDescri4.Text = c.Offset(0, 25)
'Fim da Pesquisa
End If

'Tomada de decisão em caso de não haver nenhum resultado
If c Is Nothing Then

'Sua mensagem ao usuário aqui
MsgBox ("Cadastro Não Encontrado!!!"), vbOKOnly, ("Resultado da Pesquisa")

End If
'Fim da Pesquisa

End With
End Sub

 
Postado : 03/02/2014 10:29 am
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
 

jean.sammy,

Boa Tarde!

Não seria melhor você inserir um ComboBox em sua aplicação que mostrasse, assim que o formulário fosse carregado, os códigos e os nomes dos clientes que o usuário possa escolher?

Daí, após a escolha, é só fazer um código para o evento click do combobox que carregue para os demais campos do formulários, os outros dados que devem preencher os mesmos (se você não souber como faz, disponibilize sua planilha que faço).

Segue um exemplo de um formulário que carrega os cliente para o combo.

 
Postado : 03/02/2014 11:10 am
(@jean-sammy)
Posts: 30
Eminent Member
Topic starter
 

OLá Wagner Morel,

Vlw pela resposta...sua sugestão é boa sim e eu nao tinha pensado nisso estou começando agora trabalhar com VBA, vou verificar o arquivo q vc mandou e qualquer dúvida respondo novamente.

 
Postado : 03/02/2014 11:45 am
(@jean-sammy)
Posts: 30
Eminent Member
Topic starter
 

Wagner,

Sua sugestão é boa mais ja imaginaste quando a planilha tiver com mais de 1000 cadastros ai o tempo de procura pelo nome vai ser mais demorado eu queria algo como lhe expliquei onde digitamos so o nome ou código ai ele ja busca.Segue minha planilha veja o que pode melhorar nela nesse sentido blz...

 
Postado : 03/02/2014 11:50 am
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
 

jean.sammy,

Boa Noite!

A procura dos paciente na planilha será pelo código e não pelo nome. Pelo nome é muito complexo pois além de demorar muito a ser pesquisado, ainda pode gerar uma série de erros pois para o processador, Jean é diferente de Jeam, é diferente de JEAN, é diferente de JEAM, é diferente de JeAN, é diferente de jEan, é diferente de Jen, é diferente de Jeans, é diferente de Jean Tavares e por aí vai. Ou seja, as possibilidades de erro (principalmente o usuário digitando nome a ser pesquisado) são enormes.

No exemplo que fiz na sua planilha, criei um frmPesquisa2 (para não mexer no seu formulário original) onde substitui a caixa de texto por um controle ComboBox. O Combo é carregado automaticamente quando o formulário de pesquisa é chamado (quando o usuário clica no botão Pesquisar no formulário de Cadastro). Não há necessidade também de botão Pesquisar no formulário de pesquisa pois quando o usuário selecionar um paciente (pelo código + o nome do paciente), automaticamente o código vai buscar a linha correspondente daquele código selecionado e preencher os demais campos do formulário. Após preencher todos os campos, o laço FOR de busca de coincidência de dados (valor selecionado no combo com o valor contido na coluna A - Código), é abandonado para não se perder mais tempo procurando o que não precisa (pois já achou o que queria).

Por fim, peço-lhe, por gentileza, que da próxima vez que postar arquivos aqui no fórum, primeiro compacte-os com ZIP (por menores que sejam os mesmos) e somente depois anexe os mesmos.

 
Postado : 03/02/2014 5:19 pm
(@jean-sammy)
Posts: 30
Eminent Member
Topic starter
 

Wagner mto obgd pela dica e pela solução ficou mto bom msm amigo, so adicionei o txtCodigo.Text = Range("A" & i).Value q nao tava retornando o codigo, desde ja mto obgd amigo.

 
Postado : 03/02/2014 8:54 pm
(@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 : 04/02/2014 6:05 pm