【问题标题】:Choose ImageField.Picture based on the Value in Another Field根据另一个字段中的值选择 ImageField.Picture
【发布时间】:2013-08-20 19:41:30
【问题描述】:

我是 Access 新手,但感谢这个很棒的论坛,我在过去几周学到了很多东西。

我正在尝试制作一个图像控件来显示三个箭头图像之一,具体取决于另一个字段中的“1,2 或 3”值。箭头代表当前记录的市场趋势。箭头是向上 (value = 1, image="cmdTrendUp")、Sideways (value = 2, image="cmdTrendNeutral") 和 Down (value = 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])))

【问题讨论】:

    标签: expression ms-access-2010 iif-function


    【解决方案1】:

    使用Choose 函数

    引用自 Office 帮助:

    语法选择(index,choice-1[,choice-2,...[,choice-n]])

    Choose 函数语法包含以下部分: 部分 描述 索引 必需的。数值表达式或字段产生的值介于 1 和可用选项的数量。选择 必填。变体 包含可能选择之一的表达式。备注

    Choose 根据值从选择列表中返回一个值 指数。如果 index 为 1,Choose 返回列表中的第一个选项;如果 index 为 2,它返回第二个选择,依此类推。您可以使用 选择在可能性列表中查找一个值。例如,如果 index 计算结果为 3,choice-1 = "one",choice-2 = "two",并且 choice-3 = "三",选择返回 "三"。这种能力是 如果 index 表示选项组中的值,则特别有用。 选择评估列表中的每个选择,即使它只返回 一。因此,您应该注意不良副作用。 例如,如果您使用 MsgBox 函数作为表达式的一部分 在所有选项中,每个选项都会显示一个消息框 它被评估,即使选择只返回其中之一的值 他们。 如果索引小于 1 或大于列出的选项数,则选择函数返回 Null。如果索引不是一个整体 数字,它在被四舍五入之前被四舍五入到最接近的整数 评估。

    示例 本示例使用选择功能在 响应 Ind 参数中传递给过程的索引。

    函数 GetChoice(Ind As Integer) GetChoice = Choose(Ind, "Speedy", "United", "Federal") 结束函数

    © 2010 微软公司。保留所有权利。

    【讨论】:

    • 多么幸运!我今晚在回家的路上读到了这个功能。谢谢,我明天试试。
    • 我没有高兴地尝试实现这个答案。我放在图像控件的 ControlSource 属性中的 CHOOSE 表达式。这是正确的地方吗?当我使用文本框作为目标时,选项为“1-Green”、“2-Yellow”等。我在框中收到 #type# 错误:[code]=Choose([TrendarrowValue],"1- Green", "2-Yellow", "3-Red")[/code] 评估为 "#type# error" 或 [code]=Choose([TrendarrowValue],1, 2, 3)[/code] 评估为“#type# error” 我也没有高兴地在表达式中尝试了“AfterUpdate”。我错过了什么?提前致谢。
    • 图像位于自定义图标中,我已将其作为共享资源存储在图像库中。我如何在那里引用它们?
    • 我将尝试更清楚地解释这些关系:表 DEMO_UrlMsaCountyCAmq_MuniList 中的行包含描述城市当前和过去房地产市场指标的几个字段。每一行都是不同的城市。名为“PercentChange”的触发器字段是一个计算字段,它根据表示为 +/- 百分比的 PriorPrice 评估 CurrentPrice。索引字段 TrendArrowValue 评估 PercentChange 并将三个值之一(1,2 或 3)存储为整数: If PercentChange >0 TrendArrowValue = 1 If PercentChange = 0 TrendArrowValue = 2 and If PercentChange
    【解决方案2】:

    使用autonumber 字段和图像字段创建一个表。将图像及其各自的索引存储在那里。

    将此表添加到使用索引(1,2,3)作为连接的基础查询中。

    image control 绑定到基础查询中的图像字段。

    【讨论】:

    • 对于每一行 TrendArrowValue 具有这三个值之一。 TrendArrowValue 中的整数告诉 MyImageControl 为当前记录显示哪个图像:1 = GreenArrow.png(上升趋势)、2 = YellowArrow.png(中性趋势)和 3 = RedArrow.png(下降趋势)。图像存储在图像库中,因为它们用于许多表单和报告。 MyImageControl 应该读取该值并显示关联的图像。当记录指针移动到下一条记录时,MyImageControl 应根据需要更新其图像。
    • 根据我迄今为止收到的答案,我尝试过:使用 Choose() 函数作为 MyImageControl.Picture CODE [indent] = Choose(TrendArrowValue,GreenArrow.png,YellowArrow.png 后面的表达式,RedArrow.png)'[/indent] 使用 IIF() 函数作为 MyImageControl.Picture CODE IIF([DEMO_UrlMsaCountyCAmq_MuniList]![TrendarrowValue]=1, [cmdTrendUp], IIF([DEMO_UrlMsaCountyCAmq_MuniList]![TrendarrowValue]= 后面的表达式2, [cmdTrendNeutral], IIF([DEMO_UrlMsaCountyCAmq_MuniList]![TrendarrowValue]=3,[cmdTrendDown],[Anicon Orb.png])))
    • 使用“Me.SomeObject.Picture”和 Me!SomeObject.Picture 引用对象我迫切需要有关正确语法以及在表单和/或控件中放置它的位置的指导。
    猜你喜欢
    • 2021-04-17
    • 1970-01-01
    • 1970-01-01
    • 2016-03-19
    • 2017-03-03
    • 1970-01-01
    • 1970-01-01
    • 2013-10-24
    • 2019-12-27
    相关资源
    最近更新 更多