2013-08-19 6 views
0

Я новичок в Access, но благодаря этому замечательному форуму я многому научился за последние несколько недель.Выберите ImageField.Picture, основанный на значении в другом поле

Я пытаюсь сделать управление изображением для отображения одного из трех изображений стрелок в зависимости от значения «1,2 или 3» в другом поле. Стрелки представляют тенденции рынка для текущей записи. Стрелки вверх (значение = 1, изображение = "cmdTrendUp"), Sideways (значение = 2, изображение = "cmdTrendNeutral") и Down (значение = 3, image = "cmdTrendDown"). (Изображения помечены как «cmd», потому что одни и те же изображения совместно используются с кнопками в другой форме.)

Я использовал вложенные функции IIF как выражение. Изображение для значения «1» отображается как ожидалось. Однако, когда я просматриваю записи, отображается только стрелка «Зеленый»/«Вверх». Можете ли вы помочь мне определить, что не так?

=IIf([DEMO_UrlMsaCountyCAmq_MuniList]![TrendarrowValue]=1,[cmdTrendUp],IIf([DEMO_UrlMsaCountyCAmq_MuniList]![TrendarrowValue]=2,[cmdTrendNeutral],IIf([DEMO_UrlMsaCountyCAmq_MuniList]![TrendarrowValue]=3,[cmdTrendDown],[Anicon Orb.png]))) 

ответ

0

Используйте Choose функцию

Цитируется из офиса Справка:

Синтаксис Выбрать (индекс, выбор-1 [, выбор-2, ... [, выбор-н] ])

Синтаксис функции выбора состоит из следующих частей: Часть Описание index Требуется. Числовое выражение или поле, которое приводит к значению между 1 и количеством доступных вариантов. выбор Обязательный параметр. Вариант выражение, содержащее один из возможных вариантов. Замечания

Выбрать возвращает значение из списка вариантов, основанное на значении индекса . Если index равен 1, Select возвращает первый выбор в списке; если индекс равен 2, он возвращает второй выбор и так далее. Вы можете использовать Выберите, чтобы найти значение в списке возможностей. Например, если индекс оценивается как 3, а выбор 1 = «один», выбор-2 = «два» и выбор-3 = «три», «Выбрать» возвращает «три». Эта возможность особенно полезна, если индекс представляет значение в группе параметров. Выберите оценку каждого выбора в списке, хотя он возвращает только . По этой причине вам следует следить за нежелательными побочными эффектами. Например, если вы используете функцию MsgBox как часть выражения во всех вариантах, для каждого выбора будет отображаться окно сообщения, так как оценивается, хотя Choose возвращает значение только одного из . Функция Choose возвращает значение Null, если индекс меньше 1 или больше, чем количество выбранных вариантов. Если индекс не является целым числом , он округляется до ближайшего целого числа перед оценкой .

Пример В этом примере используется функция «Выбрать» для отображения имени в ответе на индекс, переданный в процедуру в параметре Ind.

Функция GetChoice (Ind As Integer) GetChoice = Выберите (Ind, "Speedy", "Юнайтед", "Федеральный") End Function

© 2010 Microsoft Corporation. Все права защищены.

+0

Как случайно! Сегодня вечером я читал об этой функции по дороге домой. Спасибо, я попробую это завтра. – D2rd

+0

Я попытался реализовать этот ответ без радости. Выражение CHOOSE, которое я помещаю в свойство ControlSource элемента управления изображением. Это было правильное место? Когда я использую текстовое поле в качестве цели с выбором «1-зеленый», «2-Желтый» и т. Д. Я получаю ошибку # type # в поле: [code] = Выбрать ([TrendarrowValue] «1-зеленый», «2-желтый», «3-Красный») [/ code] оценивается как «# type # error» OR [code] = Выбрать ([TrendarrowValue], 1, 2, 3) [/ code] оценивается как «# type # error» Я также попытался «AfterUpdate» в выражении без радости. Что мне не хватает? Заранее спасибо. – D2rd

+0

Попробуйте: [DEMO_UrlMsaCountyCAmq_MuniList]! [TrendarrowValue] –

0

Создать таблицу с полем autonumber и полем изображения. Храните изображения там с их соответствующими индексами.

Добавьте эту таблицу в базовый запрос, используя индекс (1,2,3) в качестве соединения.

Привязать image control к полю изображения в базовом запросе.

+0

каждая строка TrendArrowValue имеет одно из этих трех значений. Целое число в TrendArrowValue сообщает MyImageControl, какое изображение будет отображаться для текущей записи: 1 = GreenArrow.png (восходящий тренд), 2 = YellowArrow.png (нейтральный тренд) и 3 = RedArrow.png (нисходящий тренд). Изображения сохраняются в галерее изображений, поскольку они используются во многих формах и отчетах. MyImageControl должен прочитать это значение и отобразить связанное изображение. Когда указатель записи перемещается к следующей записи, MyImageControl должен обновить свое изображение по мере необходимости. – D2rd

+0

Основываясь на ответах, которые я получил до сих пор, я пробовал: Использование функции Choose() в качестве выражения за MyImageControl.Picture КОД [indent] = Выбрать (TrendArrowValue, GreenArrow.png, YellowArrow.png, RedArrow.png) '[/ отступ] Использование функции IIF() как выражение позади MyImageControl.Picture КОД IIF ([DEMO_UrlMsaCountyCAmq_MuniList]! [TrendarrowValue] = 1, [cmdTrendUp], IIF ([DEMO_UrlMsaCountyCAmq_MuniList]! [TrendarrowValue] = 2 , [cmdTrendNeutral], IIF ([DEMO_UrlMsaCountyCAmq_MuniList]! [TrendarrowValue] = 3, [cmdTrendDown], [Anicon Orb.png]))) – D2rd

+0

Ссылка на объекты с помощью «Me.SomeObject.Picture» и Me! SomeObject.PictureI отчаянно нуждается руководство по правильному синтаксису и где разместить его в форме и/или контроле. – D2rd