Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

andrea n. zorzeto

Tá complicado!!! Como desenvolvo sistema de BUSCA???

Recommended Posts

http://forum.imasters.com.br/public/style_emoticons/default/upset.gif Criei um BD com "n" itens, que é o meu cadastro principal. Deste existe um cadastro resumido (BD2), apenas com os itens mais importantes e apenas leitura.

Agora preciso criar um sistema de BUSCA por "nome" e "apelido" utilizando o BD2.

Alguém pode me ajudar, por favor... :unsure:

 

Obrigada!

 

Andrea

Compartilhar este post


Link para o post
Compartilhar em outros sites

Prezada Andrea:Para ser sincero, eu nunca havia efetuado uma conexão Access/Access antes. Parece-me que a maneira mais simples é seguir o roteiro abaixo:1) Estando o seu BD2 aberto, clique no menu "Arquivo/Obter dados externos/Vincular tabelas";2) Indique a localização do BD1 e o nome da tabela que contém o seu "cadastro principal" (para fins didáticos, estarei denominando-a de "tblNomes");3) Ainda em seu BD2, crie um novo formulário contendo apenas uma caixa de texto (que chamarei de "txtNome") e, logo abaixo, uma caixa de listagem (denominada "lstNomes");4) Acesse as "Propriedades" de sua caixa de listagem e indique a tabela "tblNomes" (que como sabemos encontra-se em BD1) como a "origem da linha" do componente em questão; especifique, também, o número de colunas e suas larguras de modo a exibir somente os campos que interessam aos usuários (com relativo destaque para o campo "Nome");5) No evento "Change" da caixa de texto insira o código abaixo:Dim db As DatabaseDim qdf As QueryDefDim strSQL As StringDim strNome As String If IsNull(txtNome) Or txtNome = "" Then Exit SubElse Set db = CurrentDb db.QueryDefs.Refresh For Each qdf In db.QueryDefs If qdf.Name = "qry_TempNomes" Then db.QueryDefs.Delete qdf.Name End If Next qdf strNome = txtNome.Text & "*" strSQL = "SELECT * FROM tblNomes WHERE Nome Like '" & strNome & "' ORDER BY Nome" Set qdf = db.CreateQueryDef("qry_TempNomes", strSQL) lstNomes.RowSource = "qry_TempNomes" lstNomes.Requery lstNomes = 0 qdf.Close db.CloseEnd If6) Como complemento, no evento "KeyDown" da "txtNome" insira: If KeyCode = vbKeyEscape Then txtNome = Null lstNomes.RowSource = "tblContatos" End IfSe tudo der certo, o usuário, ao digitar um único (ou um grupo de caracteres) irá "disparar" o código implementado no evento "Change", exibindo na listagem de "lstNomes" somente os nomes que iniciam-se pelo(s) caractere(s) digitado(s), com efeito similar ao arquivo de "Ajuda" do Windows e do próprio Access (do Office 97).Não esqueça de adaptar o código para sua própria realidade, alterando os nomes dos componentes, campos, objetos, etc. do código acima e substituindo-os por aqueles que você está utilizando em seus BDs, do contrário ocorrerão erros.Quanto a pesquisa por apelidos eu não me esqueci, mas primeiramente tente implementar essa solução; depois, se assim quiser, estabeleça novo contato para que eu revele a segunda parte da solução. Espero ter ajudado.Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigada!,vou tentar, te mantenho informado![]sAndrea

Prezada Andrea:Para ser sincero, eu nunca havia efetuado uma conexão Access/Access antes. Parece-me que a maneira mais simples é seguir o roteiro abaixo:1) Estando o seu BD2 aberto, clique no menu "Arquivo/Obter dados externos/Vincular tabelas";2) Indique a localização do BD1 e o nome da tabela que contém o seu "cadastro principal" (para fins didáticos, estarei denominando-a de "tblNomes");3) Ainda em seu BD2, crie um novo formulário contendo apenas uma caixa de texto (que chamarei de "txtNome") e, logo abaixo, uma caixa de listagem (denominada "lstNomes");4) Acesse as "Propriedades" de sua caixa de listagem e indique a tabela "tblNomes" (que como sabemos encontra-se em BD1) como a "origem da linha" do componente em questão; especifique, também, o número de colunas e suas larguras de modo a exibir somente os campos que interessam aos usuários (com relativo destaque para o campo "Nome");5) No evento "Change" da caixa de texto insira o código abaixo:Dim db As DatabaseDim qdf As QueryDefDim strSQL As StringDim strNome As String If IsNull(txtNome) Or txtNome = "" Then Exit SubElse Set db = CurrentDb db.QueryDefs.Refresh For Each qdf In db.QueryDefs If qdf.Name = "qry_TempNomes" Then db.QueryDefs.Delete qdf.Name End If Next qdf strNome = txtNome.Text & "*" strSQL = "SELECT * FROM tblNomes WHERE Nome Like '" & strNome & "' ORDER BY Nome" Set qdf = db.CreateQueryDef("qry_TempNomes", strSQL) lstNomes.RowSource = "qry_TempNomes" lstNomes.Requery lstNomes = 0 qdf.Close db.CloseEnd If6) Como complemento, no evento "KeyDown" da "txtNome" insira: If KeyCode = vbKeyEscape Then txtNome = Null lstNomes.RowSource = "tblContatos" End IfSe tudo der certo, o usuário, ao digitar um único (ou um grupo de caracteres) irá "disparar" o código implementado no evento "Change", exibindo na listagem de "lstNomes" somente os nomes que iniciam-se pelo(s) caractere(s) digitado(s), com efeito similar ao arquivo de "Ajuda" do Windows e do próprio Access (do Office 97).Não esqueça de adaptar o código para sua própria realidade, alterando os nomes dos componentes, campos, objetos, etc. do código acima e substituindo-os por aqueles que você está utilizando em seus BDs, do contrário ocorrerão erros.Quanto a pesquisa por apelidos eu não me esqueci, mas primeiramente tente implementar essa solução; depois, se assim quiser, estabeleça novo contato para que eu revele a segunda parte da solução. Espero ter ajudado.Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Prezada Andrea:Além do CÓDIGO do erro (3075), qual a MENSAGEM do erro apresentada? É que não tenho a tabela dos códigos de erros e seus significados. Aguardo contato.Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.