GD Access    GD Access    Grupo de Discussão  Ir para Categorias  Grupos técnicos  Ir para Fóruns  Access    Verificar se o cliente ja tem cadastro
Go
Novo
Procurar
Notificar
Ferramentas
Responder
  
-star Rating Vote!  Login/Cadastrar 
Estagiário

postado
Ola pessoal!!!
Tudo Tranquilo!!!

Vamos la!!!

Tenho um cadastro de Pacientes, onde preciso que na hora de fazer o cadastro o sistema verifique se o mesmo ja existe.
Exemplo:
Peço um novo cadasro, digito o nome, data de aniversario, e se existir um cadastro com os mesmos valores, o sistema mostre uma mensagem informado,o codigo do cadastro existente.

Se alguem tiver um exemplo eu agradeço!!!

Abraços!!!

This message has been edited. Last edited by: JoséSidnei,
 
Postagens: 36 | Registrado: 05 March 2007Reply With QuoteReport This Post
Diretor

postado Hide Post
No seguinte código é verificada a duplicidade do Cliente em relação ao CPF (Documento) registrado:

Private Sub Documento_AfterUpdate()
Dim rst As Recordset, frm As Form
On Error GoTo Documento_Err

Set frm = Forms!Clientes.Form
Set rst = frm.RecordsetClone

rst.FindFirst "[Documento] = '" & Me![Documento] & "'"
If rst.NoMatch Then
Exit Sub
Else
frm.Undo
Beep
MsgBox "Documento duplicado !@Já existe um cadastro com o mesmo número digitado.@Observe o registro selecionado.@", vbCritical
frm.Bookmark = rst.Bookmark
End If

Documento_Exit:
Exit Sub
Documento_Err:
MsgBox Error$
Resume Documento_Exit
End Sub

Adapte ao seu sistema.
 
Postagens: 4130 | Registrado: 01 February 2001Reply With QuoteReport This Post
Estagiário

postado Hide Post
Realmente o codigo faz a verificação, porem sou um grande curioso em access, e na programação Feliz, mas ainda nao sei quase nada Feliz
Se não for pedir muito será que tem como colocar o codigo para que ele faça a verificação nos dois campos, como citei anteriormente, e traga o codigo existente.

Valeu pela ajuda
 
Postagens: 36 | Registrado: 05 March 2007Reply With QuoteReport This Post
Diretor

postado Hide Post
A verificação mais correta e eficaz a ser feita em relação às pessoas físicas é através do CPF (pessoas jurídicas, CNPJ), estes têm uma quantidade padrão de caracteres e, pela própria Receita Federal, não existe possibilidade de se repetir.

Quanto aos nomes:
E se você digitar Joao ao invés de João ou Cardoso ao invés de Cardoso ?
Vai furar o sistema.

Quanto às datas:
E quando for encontrado mais de um João com aniversário em 01/01/1980 ou mais de um Cardoso com aniversário em 10/10/1981 ?
Vai furar o sistema de novo.

O que aconselho é incluir o CPF no cadastro dos Pacientes (todo mundo tem CPF e são todos diferentes) e evitar uma série de problemas que certamente ocorrerão.
 
Postagens: 4130 | Registrado: 01 February 2001Reply With QuoteReport This Post
Programador Sênior

postado Hide Post
E quando o paciente for menor de idade e não tiver CPF?

Vai furar o sistema, mais uma vez!

E agora, José?

Acho melhor seguir a tua realidade sem querer a perfeição. Usa os campos que já tem e se preciso um terceiro para confirmação em caso de duplicidade, usa o nome da mãe.

Um abraço.
 
Postagens: 407 | Localização: Porto Alegre | Registrado: 01 October 2002Reply With QuoteReport This Post
Diretor

postado Hide Post
Usa o CPF do responsável, é assim que funciona na prática.

Para diferenciar se os 2 forem pacientes ao mesmo tempo acrescenta-se uma indicação que é dependente.
 
Postagens: 4130 | Registrado: 01 February 2001Reply With QuoteReport This Post
Programador Sênior

postado Hide Post
Jorge,

de que prática você está falando? Você sabe qual o tamanho do cadastro existente e se há a informação disponível?

Se não houver o CPF na base existente, não haverá como comparar - isso é certo - e a sugestão perde a razão de ser. Além disso, o sugerido foge um pouco ao requisito inicial.

