Postou 14 março 2007 - 02:03
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 Database
Dim qdf As QueryDef
Dim strSQL As String
Dim strNome As String
If IsNull(txtNome) Or txtNome = "" Then
Exit Sub
Else
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.Close
End If
6) Como complemento, no evento "KeyDown" da "txtNome" insira:
If KeyCode = vbKeyEscape Then
txtNome = Null
lstNomes.RowSource = "tblContatos"
End If
Se 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.