Pergunta

Criei um formulário do Access 2007 que exibe, por exemplo, Produtos de uma tabela Produto.Um dos campos da tabela Produto é um CategoryID que corresponde à categoria pai deste produto.

No formulário, o CategoryID precisa ser representado como uma caixa de combinação vinculada à tabela Categoria.A ideia aqui é bastante direta:selecionar uma nova categoria deve atualizar o CategoryID na tabela Produto.

O problema que estou enfrentando é que a seleção de uma nova categoria atualiza o CategoryName da tabela Category em vez de atualizar o CategoryID na tabela Product.A razão para isso é que parece que a caixa de combinação deve ser vinculada apenas ao CategoryName da tabela Categoria.

O que acontece é que se o produto atual tiver um CategoryID de 12, que é o CategoryName "Cadeiras" na tabela de categorias, selecionando um novo valor, digamos "Mesas" (CategoryID 13) na caixa de combinação, atualiza o CategoryID de 12 com o novo CategoryName "Tabelas" em vez de atualizar a tabela de produtos CategoryID para 13.

Como posso vincular a tabela Categoria a uma caixa de combinação para que o campo de texto de dados (que eu gostaria que existisse no Access) seja o CategoryName e o campo de valor de dados seja o CategoryID e somente o CategoryID do Produto seja atualizado quando o item da caixa de combinação selecionado for alterado ?

Editar: Veja a resposta aceita abaixo.Também precisei alterar a contagem de colunas para 2 e tudo começou a funcionar perfeitamente.

Foi útil?

Solução

Você precisa usar ambos os valores na consulta da caixa de combinação.
por exemplo.SELECIONE CategoryId, CategoryName FROM CategoryTable...Vincule a caixa de combinação à primeira coluna, CategoryId.Defina as larguras das colunas da caixa de combinação como 0in (não é necessário um segundo valor, portanto não há limite).Isso ocultará a primeira coluna que contém o valor selecionado;tudo isso mostra o valor da descrição, que é tudo o que você deseja ver.Portanto, agora, quando você seleciona uma opção diferente na caixa de combinação, o valor retornado pela caixa de combinação será o valor vinculado, CategoryId, e não CategoryName.

Ah, sim Alison, desculpe, esqueci de definir o combobox columncount = 2.

Outras dicas

Você também deve verificar se sua tabela de categorias possui uma chave primária no campo CategoryName.Sua configuração original deveria ter gerado um erro ou mensagem dizendo que a atualização violaria a chave.Parece que você pode ter 2 categorias com o mesmo nome.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top