Você sugere o CPF e já está acrescentando a informação de dependente, e já pensou também se forem vários dependentes? Daí, além do CPF e se é dependente, vai o NOME? Ou "na prática" tem um outro dado antes do NOME e DATA DE NASCIMENTO para compor chave de registro?

Um abraço.
 
Postagens: 407 | Localização: Porto Alegre | Registrado: 01 October 2002Reply With QuoteReport This Post
Estagiário

postado Hide Post
Ola a todos!!!

Vamos analisar!!!

Em um sistema onde vou controlar pacientes é bem complicado esta questão de documentação.
No caso do CPF:
No momento do atendimento pode estar sem o mesmo.
Pode ser de menor.

No caso de controlar pelo CPF do responsavel:
Em um atendimento a criança vem com o responsavel sendo sua mãe, ja em outro atendimento vem com o resposavel sendo seu pai, em outro sua vó, em outro sau tia...

Já analisei bastante isso, é muito complicado, bem diferente de um controle em um sistema comercial. Não se pode barrar o atendimento por falta de documentação, mas tambem tem que se ter um controle para não gerar duplicidade no cadastro (neste tipo de sistema sempre terá).
Fazer a verificação pelo nome e data de nacimento é uma forma de amenizar esta situação, travar não posso, pois quantos José da Silva, vocês conhecem, então vou fazendo a verificação, NOME+DATA DE NACIMENTO+NOME DA MÃE, e alguns campos a mais, mas se pararmos e pensarmos novamente ja tem outros casos, se for criança e chegue pro atendimento com um desconhecido, nao tendo o nome da mãe nem data de nacimento, Feliz
Como falei esta verificação é so para amenisar a situação.

Grato pela atenção!!!
 
Postagens: 36 | Registrado: 05 March 2007Reply With QuoteReport This Post
Estagiário

postado Hide Post
ola!!!
ainda estou precisando disso. alguem tem alguma sugestão!!!
 
Postagens: 36 | Registrado: 05 March 2007Reply With QuoteReport This Post
Analista Sênior

postado Hide Post
*** OFF ***

quote:
se for criança e chegue pro atendimento com um desconhecido, nao tendo o nome da mãe nem data de nacimento


Esse mundo me dá medo.

*** OFF ***


 
Postagens: 1448 | Registrado: 02 July 2001Reply With QuoteReport This Post
Estagiário

postado Hide Post
quote:
se for criança e chegue pro atendimento com um desconhecido, nao tendo o nome da mãe nem data de nacimento



Ola

Quero a sugestão de como fazer a pesquisa, a solução é esta que eu mencionei mesmo!

"Peço um novo cadasro, digito o nome, data de aniversario, e se existir um cadastro com os mesmos valores, o sistema mostre uma mensagem informado,o codigo do cadastro existente."

Grato pela atenção
 
Postagens: 36 | Registrado: 05 March 2007Reply With QuoteReport This Post
Coordenador

Figura de  rogerio100
postado Hide Post
Veja colega esta possibilidade sempre vai ocorrer, o que vc já pensou ja são boas saídas de amenizar, mas infelizmente vai ter a possibilidade de não controlar, ou seja poderá escapar um controle ja cadastrado, e no caso simples faço um novo cadastro.


Abraços

This message has been edited. Last edited by: rogerio100,


Rogério

Suporte e Desenvolvimentos: rogcs@ig.com.br (027) 9908-1346


Não esqueça de dizer se deu certo.

Visite o site sempre tem novidades

www.esnips.com/web/rogerio100

 
Postagens: 2041 | Localização: Vila Velha, E.S. | Registrado: 26 July 2005Reply With QuoteReport This Post
Programador Pleno

postado Hide Post
Tive uma situação parecida quando desenvolvi um sistema para automatização de igrejas onde ocorriam cassos de nomes homogêneos.

No meu caso resolvi da seguinte forma:
1 - se a pessoa tevesse cpf, o controle era feito pelo mesmo.
2 - caso não, o controle se dava pelo nome e da pessoa e da mãe.
3 - quando o sistema encontrava um nome homogêneo, o sistema abria um form com informações adicionais tais como data de nascimento,nome do pai e características físicas.

Espero ter ajudado


