【问题标题】:Retrieve value from different fields for each record of an Access table从 Access 表的每条记录的不同字段中检索值
【发布时间】:2017-04-09 23:43:59
【问题描述】:

我非常感谢您在这里提供一些帮助,因为我在这方面遇到了一些严重的问题。

背景:

我有一个唯一记录列表。对于每条记录,我都有一个单调递增的模式(A、B 或 C),以及分配给它的发展位置(1 到 5)。

因此,这 3 种模式中的每一种都在代表发展时期的五个领域中列出。

问题:

我需要从每行的不同字段中检索与相关开发期相关的百分比。它应该在一个名为“输出”的列中。

示例:

抱歉,这里不知道如何附表,但字段如下,该表是这些字段的转置。

ID - (1,2,3,4,5)
Pattern - (A, B, C, A, C)
Dev - (1,5,3,4,2)
1 - (20%, 15%, 25%, 20%, 25%)
2 - (40%, 35%, 40%, 40%, 40%)
3 - (60%, 65%, 60%, 60%, 60%)
4 - (80%, 85%, 65%, 80%, 65%)
5 - (100%, 100%, 100%, 100%, 100%)
Output - (20%, 100%, 60%, 80%, 40%)

在 MS Excel 中,我可以简单地使用 HLOOKUP 或 OFFSET 函数来执行此操作。但是如何在 Access 中执行此操作?到目前为止,我想出的最好的是 Output: Eval([Category]) 但这似乎并没有达到我想要的,即选择“Dev”字段,并在构建表达式时将其视为一个字段。

在实践中,我有 100 多个开发周期可以玩,以及 800 多种不同的模式,所以我认为“切换”方法在这里行不通。

提前致谢, alch84

【问题讨论】:

  • 我删除了 MySQL 标签,因为您的问题与 MySQL 无关。
  • 发布样本数据:ozh.github.io/ascii-tables
  • 所以你有两张桌子?这些模式属于单独的表,但我不清楚您的数据库。
  • 最终这可能是一个简单的连接(或子查询)。如果我更好地理解关系和列名,我会发布一个查询。
  • 嗨@shawnt00,感谢您的回复。下面的 Gord Thompson 的表格恰当地反映了我正在尝试做的事情,他在下面建议的查询可以解决问题,但问题是缺少主键(可能是因为我使用的是链接的 Excel 表?) .所以多条件参数对我来说不太适用......

标签: sql string ms-access ms-access-2010 eval


【解决方案1】:

假设

  1. [ID] 是唯一列(主键),并且
  2. [Output] 的源列仅取决于 [Dev] 的值

那么这似乎可行:

UPDATE tblAlvo SET Output = DLOOKUP("[" & Dev & "]", "tblAlvo", "ID=" & ID)

之前:

ID  Pattern  Dev  1   2   3   4   5    Output
--  -------  ---  --  --  --  --  ---  ------
 1  A          1  20  40  60  80  100
 2  B          5  15  35  65  85  100
 3  C          3  25  40  60  65  100
 4  A          4  20  40  60  80  100
 5  C          2  25  40  60  65  100

之后:

ID  Pattern  Dev  1   2   3   4   5    Output
--  -------  ---  --  --  --  --  ---  ------
 1  A          1  20  40  60  80  100      20
 2  B          5  15  35  65  85  100     100
 3  C          3  25  40  60  65  100      60
 4  A          4  20  40  60  80  100      80
 5  C          2  25  40  60  65  100      40

【讨论】:

  • 感谢 Gord - 看起来不错,但如果我没有主键怎么办?我知道不好的做法,但是我的 Access 表是从没有主键的 Excel 工作簿中导入的。
  • 如果 (ID, Pattern, Dev) 唯一标识行,那么您可以将它们添加到 DLOOKUP 的 WHERE 参数(第三个参数,"ID=" & ID & " AND Pattern='" & Pattern & ...)。否则,您可以让从 Excel 的导入为您创建一个自动编号主键列。
  • 感谢@GordThompson。 1. 此公式运行但给出“#Error!”下场。 Dlookup("[" & [Dev] & "]", "tblAlvo", "C Lob=" & [C Lob] " AND P Item = " & [P Item] & " AND Year = " AND [Year])。 2. 从 Excel 导入不允许我创建自动编号主键列(至少因为我使用链接表直接链接到数据源)。
  • (1) 您的 DLookup 示例与您问题中的字段不匹配。 (2) 您的第三个参数缺少 & 运算符,因此在语法上不正确。 (3) "C Lob=" & [C Lob] ... 不起作用,它必须是 "[C Lob]=" & [C Lob] ... (4) 如果任何字段是文本字段,那么它们需要在文本值周围使用 ' 分隔符。 (5) “从 Excel 导入”和“链接到 Excel”的含义不同。请编辑您的问题以显示您的实际操作。
猜你喜欢
  • 2013-04-08
  • 1970-01-01
  • 2015-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多