Question

J'ai créé un formulaire Access 2007 qui affiche, par exemple, les produits à partir d'une table de produits. L'un des champs de la table Product est un ID de catégorie qui correspond à la catégorie parente de ce produit.

Dans le formulaire, l'ID catégorie doit être représenté sous la forme d'une liste déroulante liée à la table Catégorie. L’idée ici est assez simple: la sélection d’une nouvelle catégorie devrait mettre à jour l’identificateur de catégorie dans le tableau des produits.

Le problème que je rencontre est que la sélection d'une nouvelle catégorie met à jour le nom de catégorie de la table Catégorie au lieu de mettre à jour l'identificateur de catégorie dans la table Produit. La raison en est qu'il semble que la zone de liste déroulante doit être liée uniquement au nom de catégorie de la table Category.

Que se passe-t-il si le produit actuel a un identifiant de catégorie de 12, qui correspond au nom de catégorie " Chairs " Dans la table des catégories, sélectionnez une nouvelle valeur, par exemple, "Tables". (CategoryID 13) dans la liste déroulante met à jour le CategoryID of 12 avec le nouveau CategoryName " Tables " au lieu de mettre à jour la table de produits CategoryID à 13.

Comment puis-je lier la table Category à une zone de liste déroulante afin que le champ datatext (que je souhaite exister dans Access) soit le nom de la catégorie et que le champ datavalue soit le CategoryID et que seul le CategoryID du produit soit mis à jour lorsque la zone de liste déroulante sélectionnée l'article est changé?

Modifier: Voir la réponse acceptée ci-dessous. J'avais aussi besoin de changer le nombre de colonnes à 2 et tout a commencé à fonctionner parfaitement.

Était-ce utile?

La solution

Vous devez utiliser les deux valeurs dans la requête pour la liste déroulante.
par exemple. SELECT CategoryId, CategoryName FROM CategoryTable ... Liez la zone de liste déroulante à la première colonne, CategoryId. Définissez la largeur des colonnes de la liste déroulante sur 0in (aucune deuxième valeur n'est nécessaire, il n'y a donc pas de limite). Ceci cachera la première colonne contenant la valeur sélectionnée. tout ce qui montre la valeur de description, qui est tout ce que vous voulez voir. Alors maintenant, lorsque vous sélectionnez une option différente dans la liste déroulante, la valeur renvoyée par la liste déroulante sera la valeur liée, CategoryId, pas CategoryName.

Ah, oui Alison, désolée, j'ai oublié de définir la liste déroulante columncount = 2.

Autres conseils

Vous devez également vérifier que votre table de catégories a une clé primaire dans le champ CategoryName. Votre configuration d'origine aurait dû émettre une erreur ou un message indiquant que la mise à jour violerait la clé. En l'état, il semble que vous puissiez avoir 2 catégories du même nom.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top