Att
Elizeu
elizeudefarias@hotmail.com
 
Postagens: 294 | Registrado: 24 June 2004Reply With QuoteReport This Post
Estagiário

postado Hide Post
td joia

so quero saber como faço pra abrir a tela, no caso do teu sistema o item 3, não sou programador, sou curioso, ainda estou aprendendo, por isso não sei fazer esta tela, se puder passar um exemplo eu agradeço.


grato pela atenção
 
Postagens: 36 | Registrado: 05 March 2007Reply With QuoteReport This Post
Programador Júnior

Figura de  command
postado Hide Post
Fala meu chapa,
Segue ai um exemplo que fiz pra te ajudar.
Clique para fazer o download

A lógica desse exemplo é que ele faz uma verificação por meio do CPF(Você determina qual campo deseja utilizar) na tabela de Pacientes.
Encontrou o registro, ele avisa e recupera o nome do Paciente, dai pra frente você determina qual ação o programa deve tomar.

O exemplo é bem simples e a validação ocorre antes de atualizar, ou seja o cara recebe a mensagem enquanto esta cadastrando.

Agora não sei, se o método utilizado é o correto, espero ai a juda e o conselho do pessol, mas é este metodo que tenho utilizado.

De uma olhada e veja se funcionou.
Flw.

--------------------
Cara, faz o download novamente porque eu encontrei um pequeno impasse nos nomes dos campos,que pode causar confusão
--------------------

This message has been edited. Last edited by: command,


ASUS P4S800DX, Intel P4 HT, 2GB DDR 400, 250GB SATA II - Windows XP SP3, Access 2003 SP3, SQL Server Express 2005, MySQL 5.1.31 Community
 
Postagens: 96 | Registrado: 11 October 2007Reply With QuoteReport This Post
Programador Júnior

postado Hide Post
Jose

Tal como você ja experimentei vir aqui ao forum e ficar frustrado pelas respostas, quer pelo "não faça assim, faça assado" quer até pelas verdadeiras fugas à resposta correcta, talvez com medo de dar "armas" pra concorrência.

Felizmente, nem todos pensam assim e por vezes encontramos aqui a ajuda de que necessitamos (isso ja aconteceu imensas vezes comigo) e foi nesse espirito que elaborei um exemplo que você possa adaptar para aquilo que necessita.

Aí vai o código:
-->
Option Compare Database
Public dbs As Database
Public rs As Recordset
Public cwhere As String
Public qPAC As String
Public PAC As String
Public DAT As Variant

--->

Private Sub datanasc_AfterUpdate()
PAC = [nome]
DAT = [datanasc]
cwhere = ""
cwhere = "[nome]='" & PAC & "'"
cwhere = cwhere & " and [datanasc]= DAT "
lmax = DCount("*", "tPACIENTES", cwhere)
lok = IIf(IsNull(lmax), 0, lmax)
If lok > 0 Then
DAT = "#" & Format(DAT, "mm/dd/yyyy") & "#"
qPAC = "SELECT DISTINCTROW cod_pac, nome, datanasc FROM tPACIENTES " & _
"GROUP BY cod_pac, nome, datanasc " & _
"Having nome ='" & PAC & "' " & _
"AND datanasc = " & DAT & ""
Set db = CurrentDb()
Set rs = db.OpenRecordset(qPAC)
MsgBox "Já existe este paciente com o número " & rs(cod_pac)
[nome] = " "
Me.nome.SetFocus
Else
Exit Sub
End If

End Sub

Se necessitar me envie um mail que enviarei a db que serviu para elaborar o exemplo.

Usei o Microsoft DAO 3.6 Object Library como "References"


João Mateus

Página Pessoal:
http://joaomateus.planetaclix.pt
 
Postagens: 129 | Registrado: 04 December 2004Reply With QuoteReport This Post
Estagiário

postado Hide Post
Tudo tranquilo!!!

Realmente as vezes acontece isso mesmo que vc falou, mas acho que na maioria dos casos a pergunta fica meio confusa, e com isso as respostas tambem saem confusas.
Usei seu codigo mas deu o seguinte erro:

Erro em tempo de execução 2001
Você cancelou a operação anterior.

Mando depurar e ele vai para a seguinte linha:

lmax = DCount("*", "tPACIENTES", cwhere)

