Вопрос

Я создал форму Access 2007, которая отображает, например, Продукты из таблицы Product.Одним из полей в таблице Product является CategoryID, который соответствует родительской категории данного продукта.

В форме идентификатор категории должен быть представлен в виде поля со списком, которое привязано к таблице категорий.Идея здесь довольно проста:выбор новой категории должен обновить CategoryID в таблице Product.

Проблема, с которой я сталкиваюсь, заключается в том, что при выборе новой категории обновляется CategoryName таблицы Category вместо обновления CategoryID в таблице Product.Причина этого в том, что кажется, что поле со списком должно быть привязано только к CategoryName таблицы категорий.

Что происходит, если текущий продукт имеет CategoryID равный 12, который является CategoryName "Стулья" в таблице категорий, затем, выбирая новое значение, скажем, "Таблицы" (CategoryID 13) в поле со списком, обновляет CategoryID из 12 с новым CategoryName "Таблицы" вместо обновления CategoryID таблицы продуктов до 13.

Как я могу привязать таблицу категорий к блоку combox, чтобы datatextfield (которое, я бы хотел, существовало в Access) было CategoryName, а datavaluefield - это CategoryID, и только CategoryID продукта будет обновляться при изменении выбранного элемента поля со списком?

Редактировать: Смотрите принятый ответ ниже.Мне также нужно было изменить количество столбцов на 2, и все начало работать идеально.

Это было полезно?

Решение

Вам нужно использовать оба значения в запросе для поля со списком.
например ,ВЫБЕРИТЕ CategoryID, CategoryName В CategoryTable...Привяжите поле со списком к первому столбцу CategoryID.Установите ширину столбца для поля со списком равной 0in (второе значение не требуется, поэтому ограничений нет).Это скроет первый столбец, содержащий выбранное вами значение;все это показывает значение описания, которое является всем, что вы хотите видеть.Итак, теперь, когда вы выбираете другой параметр в поле со списком, значением, возвращаемым полем со списком, будет привязанное значение CategoryID, а не CategoryName.

Ах, да, Элисон, извини, я забыл установить в выпадающем списке columncount = 2.

Другие советы

Вам также следует проверить, что в вашей таблице категорий есть первичный ключ в поле CategoryName.Ваша первоначальная конфигурация должна была выдавать ошибку или сообщение о том, что обновление нарушит ключ.Как бы то ни было, кажется, что у вас может быть 2 категории с одинаковым названием.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top