Access inicio | | | | | |
Olá,
Seja Bem Vindo ao Blog.

Conecte-se ou registre-se e utilize gratuitamente este equipamento, temos exemplos referente a criação de banco de dados e desenvolvimento de softwares e programas utilizando o Microsoft Access.


Administração do Blog AccessDoProgramador.

RecordsetClone, exemplo access.

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

11082011

Mensagem 

RecordsetClone, exemplo access.






Seção de origem no Blog: Filtros & Capturas


Eu precisava que ao digitar no campo, uma pesquisa na tabela fosse realizada para verificar se o digitado já havia no banco. Isso me ocorria com os números de RG e CPF. Gostaria que o sistema fizesse uma busca ali automaticamente e me trouxesse informações do número digitado em questão, ou seja:

Ao digitar por exemplo: 123

Que neste caso o sistema me informasse se está na base de dados ou não. Se estivesse na base, teria que mostrar através de uma MsgBox o nome e outras informações da pessoa detentora do número.

Fazendo uma pesquisa com a tecla F1 do access encontrei um código e a possibilidade de se resolver isso com o RecordsetClone, que é uma propriedade que cria uma cópia da consulta ou tabela através da OrigemDoRegistro. Utilizando-se do método FindFirst é que se consegue correr no conjunto de registros do recordset e assim encontrar ou não o dado digitado no campo do formulário.

Abaixo o código (que sofreu pequenas modificações para me atender):
+++++++++++++++++++++++++++++++++++++++++++++++++++
'Tratamento de erro
On Error GoTo tratareiOerro

'Variável que dará referência ao objeto Recordset
Dim rst As Recordset

'Variável que armazenará o valor digitado no campo
Dim strSearchName As String

   'Constante que ativa a propriedade RecordsetClone
   Set rst = Me.RecordsetClone
   
   'Armazenando o valor do campo txtCPF
   strSearchName = Me!txtCPF
   
   'Comparando o valor da variável com os do campo da tabela no conjunto de registros do RecordsetClone
   rst.FindFirst "[cnpjCpf]  Like '*" & strSearchName & "*'"
       
            'A propriedade NoMatch por padrão é False. Se encontrar algum registro, ela mudará para True. Então: Se no recordetClone não é encontrado o desejado, permanece False e emite a mensagem que não existe registros. Se é encontrado, muda para True e emite a MsgBox com os detalhes de quem se trata  
           If rst.NoMatch Then
           
           MsgBox "Registro não encontrado", vbInformation, "Atenção"
       
       Else
           
           MsgBox "Já cadastrado para o cliente número " & rst!codCliente & ", chamado " & rst!nomeCliente & vbCrLf & vbCrLf & "O número do RG é " & rst!rg & ", verifique na lista deste exemplo e compare.", vbCritical, "Atenção"

       End If
   
  'Fecho o Recordset
   rst.Close

   'Libera memória
   Set rst = Nothing
   
'Se tudo ocorreu bem, finalizo as ações de tratamento
Sair_tratareiOerro:
Exit Sub

'Se algo deu errado na execução do código, então emite-se uma mensagem personalizada informando o número do erro e sua descrição.
tratareiOerro:
MsgBox "Ocorreu uma falha neste processamento, trata-se do erro: " & Err.Number & ", " & Err.Description, vbCritical, "Atenção"

+++++++++++++++++++++++++++++++++++++++++++++++++++

Abaixo o exemplo para download:
Download

Comentário extra:
Toda vez que falamos em recordset, pensamos logo em ações com o formulário desvinculado e hoje vemos que existem propriedades do recordset que só funcionam com o formulário vinculado, o que acabamos de tratar é um desses casos.

Abraço galera!

Vamos que vamos neste voo do MS Access.


avatar
Dilson
Facilitador
Facilitador

Brasil


http://www.dadosweb.com

Voltar ao Topo Ir em baixo

- Tópicos similares
Compartilhar este artigo em: diggdeliciousredditstumbleuponslashdotyahoogooglelive

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum