Formulários do Access 2010: entrada direta de chave estrangeira na caixa de texto

0

Em um formulário que estou criando para um banco de dados do MS Access 2010, um dos campos representa uma chave estrangeira. Eu gostaria que este campo fosse exibido como uma caixa de texto, em vez de um combo ou list box como é usual para chaves estrangeiras (a principal razão é que as listas se tornariam muito longas e desconfortáveis de usar, e eu preferiria ter os usuários entram diretamente na chave). No entanto, não consigo fazer com que funcione para que eu possa inserir diretamente uma chave estrangeira nessa caixa de texto. Ao invés de pegar a chave estrangeira que eu digitei e seguir a referência para a tupla existente na outra relação, o Access sempre parece tentar criar uma nova tupla em outra relação, o que obviamente falha desde uma tupla. com uma chave idêntica já existe (ou seja, a que tentei referenciar).

Para colocar de forma mais prática, o problema que estou tendo é o seguinte: Eu tenho uma linha com ID 100 na tabela A . Eu quero criar uma nova linha na tabela B , com uma chave estrangeira de 100 usada para se referir a essa linha na tabela A . A relação da tabela está configurada corretamente no Access. Se eu editar a tabela B no modo de planilha, posso inserir diretamente a chave estrangeira de 100 e tudo funciona como eu quero. No entanto, se eu fizer a mesma coisa no formulário, o Access reclama de uma chave duplicada, porque em vez de simplesmente armazenar a chave estrangeira de 100 na tabela B , ela também tenta criar um inteiramente novo linha com o ID agora duplicado de 100 na tabela A . Espero que isso seja mais ou menos compreensível.

Eu tentei declarar o campo de chave estrangeira na tabela B como um campo de pesquisa de combinação, mas a menos que eu também altere o campo no formulário de um texto para uma caixa de combinação, o problema persistir. O Google também me levou a tentar declarar o seguinte como a fonte de dados para a caixa de texto da chave estrangeira no formulário:

=DlookUp("[ID]", "[TableA]", "[ID]=" & Forms![Form2]![txtID1])

mas eu só recebo um erro de sintaxe disso. Além disso, os arquivos de ajuda do Access cobrem apenas a função DlookUp até a versão 2007 - é possível que essa função não esteja mais disponível no Access 2010?

Como posso permitir que os usuários insiram uma chave estrangeira diretamente em um campo de texto em um formulário, sem que o Access tente criar uma nova linha na tabela referenciada? O código da fonte de dados acima resolveria o meu problema se eu conseguisse fazê-lo funcionar?

    
por Daniel Saner 11.11.2011 / 19:50

1 resposta

1

Ok. Eu entendo o que você está tentando fazer agora. Existem duas opções disponíveis dependendo do que você deseja fazer.

Opção 1: acho que essa é a solução mais elegante. Crie uma consulta que junte as duas tabelas juntas. Se permitido, a nova consulta será editável e você poderá extrair as informações que você procura na Tabela A e colocá-las diretamente na caixa de texto. Consulte este site para determinar por que sua nova consulta pode ser somente leitura. link

Opção 2: continue a usar a caixa de combinação no formulário e crie uma imagem que mascare a seta para baixo da caixa de combinação.

    
por 25.07.2012 / 22:06