2

我需要创建一长串复杂的字符串,包含不同地方不同字段的数据以创建解释性报告。在 Access 2010 中,我设想的唯一方法是将文本部分以及用于组成要显示的字符串的字段名称保存在表格中(参见图中的 line1 表达式)。简要地:

//field A contain a string with a field name:
A = "[Quantity]"
//query expression:
=EVAL(A) 
//return error instead the number contained in field [Quantity], present in the query dataset

我想对字段 (A) 执行 EVAL,以获得字段 (B) 的值,该字段的名称包含在字段 A 中。但似乎不起作用。有什么办法存在吗?

示例(非常简化): 示例查询 EVAL 包含其他字段名称的字段以获取字段的值

任何想法?PS:对不起我的英语,不是我的母语。

4

1 回答 1

2

我在另一个论坛中发现了一个有趣的解决方法。其他人在使用 EVAL 时遇到了同样的问题,但发现可以使用 REPLACE 函数将字符串替换为字段内容。

REPLACE("The value of field Quantity is {Quantity}";"{Quantity}";[Quantity])

( {} 仅用于清楚起见,如果知道要替换的单词不会在字符串中进行比较,则不需要)。在查询中使用此代码,并嵌套尽可能多的 REPLACE 想要使用的不同字段:

REPLACE(REPLACE("<Salutation> <Name>";"<Salutation>";[Salutation]);"<Name>";[Name])

可以将字段名称嵌入到字符串中,并将它们替换为查询中该字段的当前值。当然,后一个示例可以使用连接 (&) 更简单地完成,但如果字符串包含在字段中而不是硬编码中,则可以根据需要将其链接到记录。

REPLACE(REPLACE([DescriptiveString];"[Salutation]";[Salutation]);"[Name]";[Name])

此外,可以创建基于上下文的复杂字符串:

REPLACE(REPLACE(REPLACE("{Salutation} {Name} {MaidenName}";"{Salutation}";[Salutation]);"{Name}";[Name]);"{MaidenName}";IIF(Isnull([MaidenName]);"";[MaidenName]))

困难的部分是枚举一个想要在 REPLACE 调用中插入字符串的所有字段占位符(如 {Quantity}、{Salutation}、{Name}、{MaidenName}),而使用 EVAL 可以避免这个无聊的部分,如果它工作正常。

不像我想的那么整洁,但很有效。

于 2016-04-08T18:25:52.363 回答