So que como deixei bem claro, estou aprendendo a programar e com este erro empaquei Feliz

Abraços

Meu e-mail é josesidnei@msn.com
Se vc puder mandar seu exemplo eu agradeço!!!
 
Postagens: 36 | Registrado: 05 March 2007Reply With QuoteReport This Post
Estagiário

postado Hide Post
quote:
Postado originalmente por command:
Fala meu chapa,
Segue ai um exemplo que fiz pra te ajudar.
Clique para fazer o download

A lógica desse exemplo é que ele faz uma verificação por meio do CPF(Você determina qual campo deseja utilizar) na tabela de Pacientes.
Encontrou o registro, ele avisa e recupera o nome do Paciente, dai pra frente você determina qual ação o programa deve tomar.

O exemplo é bem simples e a validação ocorre antes de atualizar, ou seja o cara recebe a mensagem enquanto esta cadastrando.

Agora não sei, se o método utilizado é o correto, espero ai a juda e o conselho do pessol, mas é este metodo que tenho utilizado.

De uma olhada e veja se funcionou.
Flw.

--------------------
Cara, faz o download novamente porque eu encontrei um pequeno impasse nos nomes dos campos,que pode causar confusão
--------------------



Valeu pela força, mais preciso que faça validação em dois campos no caso do seu so faz o do cpf, vou ver se consigo adaptalo

Abraços
 
Postagens: 36 | Registrado: 05 March 2007Reply With QuoteReport This Post
Programador Sênior

postado Hide Post
José,

infelizmente o João veio para um desabafo e esqueceu de apurar um pouco mais o código. Que coisa!

Na falta de coisa melhor, tenta assim por enquanto:
Dim rs As Recordset
Set rs = Me.RecordsetClone
rs.FindFirst "[nome] = '" & Me.Nome & "' AND format([datanasc],'dd/mm/yyyy') = '" & Format(Me.DataNasc, "dd/mm/yyyy") & "'"
If Not rs.NoMatch Then
    Me.Undo
    If MsgBox("Paciente já está cadastrado! Editar?", vbInformation + vbYesNo) = vbYes Then Me.Bookmark = rs.Bookmark
End If

É só acertar os nomes dos campos da tabela e do form - nome e datanasc - colocar o código no evento Após Atualizar da data.

Um abraço.
 
Postagens: 407 | Localização: Porto Alegre | Registrado: 01 October 2002Reply With QuoteReport This Post
Analista Pleno

Figura de  Balemberg
postado Hide Post
Olá José !

Creio que como você está iniciando, ainda não está familiarizado com o código em si.
Portanto, creio que você deva usar consultas, do que o código em sim, ou seja, usar menos códigos e mais consultas.
A algum tempo atrás tive o mesmo problema com homônimos , antes de usar o CPF(no meu caso eu pude usar, eram contratos a serem feitos).
Na época fiz assim:
na Propriedade Antes de Atualizar da caixa de texto NomePaciente(digamos que seja isso), vc faz uma verificação de quanto nomes iguais tem cadastrado, assim:
If Dcount("[NomePaciente]","tblPacientes","[NomePaciente]=" & Me!NomePaciente "'") <>0 then
' ou seja se tiver mais de um paciente com o mesmo nome
Docmd OpenForm "frmHomônimos"
Crie esse formulário frmHomônimos(form continuo) para mostrar os nomes homônimos com quantos campos vc quiser.
Faça uma consulta seleção ,para mostrar esses nomes para usar como origem de registro do form acima.
Depois é só fazer uma rotina para que com um duplo clique na linha que contem o registro, o mesmo passe para o formPaciente.
A ideia é essa , espero que tenha entendido, se tiver dúvidas entre em contato, pelo fórum ou pelo email abaixo.


Balemberg
==========================
Procure ver os posts diretamente no fórum, geralmente eu edito os meus.
----------------------------------
Exemplos em MSAccess:
http://www.esnips.com/web/ebalem

 
Postagens: 939 | Localização: Florianópolis-SC | Registrado: 12 March 2001Reply With QuoteReport This Post
  Powered by Social Strata  
 

GD Access    GD Access    Grupo de Discussão  Ir para Categorias  Grupos técnicos  Ir para Fóruns  Access    Verificar se o cliente ja tem cadastro

©